2012-01-19 17 views
5

मैंने हाल ही में अमेज़ॅन की नई डीबी पेशकश, डायनेमो डीबी के बारे में पढ़ा है, और इसे स्वीकार करना चाहिए कि यह बहुत आकर्षक लगता है। हालांकि, इससे पहले कि मैं भाग गया और ब्लॉक पर नए बच्चे का लाभ उठाने के लिए अपनी मॉडल परत को फिर से प्रोग्रामिंग शुरू करना चाहता हूं, मुझे कुछ और विशिष्टताओं की आवश्यकता है। क्या किसी को एक पर्ल पैकेज के बारे में पता है जो डायनेमो डीबी को सार तत्व बनाता है या वह बहुत जल्द है? मैं इसे 'ओआरएम' पैकेज कहूंगा, लेकिन डायनेमो डीबी दुनिया में कोई संबंध नहीं है। क्या अल्फा, बीटा में कोई है? मैं पर्ल के माध्यम से अमेज़ॅन के डायनेमोड तक कैसे पहुंच सकता हूं?डायनेमो डीबी पर्ल एब्स्ट्रक्शन

धन्यवाद

+0

मैं इसे अनुमान लगा रहा हूँ * * बहुत जल्दी है। – Axeman

उत्तर

0

मैं जावास्क्रिप्ट में DynamoDB के लिए इंटरफ़ेस लिखा था मैं भी पर्ल प्रोग्रामर कृपया पर्ल के लिए प्रदान की है, यह बहुत मिलती-जुलती कोई उदाहरण देखते

See example and download link here

0

यहाँ की कैसे एक उदाहरण है कर रहा हूँ इसे perl

#!/usr/bin/perl 

use strict; 
use warnings; 

use Data::Dumper; 
use Net::Amazon::AWSSign; 
use XML::XPath; 
use XML::XPath::XMLParser; 

use LWP::UserAgent; 

use HTTP::Request::Common; 
use DateTime::Format::HTTP; 
use Digest::SHA qw(sha256 hmac_sha256_base64); 
use URI::Escape; 

my $iam_key_id = 'Your AWS Access Key'; 
my $iam_secret = 'Your Security tocken'; 

my $url = "https://sts.amazonaws.com/?" . 
"Action=GetSessionToken" . 
"&Version=2011-06-15"; 

my $awsSign = new Net::Amazon::AWSSign("$iam_key_id", "$iam_secret"); # New object 
my $awsSignedRESTURI = $awsSign->addRESTSecret($url); # Returns signed REST query URI for lwp-get, curl, etc. 

my $response = `curl -s "$awsSignedRESTURI"`; 
print Dumper($response); 

my $xp = XML::XPath->new(xml => $response); 
$xp->set_namespace('xx','https://sts.amazonaws.com/doc/2011-06-15/'); 
my $sessionToken = $xp->getNodeText('/xx:GetSessionTokenResponse/GetSessionTokenResult/Credentials/SessionToken'); 
my $accessKeyId = $xp->getNodeText('/xx:GetSessionTokenResponse/GetSessionTokenResult/Credentials/AccessKeyId'); 
my $secretAccessKey = $xp->getNodeText('/xx:GetSessionTokenResponse/GetSessionTokenResult/Credentials/SecretAccessKey'); 
print $sessionToken . "\n"; 

# SESSION TOKEN RECEIVED 

put('{"TableName":"Test","Item":{"Id":{"S":"1"},"name":{"S":"somedata"}}}'); 
print "-----------------------------\n"; 
get('{"TableName":"Test","Key":{"HashKeyElement":{"S":"1"}}}'); 

exit; 


sub get 
{ 
    my ($json) = @_; 

    perform('GetItem', $json); 
} 

sub put 
{ 
    my ($json) = @_; 

    perform('PutItem', $json); 
} 

sub perform 
{ 
    my ($target, $json) = @_; 

    my $class = 'DateTime::Format::HTTP'; 
    my $date = $class->format_datetime(DateTime->now); 

    my $tosign = 
    "POST\n" . 
    "/\n" . 
    "\n" . 
    "host:dynamodb.us-east-1.amazonaws.com\n" . 
    "x-amz-date:$date\n" . 
    "x-amz-security-token:" . $sessionToken . "\n" . 
    "x-amz-target:DynamoDB_20111205.$target\n" . 
    "\n" . 
    $json; 

    my $b64 = hmac_sha256_base64(sha256($tosign), $secretAccessKey); 
    while (length($b64) % 4) {$b64 .= '=';} 

    ##Dynamo request 
    my $string = 
    "POST http://dynamodb.us-east-1.amazonaws.com/ HTTP/1.1\n" . 
    "host: dynamodb.us-east-1.amazonaws.com\n" . 
    "x-amz-date: $date\n" . 
    "x-amzn-authorization: AWS3 AWSAccessKeyId=" . $accessKeyId . ",Algorithm=HmacSHA256,SignedHeaders=host;x-amz-date;x-amz-security-token;x-amz-target,Signature=$b64\n" . 
    "x-amz-target: DynamoDB_20111205.$target\n" . 
    "x-amz-security-token: " . $sessionToken . "\n" . 
    "content-type: application/x-amz-json-1.0\n" . 
    "connection: Keep-Alive\n" . 
    "user-agent: perl\n" . 
    "\n" . 
    $json; 

    my $req = HTTP::Request->parse($string); 

    my $ua = LWP::UserAgent->new; 

    print Dumper($ua->request($req)); 
} 
+0

मजेदार, इस उदाहरण का पहला भाग मेरे कोड से है जिसे मैंने एडब्ल्यूएस मंचों पर एक थ्रेड में जोड़ा है। https://forums.aws.amazon.com/message.jspa?messageID=314685#314685। :-) लेकिन फिर भी धन्यवाद। मैं पहले से ही इस पर काम कर रहा हूं और आपके द्वारा अभी पोस्ट किए गए कोड के आधार पर विकास के तहत कुछ पैकेज हैं। – MadHacker

+0

मुझे आपको धन्यवाद देना चाहिए। मुझे आपकी पोस्ट से कोड मिला और बाकी को पता चला और यह खत्म होने के अंत में काम कर रहा था। मैंने जवाब पोस्ट किया, यह सोचकर कि कोई समाधान ढूंढने वाले व्यक्ति के लिए सहायक हो सकता है। – dineshr

+0

दिलचस्प सामान। इन विवरणों को छुपाते हुए एक पैकेज का उपयोग करने के लिए तत्पर हैं! ऐसा लगता है कि अमेज़ॅन कम से कम सुरक्षा को फेंकने के दौरान इस बारे में कुछ सुरक्षा करने की कोशिश कर रहा है। – jjohn

4

का उपयोग करके आप मेरे perl modu का भी उपयोग कर सकते हैं ले नेट :: अमेज़ॅन :: डायनेमो डीबी (@MadHacker: मैंने उपरोक्त आपके हस्ताक्षर कोड को अनुकूलित करने की स्वतंत्रता ली है)।

+0

ऐसा लगता है कि एक डीबीडी मॉड्यूल बनाया जा सकता है – MkV

संबंधित मुद्दे