मैं अपने एपीआई के माध्यम से ईसी 2 सेवाओं तक पहुंचने के लिए आर पैकेज httr
का उपयोग करना चाहता हूं। लेकिन मैं थोड़ा सा अनिश्चित हूं कि कैसे शुरू किया जाए क्योंकि यह "Oauth2.0" के सामान्य प्रमाणीकरण प्रारूप में नहीं आता है जिसमें आपके पास सामान्य है: कुंजी, गुप्त, टोकन और हस्ताक्षर प्रणाली। मुझे लगता है कि ईसी 2 "हस्ताक्षर संस्करण 2" विधि का उपयोग करता है, लेकिन मैं अस्पष्ट हूं कि यह कैसे काम करता है।आर + प्रेजेंटर और ईसी 2 एपीआई प्रमाणीकरण मुद्दे
प्रलेखन कि EC2 http://docs.amazonwebservices.com/AWSEC2/latest/UserGuide/using-query-api.html
पर बनाने क्वेरी अनुरोध के संबंध में मुझे लगता है कि मैं हस्ताक्षर के लिए मूल्य की जरूरत के साथ प्रदान करता है को देखते हुए .... लेकिन यह कैसे
मैं पाने के लिए पता नहीं है नीचे दिखाए गए अनुसार httr
का उपयोग करके दिए गए कुछ आदेशों का उपयोग करने का प्रयास किया। मैं यूआरएल स्ट्रिंग में अधिकांश पैरामीटर को अनुकूलित करने के लिए और उन चीजों को अनुकूलित कर सकता हूं जो मैं करना चाहता हूं जैसे AWSAccessKeyId
, ImageId
, endpoint
और Action
आदि .... लेकिन सिर्फ यह नहीं पता कि हस्ताक्षर मूल्य प्राप्त करने के बारे में कहां जाना है।
इसके अलावा, वे न तो गुप्त एक्सेस कुंजी प्रदान करने के लिए लग रहे हैं ...
तो कोशिश की आज्ञाओं मूल्यों के कुछ बदल दिया मुझे प्रतिनिधित्व करने के लिए, लेकिन निम्नलिखित मिल रही इस प्रकार हैं:
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")
जो मैं प्रतिक्रिया प्राप्त करने के लिए:
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="" /> ...
है किसी को भी EC2 एपीआई और इसके प्रमाणीकरण प्रक्रिया के साथ किसी भी अनुभव था और यह ख होगा ई मेरे द्वारा चुने गए एएमआई के साथ लिनक्स उदाहरणों को स्थापित करने और चलाने में सक्षम होने के लिए आर का उपयोग करने में काफी आसान है (जिसमें आर और अन्य प्रासंगिक संकुल उस पर लोड किए गए हैं), फिर उन उदाहरणों में कुछ आर कमांड चलाने के लिए, और आउटपुट वापस लाएं?
मत सोचो इसके वास्तव में मेरे sessionInfo से संबंधित लेकिन सिर्फ यहाँ मामले में यह है:
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
संपादित करें:
तो दस्तावेज़ का पालन करने में एक और प्रयास में के रूप में @ ने सुझाव दिया हेडली इस मैं क्या करने की कोशिश की और मिल गया ... जहां im गलत हो रहा बहुत सराहना की जाएगी पर किसी भी अधिक सहायक संकेत है ...:
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)
जो मैं प्रतिक्रिया प्राप्त करने के लिए:
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>
हस्ताक्षर पैदा करने के लिए बुनियादी एल्गोरिथ्म http://docs.amazonwebservices.com/AWSEC2/latest/UserGuide/using-query-api.html#query-authentication में खर्च की गई थी - 'httr' है चरण 3 के लिए 'hmac' फ़ंक्शन। – hadley
धन्यवाद ... मैंने देखा कि वास्तव में यह सुनिश्चित नहीं था कि मुझे क्या समझ आया ... क्या कोई संभावना है कि आप एक उदाहरण प्रदान कर सकें? –
या संभावित रूप से देखें कि मैं अपने संपादन के बाद गलत कहां जा रहा हूं? मुझे लगता है कि मैं करीब हूं ... –