Problemas de autenticación R + httr y EC2 api

Me gustaría usar el paquete Rhttr Acceder a los servicios de EC2 a través de su API. Pero estoy un poco inseguro de cómo empezar, ya que no se ajusta al formato de autenticación habitual de "Oauth2.0" en el que tiene el sistema habitual: clave, secreto, token y firma. Creo que EC2 usa el método de "versión de firma 2", pero no estoy seguro de cómo funciona.

Mirando la documentación que proporciona EC2 con respecto a hacer solicitudes de consulta enhttp://docs.amazonwebservices.com/AWSEC2/latest/UserGuide/using-query-api.html

Creo que necesito el valor para la firma ... pero no sé cómo obtenerla

He intentado usar algunos de los comandos dados usandohttr Como se muestra abajo. Puedo adaptar la mayoría de los parámetros en la cadena de URL para representarme y las cosas que quiero hacer, por ejemploAWSAccessKeyId, ImageId, endpoint y elAction etc ... pero no sé dónde obtener el valor de la firma.

También en algunos de los ejemplos dados, tampoco parecen proporcionar la clave de acceso secreta ...

Así que los comandos probados son los siguientes después de haber alterado algunos de los valores para representarme, pero obtuve lo siguiente:

require(httr)
GET("https://ec2.amazonaws.com/
?Action=RunInstances
&ImageId=ami-60a54009
&MaxCount=3
&MinCount=1
&Placement.AvailabilityZone=us-east-1b
&Monitoring.Enabled=true
&AWSAccessKeyId=0GS7553JW74RRM612K02EXAMPLE
&Version=2012-10-01
&Expires=2010-10-10T12:00:00Z
&Signature=lBP67vCvGlDMBQ1dofZxg8E8SUEXAMPLE
&SignatureVersion=2
&SignatureMethod=HmacSHA256")

a lo que me da la respuesta:

Response [http://aws.amazon.com/ec2/]
  Status: 200
  Content-type: text/html; charset=UTF-8


  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>

<head>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <link rel="icon" type="image/ico" href="//d36cz9buwru1tt.cloudfront.net/favicon.ico">
  <link rel="shortcut icon" type="image/ico" href="//d36cz9buwru1tt.cloudfront.net/favicon.ico">
  <meta name="description" content="Amazon Elastic Compute Cloud delivers scalable, pay-as-you-go compute capacity in the cloud. " /><meta name="keywords" content="" /> ...

¿Alguien ha tenido alguna experiencia con el api de EC2 y su procedimiento de autenticación y sería lo suficientemente fácil utilizar R para poder configurar y ejecutar instancias de Linux con las AMI que yo elija (que tienen R y otros paquetes relevantes cargados en él)? ¿para ejecutar algunos comandos R en esos casos y recuperar la salida?

No creo que esté realmente relacionado con mi información de sesión, pero por si acaso aquí está:

sessionInfo()
R version 2.15.1 (2012-06-22)
Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit)

locale:
[1] en_GB.UTF-8/en_GB.UTF-8/en_GB.UTF-8/C/en_GB.UTF-8/en_GB.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] httr_0.2

loaded via a namespace (and not attached):
[1] digest_0.5.2   plyr_1.7.1     RCurl_1.95-1.1 stringr_0.6.1  tools_2.15.1  

EDITAR:

Así que en un nuevo intento de seguir la documentación sugerida por @hadley, esto es lo que intenté y obtuve ... cualquier otra sugerencia útil sobre dónde voy mal sería muy apreciada ...

require(httr)

aws.key <- "xxxxxxx"
aws.secret <- "xxxxxxxxxxxx"

verb <- "GET"
zone <- "ec2.amazonaws.com"
func <- "DescribeImages"

ami.number <- "ami-xxxxxxxxx"

params <- list(paste0("ImageId.1=",ami.number),
    "Version=2012-10-01",
    "Expires=2012-11-20T12%3A00%3A00Z")


# adding in method and key parameters for creation of string to sign
orig.len.params <- length(params)
params.w.method.key <- params
params.w.method.key[[orig.len.params+1]] <- "SignatureVersion=2"
params.w.method.key[[orig.len.params+2]] <- "SignatureMethod=HmacSHA1"
params.w.method.key[[orig.len.params+3]] <- paste0("AWSAccessKeyId=",aws.key)

# String to sign (s2s)
s2s <- paste(c(paste0(verb,"\n",zone,"\n","/\n","AWSAccessKeyId=",aws.key),paste0("Action=",func),paste(sort(unlist(params.w.method.key)),collapse="&")),collapse="&")

# Signature(sig)
sig <- hmac_sha1(aws.secret, s2s)

# adding in signature, method and key parameters for signed request url generation
params.w.sig.method.key <- params
params.w.sig.method.key[[orig.len.params+1]] <- paste0("Signature=",sig)
params.w.sig.method.key[[orig.len.params+2]] <- "SignatureVersion=2"
params.w.sig.method.key[[orig.len.params+3]] <- "SignatureMethod=HmacSHA1"
params.w.sig.method.key[[orig.len.params+4]] <- paste0("AWSAccessKeyId=",aws.key)

# Signed request (sr)
sr <- paste(c(paste0("https://",zone,paste0("?Action=",func)),paste(unlist(params.w.sig.method.key),collapse="&")),collapse="&")

# GET signed request
GET(sr)

A lo que obtengo la respuesta:

 Response [https://ec2.amazonaws.com?Action=DescribeImages&ImageId.1=[ami.number.from.before]&Version=2012-10-01&Expires=2012-11-20T12%3A00%3A00Z&Signature=[sig.value.from.before]&SignatureVersion=2&SignatureMethod=HmacSHA1&AWSAccessKeyId=[aws.key.from.before]/]
  Status: 401
  Content-type: 
 <?xml version="1.0" encoding="UTF-8"?>
 <Response><Errors><Error><Code>AuthFailure</Code><Message>AWS was not able to validate the provided access credentials</Message></Error></Errors><RequestID>5e10fb0b-f304-4677-9c64-98b4537c659a</RequestID></Response> 

Respuestas a la pregunta(1)

Su respuesta a la pregunta