5

Also habe ich eine AWS DynamoDB Tabelle (Datenbank) erstellt und ich bin bereit, diese Daten mit AngularJS zu bekommen. Wie mache ich das mit AngularJS? Muss ich einen anderen Dienst mit Amazon einrichten? Oder kann ich direkt auf meine Datenbank zugreifen?Amazon DynamoDB und AngularJS

Ich konnte nichts direkt zu DynamoDB und AngularJS finden. Jede Hilfe würde sehr geschätzt werden!

+0

Es ist ein JS SDK (http://aws.amazon.com/sdk-for-browser/). Hier finden Sie ein Beispiel: http://www.ng-newsletter.com/posts/aws-js-sdk.html – tavi

+0

Planen Sie direkt mit DynamoDB über eine Web-App zu sprechen? Wenn Sie so vorgehen, werden Sie Ihre AWS-Anmeldeinformationen Benutzern zur Verfügung stellen. – mkobit

+0

Danke Tavi. Ich denke, das AWS JS SDK ist genau das, wonach ich suche. – WebDevJ

Antwort

5

Ja, Sie können direkt von Ihrer AngularJS-Anwendung aus auf Amazon DynamoDB zugreifen, indem Sie das AWS JavaScript SDK für den Browser verwenden. Dasselbe Code-Snippet sollte auch für NodeJS funktionieren.

Eine Sache, die Sie beachten sollten, ist, dass Ihre Anwendung sich sicher bei AWS authentifizieren muss, ohne Sicherheitsberechtigungsnachweise in den Code einzubetten. Amazon Cognito macht es einfach und kümmert sich automatisch um die Authentifizierung, wenn Sie einen Identitätspool erstellt und Ihre Anwendung entsprechend konfiguriert haben. Hier sind einige Links, die Ihnen den Einstieg erleichtern. Wir haben eine Demo-Anwendung mit AngularJS auf Amazon DynamoDB erstellt. Es verwendet Amazon Cognito für die Authentifizierung und das Document SDK zum direkten Speichern und Abrufen von JSON-Objekten zu und von DynamoDB, ohne dass diese im Client-Code im Browser serialisiert und deserialisiert werden müssen.

Quellcode: https://github.com/awslabs/aws-dynamodb-mars-json-demo

Live-Demo: http://dynamodb-msl-image-explorer.s3-website-us-east-1.amazonaws.com/

Beispiele für die AWS-Bibliothek: https://github.com/awslabs/aws-dynamodb-mars-json-demo/blob/master/viewer/app/scripts/services/mars-photos.js

Beispiele für die Nutzung des Dienstes, die die AWS-Bibliothek verwendet: https://github.com/awslabs/aws-dynamodb-mars-json-demo/blob/master/viewer/app/scripts/controllers/favorites.js

https://github.com/awslabs/aws-dynamodb-mars-json-demo/blob/master/viewer/app/scripts/controllers/top-voted.js

Document SDK: https://github.com/awslabs/dynamodb-document-js-sdk

+0

Ihr Beispiel ist großartig, aber die Facebook-Abstimmung funktioniert nicht, wenn ich mich nicht bereits in Facebook eingeloggt habe. Ist es Absicht oder nur ein Fehler? Normalerweise, wenn Sie nicht angemeldet sind, öffnet die Seite das Anmeldefenster, wo Sie Anmeldeinformationen eingeben können, aber nicht in Ihrem Fall - Sie werfen nur eine Ausnahme. – mimic

8

Während die Mars JSON Demo ausgezeichnet ist, hier ist ein wirklich einfaches Beispiel, um zu beginnen, das AWS SDK für JavaScript v2.1.33 verwendet. Schalten Sie die Schlüssel für sich aus. Dies ist nur eine Demo, verschlüsselte geheime Schlüssel nicht, stattdessen AWS Cognito. Sehen Sie sich die Screenshots für einige AWS-Fehler an.

https://github.com/mayosmith/HelloDynamoDB

/* 
----------------------------------------------------------------- 
AWS configure 
Note: this is a simple experiement for demonstration 
purposes only. Replace the keys below with your own. 
Do not include the secret key in an actual production 
environment, because, then, it wont be secret anymore... 
----------------------------------------------------------------- 
*/ 
AWS.config.update({accessKeyId: 'AKIAJUPWRIYYQGDB6AFA', secretAccessKey: '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'}); 
// Configure the region 
AWS.config.region = 'us-west-2'; //us-west-2 is Oregon 
//create the ddb object 
var ddb = new AWS.DynamoDB(); 
/* 
----------------------------------------------------------------- 
Update the Table 
----------------------------------------------------------------- 
*/ 
//update the table with this data 
var params = { 
    Key: { 
    name: {S: 'John Mayo-Smith'}, 
    city: {S: 'New York'} 
    }, 
    AttributeUpdates: { 
    food: { 
     Action: 'PUT', 
     Value: {S: 'chocolate'} 
    } 
    }, 
    TableName: 'sampletable', 
    ReturnValues: 'ALL_NEW' 
}; 
//update the table 
update(); 
/* 
----------------------------------------------------------------- 
Get Item from the Table 
----------------------------------------------------------------- 
*/ 
//attribute to read 
var readparams = { 

    Key: { 
    name: {S: 'John Mayo-Smith'}, 
    city: {S: 'New York'} 
    }, 
    AttributesToGet: ['food'], 
    TableName: 'sampletable' 
}; 
//get the item 
read(); 
/* 
----------------------------------------------------------------- 
function update() 
Description: Calls updateItem which is part of the AWS Javascript 
SDK. 
Returns: JSON object (the object is stringifyed so we can see 
what's going on in the javascript console) 
----------------------------------------------------------------- 
*/ 
function update(){ 
    ddb.updateItem(params, function(err, data) { 
     if (err) { return console.log(err); } 
     console.log("We updated the table with this: " + JSON.stringify(data)); 
    }); 
} 
/* 
----------------------------------------------------------------- 
function read() 
Description: Calls getItem which is part of the AWS Javascript 
SDK. 
Returns: JSON object (the object is stringifyed so we can see 
what's going on in the javascript console) 
----------------------------------------------------------------- 
*/ 
function read(){ 
    ddb.getItem(readparams, function(err, data) { 
     if (err) { return console.log(err); } 
     console.log(": " + data);  

    console.log("John's favorite food is: "+ JSON.stringify(data.Item.food.S)); // print the item data 
}); 
} 
+0

sehr schöne Zusammenfassung, obwohl eine zusätzliche Anmerkung zu sagen, dass, um fast überall nützlich sein, müssten Sie eine Callback-Funktion in die read() und update() -Methoden übergeben, anstatt es in der getItem und updateItem zu deklarieren Anrufe. –

Verwandte Themen