AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

287
AWS SDK für JavaScript Entwicklerhandbuch für SDK v2

Transcript of AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

Page 1: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScriptEntwicklerhandbuch für SDK v2

Page 2: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2

AWS SDK für JavaScript: Entwicklerhandbuch für SDK v2Copyright © 2020 Amazon Web Services, Inc. and/or its affiliates. All rights reserved.

Amazon's trademarks and trade dress may not be used in connection with any product or service that is not Amazon's,in any manner that is likely to cause confusion among customers, or in any manner that disparages or discreditsAmazon. All other trademarks not owned by Amazon are the property of their respective owners, who may or may notbe affiliated with, connected to, or sponsored by Amazon.

Page 3: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2

Table of ContentsWas ist das AWS SDK für JavaScript? .................................................................................................. 1

Verwenden des SDKs mit Node.js ................................................................................................ 1Verwenden des SDKs mit AWS Cloud9 ......................................................................................... 1Verwenden des SDKs mit AWS Amplify ......................................................................................... 2Verwenden des SDKs mit Webbrowsern ........................................................................................ 2

Häufige Anwendungsfälle ..................................................................................................... 2Informationen zu den Beispielen ........................................................................................... 2

Erste Schritte ..................................................................................................................................... 3Erste Schritte in einem Browser-Skript ........................................................................................... 3

Das Szenario ..................................................................................................................... 3Schritt 1: Erstellen eines Amazon Cognito-Identitäten-Pools ....................................................... 4Schritt 2: Hinzufügen einer Richtlinie an die erstellte IAM-Rolle .................................................. 5Schritt 3: Erstellen der HTML-Seite ........................................................................................ 5Schritt 4: Schreiben des Browser-Skripts ................................................................................ 6Schritt 5: Ausführen des Beispiels ......................................................................................... 6Vollständiges Beispiel .......................................................................................................... 7Mögliche Erweiterungen ....................................................................................................... 8

Erste Schritte in Node.js .............................................................................................................. 8Das Szenario ..................................................................................................................... 9Erforderliche Aufgaben ........................................................................................................ 9Schritt 1: Konfigurieren Ihrer Anmeldeinformationen ................................................................. 9Schritt 2: Erstellen des Package-JSON für das Projekt ............................................................ 10Schritt 3: SDK und Abhängigkeiten installieren ...................................................................... 10Schritt 4: Schreiben des Node.js-Codes ............................................................................... 11Schritt 5: Ausführen des Beispiels ....................................................................................... 12

Verwenden von AWS Cloud9 mit dem SDK for JavaScript ...................................................................... 13Schritt 1: Einrichten Ihres AWS-Kontos zur Verwendung von AWS Cloud9 ......................................... 13Schritt 2: Einrichten Ihrer AWS Cloud9-Entwicklungsumgebung ........................................................ 13Schritt 3: Einrichten des SDK for JavaScript .................................................................................. 14

So richten Sie das SDK for JavaScript für Node.js ein ............................................................ 14So richten Sie das SDK for JavaScript im Browser ein ............................................................ 14

Schritt 4: Herunterladen von Beispielcode ..................................................................................... 14Schritt 5: Ausführen und Debuggen des Beispielcodes ................................................................... 15

Einrichten des SDK für JavaScript ....................................................................................................... 16Voraussetzungen ...................................................................................................................... 16

Einrichten einer AWS-Node.js-Umgebung ............................................................................. 16Unterstützte Webbrowser ................................................................................................... 17

Installieren des SDK .................................................................................................................. 17Installieren mit Bower ........................................................................................................ 18

Laden des SDKs ...................................................................................................................... 18Upgraden von Version 1 ............................................................................................................ 19

Automatische Konvertierung von Base64- und Zeitstempeltypen bei Eingabe/Ausgabe ................. 19Wechsel von response.data.RequestId zu response.requestId .................................................. 20Freigelegte Wrapper-Elemente ............................................................................................ 20Gelöschte Client-Eigenschaften ........................................................................................... 23

Konfigurieren des SDK für JavaScript .................................................................................................. 25Verwenden des Global Configuration Object ................................................................................. 25

Einrichten der globalen Konfiguration ................................................................................... 25Festlegen der Konfiguration nach Service ............................................................................. 27Unveränderliche Konfigurationsdaten ................................................................................... 27

Festlegen der AWS-Region ........................................................................................................ 27In einem Client-Klassenkonstruktor ...................................................................................... 28Verwenden des Global Configuration Object ......................................................................... 28Verwenden einer Umgebungsvariablen ................................................................................. 28

iii

Page 4: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2

Verwenden einer freigegebenen Konfigurationsdatei ............................................................... 28Rangfolge zum Festlegen der Region .................................................................................. 28

Festlegen von benutzerdefinierten Endpunkten .............................................................................. 29Endpunkt-Zeichenfolgeformat .............................................................................................. 29Endpunkte für die Region ap-northeast-3 .............................................................................. 29Endpunkte für MediaConvert .............................................................................................. 29

Abrufen Ihrer Anmeldeinformationen ............................................................................................ 30Festlegen von Anmeldeinformationen ........................................................................................... 31

Bewährte Methoden für Anmeldeinformationen ...................................................................... 31Einrichten der Anmeldeinformationen in Node.js .................................................................... 32Festlegen von Anmeldeinformationen in einem Web-Browser ................................................... 35

Schützen der API-Versionen ....................................................................................................... 43Abrufen von API-Versionen ................................................................................................ 43

Überlegungen zu Node.js ........................................................................................................... 43Verwenden integrierter Node.js-Module ................................................................................ 43Verwenden von NPM-Paketen ............................................................................................ 44Konfigurieren von maxSockets in Node.js ............................................................................. 44Wiederverwenden von Verbindungen mit Keep-Alive in Node.js ................................................ 45Konfigurieren von Proxys für Node.js ................................................................................... 46Registrieren von Zertifikat-Bundles in Node.js ........................................................................ 46

Überlegungen zum Browser-Skript ............................................................................................... 47Erstellen des SDK für Browser ............................................................................................ 47Cross-Origin Resource Sharing (CORS) ............................................................................... 50

Bündeln mit Webpack ................................................................................................................ 52Installieren von Webpack ................................................................................................... 53Konfigurieren von Webpack ................................................................................................ 53Ausführen von Webpack .................................................................................................... 54Verwenden des Webpack-Pakets ........................................................................................ 54Importieren von einzelnen Services ..................................................................................... 55Bündeln für Node.js .......................................................................................................... 55

SDK-Metriken ........................................................................................................................... 56Autorisieren von SDK-Metriken zum Erfassen und Senden von Metriken .................................... 56Einrichten von SDK-Metriken für das SDK für JavaScript ......................................................... 57Aktivieren von SDK-Metriken für das AWS SDK für JavaScript ................................................. 57Aktivieren der clientseitigen Überwachung mit Scope .............................................................. 58Aktualisieren eines CloudWatch-Agenten .............................................................................. 59Deaktivieren von SDK-Metriken ........................................................................................... 60Definitionen für SDK-Metriken ............................................................................................. 60

Arbeiten mit Services ........................................................................................................................ 63Erstellen und Aufrufen von Service-Objekten ................................................................................. 64

Laden einzelner Services mit der require-Funktion ................................................................. 64Erstellen von Service-Objekten ........................................................................................... 65Sperren der API-Version eines Service-Objekts ..................................................................... 66Angeben von Service-Objektparametern ............................................................................... 66

Protokollieren von AWS SDK für JavaScript-Aufrufen ..................................................................... 66Verwenden eines Drittanbieter-Loggers ................................................................................ 67

Asynchrones Aufrufen von Services ............................................................................................. 67Verwalten von asynchronen Aufrufen ................................................................................... 68Verwenden einer Callback-Funktion ..................................................................................... 68Verwenden eines Anforderungsobjektereignis-Listeners .......................................................... 69Verwenden von Promises ................................................................................................... 73Verwenden von async/await ............................................................................................... 75Anforderungen mit einem Node.js-Stream-Objekt ................................................................... 75

Verwenden des Response-Objekts .............................................................................................. 76Zugreifen auf im Response-Objekt zurückgegebene Daten ...................................................... 76Durchblättern von zurückgegebenen Daten ........................................................................... 77Zugreifen auf Fehlerinformationen aus einem Antwortobjekt ..................................................... 77

iv

Page 5: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2

Zugreifen auf das ursprüngliche Anforderungsobjekt ............................................................... 78Arbeiten mit JSON .................................................................................................................... 78

JSON als Service-Objektparameter ...................................................................................... 78Zurückgeben von Daten als JSON ...................................................................................... 79

SDK für JavaScript-Codebeispiele ....................................................................................................... 81Amazon CloudWatch Beispiele ................................................................................................... 81

Erstellen von Alarmen in Amazon CloudWatch ...................................................................... 82Verwenden von Alarmaktionen in Amazon CloudWatch ........................................................... 85Abrufen von Metriken von Amazon CloudWatch .................................................................... 88Senden von Ereignissen an Amazon CloudWatch Events ........................................................ 90Verwenden von Abonnementfiltern in Amazon CloudWatch Logs .............................................. 94

Amazon DynamoDB Beispiele .................................................................................................... 97Erstellen und Verwenden von Tabellen in DynamoDB ............................................................. 97Lesen und Schreiben eines einzelnen Elements in DynamoDB ............................................... 101Lesen und Schreiben von Elementen im Stapel in DynamoDB ................................................ 104Abfragen und Scannen einer DynamoDB-Tabelle ................................................................. 106Verwenden des DynamoDB-Dokument-Clients ..................................................................... 109

Amazon EC2 Beispiele ............................................................................................................ 113Erstellen einer Amazon EC2-Instance ................................................................................ 114Verwalten von Amazon EC2-Instances ............................................................................... 115Arbeiten mit Amazon EC2-Schlüsselpaaren ......................................................................... 120Verwenden von Regionen und Availability Zones mit Amazon EC2 .......................................... 122Arbeiten mit Sicherheitsgruppen in Amazon EC2 .................................................................. 124Verwenden von Elastic IP-Adressen in Amazon EC2 ............................................................ 127

MediaConvert Beispiele ............................................................................................................ 130Abrufen des kontospezifischen Endpunkts ........................................................................... 131Erstellen und Verwalten von Aufträgen ............................................................................... 132Verwenden von Auftragsvorlagen ....................................................................................... 137

Amazon S3 Glacier Beispiele .................................................................................................... 144Erstellen eines S3 Glacier-Tresors ..................................................................................... 144Hochladen eines Archivs in S3 Glacier ............................................................................... 145Ausführen eines mehrteiligen Uploads in S3 Glacier ............................................................. 146

Beispiele für AWS IAM ............................................................................................................ 147Verwalten von IAM-Benutzern ........................................................................................... 147Arbeiten mit IAM-Richtlinien .............................................................................................. 151Verwalten von IAM-Zugriffsschlüsseln ................................................................................. 155Arbeiten mit IAM-Serverzertifikaten .................................................................................... 159Verwalten von IAM-Konto-Alias ......................................................................................... 162

Amazon Kinesis Beispiel .......................................................................................................... 164Erfassen des Scroll-Verlaufs auf einer Webseite mit Amazon Kinesis ....................................... 164

AWS Lambda Beispiele ............................................................................................................ 169Amazon S3 Beispiele ............................................................................................................... 169

Amazon S3-Browser-Beispiele ........................................................................................... 170Amazon S3-Node.js-Beispiele ........................................................................................... 189

Amazon SES Beispiele ............................................................................................................ 203Verwalten der Identitäten .................................................................................................. 204Arbeiten mit E-Mail-Vorlagen ............................................................................................. 208Senden von E-Mails mithilfe von Amazon SES .................................................................... 212Verwenden von IP-Adressfiltern ......................................................................................... 216Verwenden von Empfangsregeln ....................................................................................... 219

Amazon SNS Beispiele ............................................................................................................ 223Verwalten von Themen .................................................................................................... 224Veröffentlichen von Nachrichten in einem Thema ................................................................. 228Verwalten von Abonnements ............................................................................................. 229Senden von SMS-Nachrichten ........................................................................................... 233

Amazon SQS Beispiele ............................................................................................................ 238Verwenden von Warteschlangen in Amazon SQS ................................................................ 238

v

Page 6: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2

Senden und Empfangen von Nachrichten in Amazon SQS .................................................... 242Verwalten der Zeitbeschränkung für die Sichtbarkeit in Amazon SQS ...................................... 244Aktivieren von Langabfragen in Amazon SQS ...................................................................... 246Verwenden von Warteschlangen für unzustellbare Nachrichten in Amazon SQS ........................ 249

Tutorials ......................................................................................................................................... 252Tutorial: Einrichten von Node.js auf einer Amazon EC2-Instance .................................................... 252

Voraussetzungen ............................................................................................................. 252Verfahren ....................................................................................................................... 252Erstellen eines Amazon Machine Image (AMI) ..................................................................... 253Verwandte Ressourcen .................................................................................................... 253

Tutorial: Erstellen und Verwenden von Lambda-Funktionen ........................................................... 253Das Szenario .................................................................................................................. 254Voraussetzungen ............................................................................................................. 254Anleitungsschritte ............................................................................................................ 254Erstellen eines Amazon S3-Buckets, der als statische Website konfiguriert ist ........................... 255Vorbereiten des Browser-Skripts ........................................................................................ 257Erstellen einer Lambda-Ausführungsrolle in IAM .................................................................. 258Erstellen und Füllen einer DynamoDB-Tabelle ..................................................................... 260Vorbereiten und Erstellen der Lambda-Funktion ................................................................... 264Ausführen der Lambda-Funktion ........................................................................................ 266

API-Referenz und Änderungsprotokoll ................................................................................................ 269SDK-Änderungsprotokoll auf GitHub ........................................................................................... 269

Sicherheit ....................................................................................................................................... 270Datenschutz ........................................................................................................................... 270Identity and Access Management .............................................................................................. 271Compliance Validation .............................................................................................................. 271Resilience .............................................................................................................................. 272Infrastructure Security .............................................................................................................. 272Erzwingen von TLS 1.2 ............................................................................................................ 273

Überprüfen und Erzwingen von TLS in Node.js .................................................................... 273Überprüfen und Erzwingen von TLS in einem Browserskript ................................................... 274

Weitere Ressourcen ........................................................................................................................ 275JavaScript-SDK-Forum ............................................................................................................. 275JavaScript-SDK und Entwicklerhandbuch auf GitHub .................................................................... 275JavaScript-SDK auf Gitter ......................................................................................................... 275

Dokumentverlauf ............................................................................................................................. 276Dokumentverlauf ..................................................................................................................... 276Frühere Aktualisierungen .......................................................................................................... 277

vi

Page 7: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwenden des SDKs mit Node.js

Was ist das AWS SDK fürJavaScript?

Die AWS SDK für JavaScript (p. 269) enthält eine JavaScript-API für AWS Services. Sie könne eineJavaScript-API verwenden um Bibliotheken oder Anwendungen für Node.js oder den Browser zu erstellen.

Nicht alle Services sind sofort im SDK verfügbar. Informationen zu den Services, die von AWS SDK fürJavaScript aktuell unterstützt werden, finden Sie unter https://github.com/aws/aws-sdk-js/blob/master/SERVICES.md. Weitere Information zum SDK für JavaScript auf GitHub finden Sie unter WeitereRessourcen (p. 275).

Verwenden des SDKs mit Node.jsNode.js ist eine plattformübergreifende Laufzeit für die Ausführung von serverseitigen JavaScript-Anwendungen. Sie können Node.js auf einer Amazon EC2-Instance zur Ausführung auf einem Servereinrichten. Darüber hinaus können Sie mit Node.js On-Demand-AWS Lambda-Funktionen schreiben.

Die Verwendung des SDK für Node.js unterscheidet sich von der Art, wie es für JavaScript in einemWebbrowser verwendet wird. Der Unterschied hängt davon ab, wie das SDK geladen wird und wie dieerforderlichen Anmeldeinformationen für den Zugriff auf bestimmte Web-Services abgerufen werden. Wennsich die Verwendung bestimmter APIs zwischen Node.js und dem Browser unterscheidet, werden dieseUnterschiede benannt.

Verwenden des SDKs mit AWS Cloud9Sie können Node.js-Anwendungen auch mithilfe des SDK für JavaScript in der AWS Cloud9-IDEentwickeln. Ein Beispiel für die Verwendung von AWS Cloud9 für die Node.js-Entwicklung finden Sieim Node.js-Beispiel für AWS Cloud9 im AWS Cloud9-Benutzerhandbuch. Weitere Informationen zurVerwendung von AWS Cloud9 mit SDK für JavaScript finden Sie unter Verwenden von AWS Cloud9 mitdem AWS SDK for JavaScript (p. 13).

1

Page 8: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwenden des SDKs mit AWS Amplify

Verwenden des SDKs mit AWS AmplifyFür browserbasierte Webanwendungen, Apps für Mobilgeräte und Hybrid-Apps können Sie auch dieAWS Amplify-Bibliothek auf GitHub verwenden, die SDK für JavaScript erweitert und eine deklarativeSchnittstelle bietet.

Note

Frameworks wie z. B. AWS Amplify bieten möglicherweise nicht dieselbe Browserunterstützungwie SDK für JavaScript. Weitere Informationen finden Sie in der Dokumentation einesFrameworks.

Verwenden des SDKs mit WebbrowsernAlle wichtigen Webbrowser unterstützen die Ausführung von JavaScript. JavaScript-Code, der in einemWebbrowser ausgeführt wird, wird oftmals als clientseitiges JavaScriptbezeichnet.

Die Verwendung von SDK für JavaScript in einem Web-Browser unterscheidet sich von der Art, wie esfür Node.js verwendet wird. Der Unterschied hängt davon ab, wie das SDK geladen wird und wie dieerforderlichen Anmeldeinformationen für den Zugriff auf bestimmte Web-Services abgerufen werden. Wennsich die Verwendung bestimmter APIs zwischen Node.js und dem Browser unterscheidet, werden dieseUnterschiede benannt.

Eine Liste der von AWS SDK für JavaScriptunterstützten Browser finden Sie unter UnterstützteWebbrowser (p. 17).

Häufige AnwendungsfälleSie können das SDK für JavaScript in Browser-Skripts verwenden, um eine Reihe überzeugenderAnwendungsfälle zu realisieren. Dies sind einige Ideen, die Sie mit dem SDK für JavaScript in einerBrowseranwendung umsetzen können, um auf unterschiedliche Web-Services zuzugreifen.

• Erstellen einer benutzerdefinierten Konsole für AWS-Services, in der Sie auf regionen- undserviceübergreifende Funktionen zugreifen und diese kombinieren, um die Anforderungen IhrerOrganisation oder Ihres Projekts am besten zu erfüllen

• Verwenden von Amazon Cognito-Identität, um authentifizierten Benutzern Zugriff auf Ihre Browser-Anwendungen und Websites zu ermöglichen, einschließlich der Nutzung von Drittanbieter-Authentifizierung über z. B. Facebook.

• Verwenden von Amazon Kinesis, um Clickstreams und andere Marketingdaten in Echtzeit zu verarbeiten.• Verwenden von Amazon DynamoDB für serverlose Datenpersistenz, wie z. B. einzelne

Benutzereinstellungen für Besucher Ihrer Website oder Anwendungsbenutzer.• Verwenden von AWS Lambda zum Einkapseln proprietärer Logik, die Sie über Browser-Skripts aufrufen

können, ohne Ihr geistiges Eigentum herunterzuladen oder gegenüber Benutzern offenzulegen.

Informationen zu den BeispielenSie können die SDK für JavaScript-Beispiele im AWS Codebeispiel-Katalog durchsuchen.

2

Page 9: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Erste Schritte in einem Browser-Skript

Erste Schritte mit dem AWS SDK fürJavaScript

Das AWS SDK für JavaScript bietet Zugriff auf Webservices in Browser-Skripts oder Node.js. DieserAbschnitt verfügt über zwei Übungen zu den ersten Schritten, die Ihnen zeigen, wie Sie mit dem SDK fürJavaScript in jeder dieser JavaScript-Umgebungen arbeiten.

Sie können Node.js-Anwendungen auch mithilfe des SDK für JavaScript in der AWS Cloud9-IDEentwickeln. Ein Beispiel, das zeigt, wie AWS Cloud9 für Node.js-Entwicklung verwendet wird, finden Sieunter Node.js-Beispiel für AWS Cloud9 im AWS Cloud9-Benutzerhandbuch.

Themen• Erste Schritte in einem Browser-Skript (p. 3)• Erste Schritte in Node.js (p. 8)

Erste Schritte in einem Browser-Skript

Dieses Beispiel eines Browser-Skripts zeigt Ihnen:

• Wie auf AWS-Services von einem Browser-Skript mithilfe von Amazon Cognito-Identität zugegriffen wird.• Wie mit Amazon Polly Text in Sprachausgabe umgewandelt wird.• Wie ein Presigner-Objekt verwendet wird, um eine vorsignierte URL zu erstellen.

Das SzenarioAmazon Polly ist ein Cloud-Service, der Text in natürliche Sprache konvertiert. Sie können Amazon Pollyverwenden, um Anwendungen zu entwickeln, die mehr bieten und leichter zugänglich sind. Amazon Pollyunterstützt mehrere Sprachen und umfasst eine Vielzahl naturgetreuer Stimmen. Weitere Informationen zuAmazon Polly finden Sie im Amazon Polly-Entwicklerhandbuch.

Das Beispiel zeigt, wie ein einfaches Browser-Skript eingerichtet und ausgeführt wird, das den von Ihneneingegebenen Text verarbeitet, diesen Text an Amazon Polly sendet und dann die URL der Audioausgabedes Texts zur Wiedergabe zurück gibt. Das Browser-Skript verwendet Amazon Cognito-Identität zurBereitstellung von Anmeldeinformationen, die für den Zugriff auf AWS-Services benötigt werden. Sie sehendie grundlegenden Muster für das Laden und die Verwendung des SDK für JavaScript in Browser-Skripts.

Note

Das Abspielen der Sprachausgabe in diesem Beispiel hängt davon ab, ob Sie einen Browserausführen, der HTML 5-Audio unterstützt.

3

Page 10: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Schritt 1: Erstellen eines Amazon Cognito-Identitäten-Pools

Das Browser-Skript verwendet den SDK für JavaScript zum Synthetisieren von Text, indem diese APIsverwendet werden:

• AWS.CognitoIdentityCredentials Konstruktor• AWS.Polly.Presigner Konstruktor• getSynthesizeSpeechUrl

Schritt 1: Erstellen eines Amazon Cognito-Identitäten-PoolsIn dieser Übung erstellen und verwenden Sie einen Amazon Cognito-Identitäten-Pool, um Ihrem Browser-Skript nicht authentifizierten Zugriff für den Amazon Polly-Service zu gewähren. Durch die Erstellungeines Identitäten-Pools werden außerdem zwei IAM-Rollen erstellt, eine zur Unterstützung von Benutzern,die durch einen Identitätsanbieter authentifiziert wurden, und die andere zur Unterstützung nichtauthentifizierter Gastbenutzer.

In dieser Übung arbeiten wir nur mit der Rolle für nicht authentifizierte Benutzer, um uns auf die Aufgabe zukonzentrieren. Sie können die Unterstützung für einen Identitätsanbieter und authentifizierte Benutzer zueinem späteren Zeitpunkt integrieren.

So erstellen Sie einen Amazon Cognito-Identitäten-Pool

1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die Amazon Cognito-Konsoleunter https://console.aws.amazon.com/cognito/.

2. Wählen Sie auf der Startseite der Konsole Manage Identity Pools (Identitäten-Pools verwalten) aus.3. Wählen Sie auf der nächsten Seite die Option Create new identity pool (Neuen Identitäten-Pool

erstellen) aus.Note

Wenn es keine anderen Identitäten-Pools gibt, überspringt die Amazon Cognito-Konsole dieseSeite und öffnen stattdessen die nächsten Seite.

4. Geben Sie im Getting started wizard (Erste Schritte-Assistenten) einen Namen für Ihren Identitäten-Pool im Feld Identity pool name (Name des Identitäten-Pools) ein.

5. Wählen Sie Enable access to unauthenticated identities (Zugriff für nicht authentifizierte Identitätenaktivieren) aus.

6. Wählen Sie Create Pool.7. Wählen Sie auf der nächsten Seite View Details (Details anzeigen) aus, um die Namen der beiden

IAM-Rollen anzuzeigen, die für Ihren Identitäten-Pool erstellt wurden. Notieren Sie sich den Namen derRolle für nicht authentifizierte Identitäten. Sie benötigen diesen Namen, um die erforderliche Richtliniefür Amazon Polly hinzuzufügen.

8. Wählen Sie Allow.9. Wählen Sie auf der Seite Sample code (Beispiecode) die Plattform von JavaScript aus. Anschließend

kopieren oder notieren Sie die Identitäten-Pool-ID und die Region. Sie benötigen diese Werte zumErsetzen von REGION und IDENTITY_POOL_ID in Ihrem Browser-Skript.

4

Page 11: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Schritt 2: Hinzufügen einer

Richtlinie an die erstellte IAM-Rolle

Nach dem Erstellen des Amazon Cognito-Identitäten-Pools können Sie Berechtigungen für Amazon Pollyhinzufügen, die von Ihrem Browser-Skript benötigt werden.

Schritt 2: Hinzufügen einer Richtlinie an die erstellteIAM-RolleUm den Zugriff vom Browser-Skript auf Amazon Polly für Sprachsynthese zu gewähren, verwendenSie die nicht authentifizierte IAM-Rolle, die für Ihren Amazon Cognito-Identitäten-Pool erstellt wurde.Dazu müssen Sie der Rolle eine IAM-Richtlinie hinzufügen. Weitere Informationen zu IAM-Rollen findenSie unter Erstellen einer Rolle zum Delegieren von Berechtigungen an einen AWS-Service im IAM-Benutzerhandbuch.

So fügen Sie eine Amazon Polly-Richtlinie der IAM-Rolle hinzu, die mit nicht authentifiziertenBenutzern verknüpft ist

1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die IAM-Konsole unter https://console.aws.amazon.com/iam/.

2. Wählen Sie im Navigationsbereich links auf der Seite Roles (Rollen) aus.3. Klicken Sie in der Liste der IAM-Rollen auf den Link für die Rolle der nicht authentifizierten Identitäten,

die zuvor von Amazon Cognito erstellt wurde.4. Wählen Sie auf der Seite Summary (Übersicht) für diese Rolle die Option Attach policies (Richtlinien

anfügen) aus.5. Finden Sie auf der Seite Attach Permissions (Berechtigungen anfügen) für diese Rolle das

Kontrollkästchen für AmazonPollyFullAccess und aktivieren Sie es.

Note

Sie können diesen Prozess verwenden, um den Zugriff auf jeden Amazon- oder AWS-Servicezu ermöglichen.

6. Wählen Sie Attach policy aus.

Nach dem Erstellen des Amazon Cognito-Identitäten-Pools und dem Hinzufügen von Berechtigungenfür Amazon Polly zu Ihrer IAM-Rolle für nicht authentifizierte Benutzer können Sie die Webseite und dasBrowser-Skript erstellen.

Schritt 3: Erstellen der HTML-SeiteDie Beispielanwendung besteht aus einer einzelnen HTML-Seite, die die Benutzeroberfläche und dasBrowser-Skript enthält. Um zu beginnen, erstellen Sie ein HTML-Dokument und kopieren Sie in diesesden folgenden Inhalt. Die Seite enthält ein Eingabefeld und eine Schaltfläche, ein <audio>-Element zumAbspielen der Sprachausgabe und ein <p>-Element zum Anzeigen von Nachrichten. (Beachten Sie, dassdas vollständige Beispiel unten auf dieser Seite angezeigt wird.)

Weitere Informationen zum <audio>-Element finden Sie unter Audio.

<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>AWS SDK for JavaScript - Browser Getting Started Application</title> </head>

<body> <div id="textToSynth">

5

Page 12: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Schritt 4: Schreiben des Browser-Skripts

<input autofocus size="23" type="text" id="textEntry" value="It's very good to meet you."/> <button class="btn default" onClick="speakText()">Synthesize</button> <p id="result">Enter text above then click Synthesize</p> </div> <audio id="audioPlayback" controls> <source id="audioSource" type="audio/mp3" src=""> </audio> <!-- (script elements go here) --> </body></html>

Speichern Sie die HTML-Datei und nennen Sie diese polly.html. Nach dem Erstellen derBenutzeroberfläche für die Anwendung können Sie den Browser-Skriptcode hinzufügen, der dieAnwendung ausführt.

Schritt 4: Schreiben des Browser-SkriptsZuerst müssen Sie beim Erstellen des Browser-Skripts das SDK für JavaScript einschließen, indem Sie ein<script> Element nach dem <audio> Element auf dieser Seite hinzufügen:

<script src="https://sdk.amazonaws.com/js/aws-sdk-SDK_VERSION_NUMBER.min.js"></script>

(Die aktuelle SDK_VERSION_NUMBER finden Sie in der API-Referenz für die SDK für JavaScript beihttps://docs.aws.amazon.com/AWSJavaScriptSDK/latest/index.html.)

Fügen Sie dann ein neues <script type="text/javascript">-Element nach dem SDK-Eintrag hinzu. Sie fügen das Browser-Skript diesem Element hinzu. Legen Sie die AWS-Region und-Anmeldeinformationen für das SDK fest. Als Nächstes erstellen Sie eine Funktion mit dem NamenspeakText(), die von der Schaltfläche als Ereignishandler aufgerufen wird.

Um Sprachinhalte mit Amazon Polly zu generieren, müssen Sie eine Vielzahl von Parametern angeben,wie z. B. das Soundformat der Ausgabe, die Sampling-Rate, die ID der zu verwendenden Stimme und denabzuspielenden Text. Wenn Sie erstmalig die Parameter erstellen, setzen Sie den Text:-Parameter aufeine leere Zeichenfolge; der Text:-Parameter wird auf den Wert gesetzt, den Sie aus dem <input>-Element auf der Webseite abgerufen haben.

<script type="text/javascript">

// Initialize the Amazon Cognito credentials provider AWS.config.region = 'REGION'; AWS.config.credentials = new AWS.CognitoIdentityCredentials({IdentityPoolId: 'IDENTITY_POOL_ID'}); // Function invoked by button click function speakText() { // Create the JSON parameters for getSynthesizeSpeechUrl var speechParams = { OutputFormat: "mp3", SampleRate: "16000", Text: "", TextType: "text", VoiceId: "Matthew" }; speechParams.Text = document.getElementById("textEntry").value;

Amazon Polly gibt Sprachausgabe als Audio-Stream zurück. Die einfachste Methode zum Abspielen diesesAudios in einem Browser ist, Amazon Polly das Audio unter einer vorsignierten URL zur Verfügung stellenzu lassen, die Sie dann als das src-Attribut des <audio>-Elements auf der Webseite festlegen können.

6

Page 13: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Schritt 5: Ausführen des Beispiels

Erstellen Sie ein neues AWS.Polly-Serviceobjekt. Erstellen Sie dann das AWS.Polly.Presigner-Objekt, das Sie zum Erstellen der vorsignierten URL verwenden, von der die Sprachausgabe abgerufenwerden kann. Sie müssen die Sprachparameter, die Sie definiert haben sowie das AWS.Polly-Serviceobjekt, das Sie erstellt haben, an den AWS.Polly.Presigner-Konstruktor übergeben.

Nach dem Erstellen des Presigner-Objekts, rufen Sie die getSynthesizeSpeechUrl-Methode diesesObjekts auf und übergeben Sie die Sprachparameter. Wenn diese Aktion erfolgreich ist, gibt diese Methodedie URL der Sprachausgabe zurück, die Sie dann dem <audio>-Element für die Wiedergabe zuweisen.

// Create the Polly service object and presigner object var polly = new AWS.Polly({apiVersion: '2016-06-10'}); var signer = new AWS.Polly.Presigner(speechParams, polly) // Create presigned URL of synthesized speech file signer.getSynthesizeSpeechUrl(speechParams, function(error, url) { if (error) { document.getElementById('result').innerHTML = error; } else { document.getElementById('audioSource').src = url; document.getElementById('audioPlayback').load(); document.getElementById('result').innerHTML = "Speech ready to play."; } }); } </script>

Schritt 5: Ausführen des BeispielsUm die Beispielanwendung auszuführen, laden Sie polly.html in einen Webbrowser. So sollte dieBrowser-Präsentation ungefähr aussehen.

Geben Sie einen Satz in das Eingabefeld ein, der in Sprache umgewandelt werden soll, und wählen Siedann Synthesize (Generieren) aus. Wenn das Audio zum Abspielen bereit ist, wird eine Meldung angezeigt.Verwenden Sie die Steuerelemente des Audio-Players zum Anhören der Sprachausgabe.

Vollständiges BeispielHier finden Sie die vollständige HTML-Seite mit dem Browser-Skript. Sie ist auch hier auf GitHub verfügbar.

<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>AWS SDK for JavaScript - Browser Getting Started Application</title> </head>

<body> <div id="textToSynth"> <input autofocus size="23" type="text" id="textEntry" value="It's very good to meet you."/> <button class="btn default" onClick="speakText()">Synthesize</button> <p id="result">Enter text above then click Synthesize</p> </div> <audio id="audioPlayback" controls> <source id="audioSource" type="audio/mp3" src="">

7

Page 14: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Mögliche Erweiterungen

</audio> <script src="https://sdk.amazonaws.com/js/aws-sdk-2.410.0.min.js"></script> <script type="text/javascript">

// Initialize the Amazon Cognito credentials provider AWS.config.region = 'REGION'; AWS.config.credentials = new AWS.CognitoIdentityCredentials({IdentityPoolId: 'IDENTITY_POOL_ID'}); // Function invoked by button click function speakText() { // Create the JSON parameters for getSynthesizeSpeechUrl var speechParams = { OutputFormat: "mp3", SampleRate: "16000", Text: "", TextType: "text", VoiceId: "Matthew" }; speechParams.Text = document.getElementById("textEntry").value; // Create the Polly service object and presigner object var polly = new AWS.Polly({apiVersion: '2016-06-10'}); var signer = new AWS.Polly.Presigner(speechParams, polly) // Create presigned URL of synthesized speech file signer.getSynthesizeSpeechUrl(speechParams, function(error, url) { if (error) { document.getElementById('result').innerHTML = error; } else { document.getElementById('audioSource').src = url; document.getElementById('audioPlayback').load(); document.getElementById('result').innerHTML = "Speech ready to play."; } }); } </script> </body></html>

Mögliche ErweiterungenHier sind Varianten dieser Anwendung, die Sie verwenden können, um mithilfe des SDK für JavaScript ineinem Browser-Skript weiter zu arbeiten.

• Experimentieren Sie mit anderen Sound-Ausgabeformaten.• Fügen Sie die Option zum Auswählen einer der verschiedenen von Amazon Polly bereitgestellten

Stimmen hinzu.• Integrieren Sie einen Identitätsanbieter wie Facebook oder Amazon zur Verwendung mit der

authentifizierten IAM-Rolle.

Erste Schritte in Node.js

8

Page 15: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Das Szenario

Dieses Node.js-Codebeispiel zeigt:

• Wie das package.json-Manifest für Ihr Projekt erstellt wird.• Wie die Module, die Ihr Projekt verwendet, installiert und eingeschlossen werden.• Wie ein Amazon Simple Storage Service (Amazon S3)-Serviceobjekt aus der AWS.S3-Client-Klasse

erstellt wird.• Wie ein Amazon S3-Bucket erstellt und ein Objekt in diesem Bucket hochgeladen wird.

Das SzenarioDas Beispiel zeigt, wie ein einfaches Node.js-Modul eingerichtet und ausgeführt wird, das einen AmazonS3-Bucket erstellt und dann diesem ein Textobjekt hinzufügt.

Da Bucket-Namen in Amazon S3 global eindeutig sein müssen, enthält dieses Beispiel ein Drittanbieter-Node.js-Modul, das einen eindeutigen ID-Wert generiert, den Sie in den Bucket-Namen integrieren können.Dieses zusätzliche Modul trägt den Namen uuid.

Erforderliche AufgabenZum Einrichten und Ausführen dieses Beispiels müssen Sie zunächst diese Aufgaben abschließen:

• Erstellen Sie ein Arbeitsverzeichnis zum Entwickeln Ihres Node.js-Moduls. Geben Sie diesemVerzeichnis den Namen awsnodesample. Beachten Sie, dass das Verzeichnis an einem Speicherorterstellt werden muss, der von Anwendungen aktualisiert werden kann. Beispiel: Erstellen Sie beiWindows das Verzeichnis nicht unter "C:\Programme".

• Installieren Sie "Node.js". Weitere Informationen finden Sie auf der Node.js-Website. Sie findenDownloads der aktuellen und LTS-Versionen von Node.js für eine Vielzahl von Betriebssystemen unterhttps://nodejs.org/en/download/current/.

Inhalt• Schritt 1: Konfigurieren Ihrer Anmeldeinformationen (p. 9)• Schritt 2: Erstellen des Package-JSON für das Projekt (p. 10)• Schritt 3: SDK und Abhängigkeiten installieren (p. 10)• Schritt 4: Schreiben des Node.js-Codes (p. 11)• Schritt 5: Ausführen des Beispiels (p. 12)

Schritt 1: Konfigurieren Ihrer AnmeldeinformationenSie müssen Anmeldeinformationen für AWS angeben, sodass das SDK nur auf Ihr Konto und dessenRessourcen zugreift. Weitere Informationen zum Abrufen Ihrer Kontoanmeldeinformationen finden Sie unterAbrufen Ihrer Anmeldeinformationen (p. 30).

Um diese Informationen zu speichern, empfehlen wir Ihnen, eine gemeinsame Anmeldeinformationsdateizu erstellen. Weitere Informationen erhalten Sie unter Laden der Anmeldeinformationen in Node.js aus derfreigegebenen Anmeldeinformationsdatei (p. 33). Ihre Anmeldeinformationsdatei sollte dem folgendenBeispiel ähneln.

[default]aws_access_key_id = YOUR_ACCESS_KEY_IDaws_secret_access_key = YOUR_SECRET_ACCESS_KEY

9

Page 16: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Schritt 2: Erstellen des Package-JSON für das Projekt

Sie können bestimmen, ob Sie Ihre Anmeldeinformationen korrekt festgelegt haben, indem Sie denfolgenden Code mit node ausführen:

var AWS = require("aws-sdk");

AWS.config.getCredentials(function(err) { if (err) console.log(err.stack); // credentials not loaded else { console.log("Access key:", AWS.config.credentials.accessKeyId); console.log("Secret access key:", AWS.config.credentials.secretAccessKey); }});

Wenn Sie Ihre Region in Ihrer config-Datei korrekt festgelegt haben, können Sie diesen Wert anzeigen,indem Sie die Umgebungsvariable AWS_SDK_LOAD_CONFIG auf einen wahrscheinlichen Wert setzen undden folgenden Code verwenden:

var AWS = require("aws-sdk");

console.log("Region: ", AWS.config.region);

Schritt 2: Erstellen des Package-JSON für das ProjektNachdem Sie das awsnodesample-Projektverzeichnis erstellt haben, erstellen und fügen Sie einepackage.json-Datei für die Speicherung der Metadaten für Ihr Node.js-Projekt hinzu. WeitereInformationen zur Verwendung von package.json in einem Node.js-Projekt finden Sie unter Was ist dieDatei „package.json“?.

Erstellen Sie im Projektverzeichnis eine neue Datei namens package.json. Fügen Sie dann diesesJSON der Datei hinzu.

{ "dependencies": {}, "name": "aws-nodejs-sample", "description": "A simple Node.js application illustrating usage of the AWS SDK for Node.js.", "version": "1.0.1", "main": "sample.js", "devDependencies": {}, "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "NAME", "license": "ISC"}

Speichern Sie die Datei. Wenn Sie die benötigten Module installieren, wird der dependencies-Teil derDatei abgeschlossen. Sie können eine JSON-Datei, die ein Beispiel für diese Abhängigkeiten zeigt hier aufGitHub finden.

Schritt 3: SDK und Abhängigkeiten installierenInstallieren Sie das SDK für JavaScript-Paket unter Verwendung des Node.js-Paketmanagers (npm).

Geben Sie im awsnodesample-Verzeichnis im Paket den folgenden Befehl in die Befehlszeile ein.

npm install aws-sdk

10

Page 17: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Schritt 4: Schreiben des Node.js-Codes

Dieser Befehl installiert das SDK für JavaScript in Ihrem Projekt und aktualisiert package.json zumAuflisten des SDKs als Projektabhängigkeit. Sie finden Informationen zu diesem Paket , indem Sie nach"aws-sdk" auf der npm-Website suchen.

Als Nächstes installieren Sie das uuid-Modul in das Projekt, indem Sie den folgenden Befehl zurInstallation des Moduls und Aktualisierung von package.json in die Befehlszeile eingeben. WeitereInformationen zu uuid finden Sie auf der Modulseite unter https://www.npmjs.com/package/uuid.

npm install uuid

Diese Pakete und der zugehörige Code werden im node_modules-Unterverzeichnis Ihres Projektsinstalliert.

Weitere Informationen zum Installieren von Node.js-Paketen finden Sie unter Herunterladen und Installierenvon lokalen Paketen und Erstellen von Node.js-Modulen auf der Node.js-Paketmanager (npm)-Website.Weitere Informationen zum Herunterladen und Installieren des AWS SDK für JavaScript finden Sie unterInstallieren des SDK für JavaScript (p. 17).

Schritt 4: Schreiben des Node.js-CodesErstellen Sie eine neue Datei mit dem Namen sample.js, wohin Sie den Beispielcode speichernmöchten. Beginnen Sie mit dem Hinzufügen der require-Funktionsaufrufe zum Einschließen der SDK fürJavaScript- und uuid-Module, damit diese Ihnen zur Verfügung stehen.

Erstellen Sie einen eindeutigen Bucket-Namen, der verwendet wird, um einen Amazon S3-Bucket zuerstellen, indem ein eindeutiger ID-Wert einem erkennbaren Präfix angehängt wird, in diesem Fall 'node-sdk-sample-'. Sie generieren die eindeutige ID durch Aufrufen des uuid-Moduls. Erstellen Sie danneinen Namen für den Key-Parameter, der zum Hochladen eines Objekts in den Bucket verwendet wird.

Erstellen Sie ein promise-Objekt zum Aufrufen der createBucket-Methode des AWS.S3-Serviceobjekts.Bei einer erfolgreichen Antwort erstellen Sie die erforderlichen Parameter zum Hochladen von Text in denneu erstellten Bucket. Bei Verwendung eines anderen Promise rufen Sie die putObject-Methode auf, umdas Textobjekt in den Bucket hochzuladen.

// Load the SDK and UUIDvar AWS = require('aws-sdk');var uuid = require('uuid');

// Create unique bucket namevar bucketName = 'node-sdk-sample-' + uuid.v4();// Create name for uploaded object keyvar keyName = 'hello_world.txt';

// Create a promise on S3 service objectvar bucketPromise = new AWS.S3({apiVersion: '2006-03-01'}).createBucket({Bucket: bucketName}).promise();

// Handle promise fulfilled/rejected statesbucketPromise.then( function(data) { // Create params for putObject call var objectParams = {Bucket: bucketName, Key: keyName, Body: 'Hello World!'}; // Create object upload promise var uploadPromise = new AWS.S3({apiVersion: '2006-03-01'}).putObject(objectParams).promise(); uploadPromise.then( function(data) { console.log("Successfully uploaded data to " + bucketName + "/" + keyName); });}).catch(

11

Page 18: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Schritt 5: Ausführen des Beispiels

function(err) { console.error(err, err.stack);});

Diesen Beispielcode finden Sie hier auf GitHub.

Schritt 5: Ausführen des BeispielsGeben Sie den folgenden Befehl ein, um das Beispiel auszuführen.

node sample.js

Wenn der Upload erfolgreich ist, sehen Sie eine Bestätigungsmeldung in der Befehlszeile. Sie könnenzudem den Bucket und das hochgeladene Textobjekt in der Amazon S3-Konsole finden.

12

Page 19: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Schritt 1: Einrichten Ihres AWS-Kontos

zur Verwendung von AWS Cloud9

Verwenden von AWS Cloud9 mit demAWS SDK for JavaScript

Sie können AWS Cloud9 mit dem AWS SDK for JavaScript zum Schreiben und Ausführen von JavaScriptim Browser-Code —sowie zum Schreiben, Ausführen und Debuggen von Node.js-Code—mit nur einemBrowser verwenden. AWS Cloud9 umfasst Tools wie z. B. einen Code-Editor und ein Terminal sowie einenDebugger für Node.js-Code. Da die AWS Cloud9 IDE Cloud-basiert ist, können Sie im Büro, zuhause oderunterwegs über das Internet an Ihren Projekten arbeiten. Allgemeine Informationen zu AWS Cloud9 findenSie unter AWS Cloud9-Benutzerhandbuch.

Führen Sie diese Schritte zur Einrichtung von AWS Cloud9 mit dem SDK for JavaScript aus:

Inhalt• Schritt 1: Einrichten Ihres AWS-Kontos zur Verwendung von AWS Cloud9 (p. 13)• Schritt 2: Einrichten Ihrer AWS Cloud9-Entwicklungsumgebung (p. 13)• Schritt 3: Einrichten des SDK for JavaScript (p. 14)

• So richten Sie das SDK for JavaScript für Node.js ein (p. 14)• So richten Sie das SDK for JavaScript im Browser ein (p. 14)

• Schritt 4: Herunterladen von Beispielcode (p. 14)• Schritt 5: Ausführen und Debuggen des Beispielcodes (p. 15)

Schritt 1: Einrichten Ihres AWS-Kontos zurVerwendung von AWS Cloud9

Beginnen Sie, AWS Cloud9 zu verwenden, indem Sie sich in der AWS Cloud9-Konsole als AWS Identityand Access Management (IAM)-Entity (z. B. als IAM-Benutzer), die über Zugriffsberechtigungen für AWSCloud9 verfügt, in Ihrem AWS-Konto anmelden.

Weitere Informationen dazu, wie Sie eine IAM-Entity in Ihrem AWS-Konto für den Zugriff auf AWS Cloud9einrichten und sich in der AWS Cloud9-Konsole anmelden, finden Sie unter Team-Einrichtung für AWSCloud9 im AWS Cloud9-Benutzerhandbuch.

Schritt 2: Einrichten Ihrer AWS Cloud9-Entwicklungsumgebung

Nachdem Sie sich bei der AWS Cloud9-Konsole angemeldet haben, verwenden Sie die Konsole, um eineAWS Cloud9-Entwicklungsumgebung zu erstellen. Nachdem Sie die Umgebung erstellt haben, öffnet AWSCloud9 die IDE für diese Umgebung.

Detaillierte Informationen hierzu finden Sie unter Erstellen einer Umgebung in AWS Cloud9 im AWSCloud9-Benutzerhandbuch.

Note

Wenn Sie Ihre Umgebung in der Konsole zum ersten Mal erstellen, empfehlen wir, dass Sie dieOption zum Erstellen einer neuen Instance für die Umgebung (EC2) verwenden. Diese Option

13

Page 20: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Schritt 3: Einrichten des SDK for JavaScript

weist AWS Cloud9 an, eine Umgebung zu erstellen, eine Amazon EC2-Instance zu starten unddann die neue Instance mit der neuen Umgebung zu verbinden. Dies ist der schnellste Weg, mitder Arbeit mit AWS Cloud9 zu beginnen.

Schritt 3: Einrichten des SDK for JavaScriptNachdem AWS Cloud9 die IDE für Ihre Entwicklungsumgebung öffnet, führen Sie eine oder beide derfolgenden Verfahren aus, um die IDE zum Einrichten des SDK for JavaScript in Ihrer Umgebung zuverwenden.

So richten Sie das SDK for JavaScript für Node.js ein1. Wenn das Terminal in der IDE noch nicht geöffnet ist, öffnen Sie es. Wählen Sie in diesem Fall auf der

Menüleiste in der IDE Window, New Terminal (Fenster, Neues Terminal) aus.2. Führen Sie den folgenden Befehl aus, um npm zur Installation des SDK for JavaScript zu verwenden.

npm install aws-sdk

Wenn die IDE npm nicht finden kann, führen Sie die folgenden Befehle nacheinander in der folgendenReihenfolge aus, um npm zu installieren. (Diese Befehle setzen voraus, dass Sie die Option zumErstellen einer neuen Instance für die Umgebung (EC2) ausgewählt haben, wie weiter oben in diesemThema beschrieben.)

Warning

AWS hat keine Kontrolle über den folgenden Code. Bevor Sie ihn ausführen, überprüfen Sieunbedingt dessen Authentizität und Integrität. Weitere Informationen zu diesem Code findenSie im GitHub-Repository nvm.

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash # Download and install Node Version Manager (nvm).. ~/.bashrc # Activate nvm.nvm install node # Use nvm to install npm (and Node.js at the same time).

So richten Sie das SDK for JavaScript im Browser einSie müssen das SDK for JavaScript zur Nutzung in Browser-Skripts nicht installieren. Sie können dasgehostete SDK for JavaScript-Paket direkt von AWS mit einem Skript in Ihren HTML-Seiten laden.

Sie können verkleinerte und nicht verkleinerte Softwareversionen vom aktuellen SDK for JavaScript vonGitHub unter https://github.com/aws/aws-sdk-js/tree/master/dist herunterladen.

Schritt 4: Herunterladen von BeispielcodeVerwenden Sie das Terminal, das Sie im vorherigen Schritt geöffnet haben, um Beispielcode für das SDKfor JavaScript in die AWS Cloud9-Entwicklungsumgebung herunterzuladen. (Wenn das Terminal nichtbereits in der IDE geöffnet ist, öffnen Sie es, indem Sie Window, New Terminal (Fenster, Neues Terminal)auf der Menüleiste in der IDE auswählen.)

14

Page 21: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Schritt 5: Ausführen und Debuggen des Beispielcodes

Führen Sie den folgenden Befehl aus, um den Beispielcode herunterzuladen. Dieser Befehl lädt eine Kopiealler in der offiziellen AWS SDK-Dokumentation verwendeten Code-Beispiele in das StammverzeichnisIhrer Umgebung herunter.

git clone https://github.com/awsdocs/aws-doc-sdk-examples.git

Um die Codebeispiele für das SDK for JavaScript zu finden, öffnen Sie im Fenster Environment(Umgebung) das Verzeichnis ENVIRONMENT_NAME\aws-doc-sdk-examples\javascript\example_code, wobei ENVIRONMENT_NAME der Name Ihrer AWS Cloud9-Entwicklungsumgebung ist.

Weitere Informationen zum Arbeiten mit diesen und anderen Codebeispielen finden Sie unter SDK forJavaScript-Codebeispiele.

Schritt 5: Ausführen und Debuggen desBeispielcodes

Weitere Informationen zum Ausführen von Code in Ihrer AWS Cloud9-Entwicklungsumgebung finden Sieunter Ausführen Ihres Codes im AWS Cloud9-Benutzerhandbuch.

Weitere Informationen zum Debuggen von Node.js-Code finden Sie unter Debuggen Ihres Codes im AWSCloud9-Benutzerhandbuch.

15

Page 22: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Voraussetzungen

Einrichten des SDK für JavaScriptDie Themen in diesem Abschnitt beschreiben, wie das SDK für JavaScript für die Verwendung inWebbrowsern und mit Node.js installiert wird. Außerdem wird gezeigt, wie das SDK geladen wird, sodassSie auf die vom SDK unterstützten Web-Services zugreifen können.

Note

React Native-Entwickler sollten neue Projekte auf AWS mit AWS Amplify erstellen. WeitereEinzelheiten finden Sie im aws-sdk-react-nativen Archiv.

Themen• Voraussetzungen (p. 16)• Installieren des SDK für JavaScript (p. 17)• Laden des SDK für JavaScript (p. 18)• Upgraden des SDK für JavaScript von Version 1 (p. 19)

VoraussetzungenBevor Sie das AWS SDK für JavaScript verwenden, bestimmen Sie, ob Ihr Code in Node.js oder inWebbrowsern ausgeführt werden muss. Führen Sie anschließend die folgenden Schritte aus:

• Im Fall von Node.js installieren Sie Node.js auf Ihren Servern, wenn nicht bereits geschehen.• Im Fall von Webbrowsern identifizieren Sie die Browserversionen, die Sie unterstützen müssen.

Themen• Einrichten einer AWS-Node.js-Umgebung (p. 16)• Unterstützte Webbrowser (p. 17)

Einrichten einer AWS-Node.js-UmgebungVerwenden Sie eine der folgenden Methoden, um eine AWS-Node.js-Umgebung einzurichten, in der SieIhre Anwendung ausführen können:

• Wählen Sie ein Amazon Machine Image (AMI) mit vorinstalliertem Node.js aus. Verwenden Sie diesesAMI, um eine Amazon EC2-Instance zu erstellen. Wenn Sie Ihre Amazon EC2-Instance erstellen, wählenSie Ihr AMI aus dem AWS Marketplace aus. Suchen Sie im AWS Marketplace nach Node.js und wählenSie eine AMI-Option aus, in der eine Version von Node.js (32-Bit oder 64-Bit) vorinstalliert ist.

• Erstellen Sie eine Amazon EC2-Instance und installieren Sie Node.js darauf. Weitere Informationenzum Installieren von Node.js auf einer Amazon Linux-Instance finden Sie unter Tutorial: Einrichten vonNode.js auf einer Amazon EC2-Instance (p. 252).

• Erstellen Sie eine serverlose Umgebung mit AWS Lambda, um Node.js als Lambda-Funktionauszuführen. Weitere Informationen zur Verwendung von Node.js innerhalb einer Lambda-Funktionfinden Sie im Programmiermodell (Node.js) im AWS Lambda Developer Guide.

16

Page 23: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Unterstützte Webbrowser

• Stellen Sie Ihre Node.js-Anwendung in AWS Elastic Beanstalk bereit. Weitere Informationen über dieVerwendung von Node.js mit Elastic Beanstalk finden Sie unter Bereitstellen einer Node.js-Anwendung inAWS Elastic Beanstalk im Entwicklerhandbuch für AWS Elastic Beanstalk.

• Erstellen Sie einen Node.js-Anwendungsserver mit AWS OpsWorks. Weitere Informationen über dieVerwendung von Node.js mit AWS OpsWorks finden Sie unter Erstellen Ihres ersten Node.js-Stacks imAWS OpsWorks User Guide.

Unterstützte WebbrowserDas SDK für JavaScript unterstützt alle modernen Webbrowser, einschließlich dieser Mindestversionen:

Browser Version

Google Chrome 28.0+

Mozilla Firefox 26.0+

Oper 17.0+

Microsoft Edge 25.10+

Windows Internet Explorer 10+

Apple Safari 5+

Android-Browser 4.3+

Note

Frameworks wie z. B. AWS Amplify bieten möglicherweise nicht dieselbe Browserunterstützungwie SDK für JavaScript. Weitere Informationen finden Sie in der Dokumentation einesFrameworks.

Installieren des SDK für JavaScriptOb und wie Sie das AWS SDK für JavaScript installieren, ist abhängig davon, ob der Code in Node.js-Modulen oder Browser-Skripts ausgeführt wird.

Nicht alle Services sind sofort im SDK verfügbar. Informationen zu den Services, die von AWS SDK fürJavaScript aktuell unterstützt werden, finden Sie unter https://github.com/aws/aws-sdk-js/blob/master/SERVICES.md.

Node

Die bevorzugte Methode zum Installieren des AWS SDK für JavaScript für Node.js ist die Verwendungvon npm, dem Node.js-Paketmanager. Geben Sie dazu Folgendes in der Befehlszeile ein.

npm install aws-sdk

Falls Sie folgende Fehlermeldung sehen:

npm WARN deprecated [email protected]: Use uuid module instead

17

Page 24: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Installieren mit Bower

Geben Sie die folgenden Befehle in der Befehlszeile ein:

npm uninstall --save node-uuidnpm install --save uuid

Browser

Sie müssen das SDK zur Nutzung in Browser-Skripts nicht installieren. Sie können das gehosteteSDK-Paket direkt von Amazon Web Services mit einem Skript in Ihren HTML-Seiten laden. Dasgehostete SDK-Paket unterstützt die Teilmenge der AWS-Services, die Cross-Origin Resource Sharing(CORS) erzwingen. Weitere Informationen finden Sie unter Laden des SDK für JavaScript (p. 18).

Sie können einen benutzerdefinierten Build des SDK erstellen, in dem Sie die spezifischen Web-Services und -Versionen, die Sie verwenden möchten, auswählen. Anschließend laden Sie Ihrbenutzerdefiniertes SDK-Paket für die lokale Entwicklung herunter und hosten es für die Verwendungin Ihrer Anwendung. Weitere Informationen zum Erstellen eines benutzerdefinierten SDKs finden Sieunter Erstellen des SDK für Browser (p. 47).

Sie können unter folgendem Link minimierte und nicht minimierte Versionen des aktuellen AWS SDKfür JavaScript von GitHub herunterladen:

https://github.com/aws/aws-sdk-js/tree/master/dist

Installieren mit BowerBower ist ein Paket-Manager für das Web. Nachdem Sie Bower installiert haben, können Sie damitdas SDK installieren. Geben Sie Folgendes in einem Terminalfenster ein, um das SDK mit Bower zuinstallieren:

bower install aws-sdk-js

Laden des SDK für JavaScriptWie Sie das SDK für JavaScript laden, ist davon abhängig, ob Sie es für die Ausführung in einemWebbrowser oder in Node.js laden.

Nicht alle Services sind sofort im SDK verfügbar. Informationen zu den Services, die von AWS SDK fürJavaScript aktuell unterstützt werden, finden Sie unter https://github.com/aws/aws-sdk-js/blob/master/SERVICES.md.

Node.js

Nachdem Sie das SDK installiert haben, können Sie das AWS-Paket in Ihrer Knotenanwendung mitrequire laden.

var AWS = require('aws-sdk');

React Native

Um das SDK in einem React Native Projekt zu verwenden, installieren Sie zunächst das SDK mit npm:

npm install aws-sdk

18

Page 25: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Upgraden von Version 1

Verwenden Sie den folgenden Code, um in Ihrer Anwendung auf die mit React Native kompatibleVersion des SDKs zu verweisen:

var AWS = require('aws-sdk/dist/aws-sdk-react-native');

Browser

Der schnellste Weg, mit der Nutzung des SDKs zu beginnen, ist es, das gehostete SDK-Paket direktvon Amazon Web Services zu laden. Um dies zu tun, fügen Sie ein <script> -Element in Ihre HTML-Seiten in der folgenden Form ein:

<script src="https://sdk.amazonaws.com/js/aws-sdk-SDK_VERSION_NUMBER.min.js"></script>

Die aktuelle SDK_VERSION_NUMBER finden Sie in der API-Referenz für SDK für JavaScript beihttps://docs.aws.amazon.com/AWSJavaScriptSDK/latest/index.html.

Nachdem das SDK in Ihrer Seite geladen wurde, ist es über die globale Variable AWS (oderwindow.AWS) verfügbar.

Wenn Sie zum Bündeln Ihrer Code- und Modulabhängigkeiten browserify verwenden, laden Sie dasSDK mit require, genauso wie in Node.js.

Upgraden des SDK für JavaScript von Version 1Die folgenden Hinweise helfen Ihnen dabei, das SDK für JavaScript von Version 1 auf Version 2upzugraden.

Automatische Konvertierung von Base64- undZeitstempeltypen bei Eingabe/AusgabeDas SDK verschlüsselt und entschlüsselt nun Base64-kodierte Werte sowie Zeitstempelwerteautomatisch für den Benutzer. Diese Änderung wirkt sich auf alle Operationen aus, in denen Base64-oder Zeitstempelwerte von einer Anforderung gesendet oder in einer Antwort zurückgegeben wurden, dieBase64-kodierte Werte zulässt.

Benutzer-Code, der zuvor Base64 konvertierte, ist nicht mehr erforderlich. Als Base64 verschlüsselte Wertewerden jetzt von Serverantworten als Buffer-Objekte zurückgegeben und können auch als Buffer-Eingabeübergeben werden. Beispiel: Die folgenden SQS.sendMessage-Parameter aus Version 1:

var params = { MessageBody: 'Some Message', MessageAttributes: { attrName: { DataType: 'Binary', BinaryValue: new Buffer('example text').toString('base64') } }};

Können folgendermaßen neu geschrieben werden.

var params = {

19

Page 26: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Wechsel von response.data.RequestId

zu response.requestId

MessageBody: 'Some Message', MessageAttributes: { attrName: { DataType: 'Binary', BinaryValue: 'example text' } }};

Hier sehen Sie, wie die Nachricht gelesen wird.

sqs.receiveMessage(params, function(err, data) { // buf is <Buffer 65 78 61 6d 70 6c 65 20 74 65 78 74> var buf = data.Messages[0].MessageAttributes.attrName.BinaryValue; console.log(buf.toString()); // "example text"});

Wechsel von response.data.RequestId zuresponse.requestIdDas SDK speichert nun Anforderungs-IDs für alle Services in einem konsistenten Ort im response-Objektanstatt innerhalb der response.data-Eigenschaft. Dadurch wird die Konsistenz zwischen Services,die Anforderungs-IDs auf unterschiedliche Weise bereitstellen, verbessert. Auch die Umbenennung derresponse.data.RequestId-Eigenschaft in response.requestId (this.requestId innerhalb einerCallback-Funktion) ist eine wichtige Änderung.

Ändern Sie Ihren Code wie folgt:

svc.operation(params, function (err, data) { console.log('Request ID:', data.RequestId);});

Auf Folgendes:

svc.operation(params, function () { console.log('Request ID:', this.requestId);});

Freigelegte Wrapper-ElementeWenn Sie AWS.ElastiCache, AWS.RDS oder AWS.Redshift verwenden, müssen Sie auf die Antwortüber die Ausgabeeigenschaft der obersten Ebene in der Antwort für einige Operationen zugreifen.

Beispiel: Die RDS.describeEngineDefaultParameters-Methode gab Folgendes zurück.

{ Parameters: [ ... ] }

Sie gibt nun Folgendes zurück.

{ EngineDefaults: { Parameters: [ ... ] } }

Die Liste der betroffenen Operationen für jeden Service werden in der folgenden Tabelle aufgeführt.

20

Page 27: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Freigelegte Wrapper-Elemente

Client-Klasse Operationen

AWS.ElastiCache authorizeCacheSecurityGroupIngress

createCacheCluster

createCacheParameterGroup

createCacheSecurityGroup

createCacheSubnetGroup

createReplicationGroup

deleteCacheCluster

deleteReplicationGroup

describeEngineDefaultParameters

modifyCacheCluster

modifyCacheSubnetGroup

modifyReplicationGroup

purchaseReservedCacheNodesOffering

rebootCacheCluster

revokeCacheSecurityGroupIngress

AWS.RDS addSourceIdentifierToSubscription

authorizeDBSecurityGroupIngress

copyDBSnapshot createDBInstance

createDBInstanceReadReplica

createDBParameterGroup

createDBSecurityGroup

createDBSnapshot

createDBSubnetGroup

createEventSubscription

createOptionGroup

deleteDBInstance

deleteDBSnapshot

deleteEventSubscription

describeEngineDefaultParameters

modifyDBInstance

21

Page 28: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Freigelegte Wrapper-Elemente

Client-Klasse OperationenmodifyDBSubnetGroup

modifyEventSubscription

modifyOptionGroup

promoteReadReplica

purchaseReservedDBInstancesOffering

rebootDBInstance

removeSourceIdentifierFromSubscription

restoreDBInstanceFromDBSnapshot

restoreDBInstanceToPointInTime

revokeDBSecurityGroupIngress

22

Page 29: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Gelöschte Client-Eigenschaften

Client-Klasse Operationen

AWS.Redshift authorizeClusterSecurityGroupIngress

authorizeSnapshotAccess

copyClusterSnapshot

createCluster

createClusterParameterGroup

createClusterSecurityGroup

createClusterSnapshot

createClusterSubnetGroup

createEventSubscription

createHsmClientCertificate

createHsmConfiguration

deleteCluster

deleteClusterSnapshot

describeDefaultClusterParameters

disableSnapshotCopy

enableSnapshotCopy

modifyCluster

modifyClusterSubnetGroup

modifyEventSubscription

modifySnapshotCopyRetentionPeriod

purchaseReservedNodeOffering

rebootCluster

restoreFromClusterSnapshot

revokeClusterSecurityGroupIngress

revokeSnapshotAccess

rotateEncryptionKey

Gelöschte Client-EigenschaftenDie Eigenschaften .Client und .client wurden aus Service-Objekten entfernt. Wenn Sie die .Client-Eigenschaft in einer Service-Klasse oder eine .client-Eigenschaft in einer Service-Objekt-Instanceverwenden, entfernen Sie diese aus Ihrem Code.

23

Page 30: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Gelöschte Client-Eigenschaften

Der mit dem SDK für JavaScript in der Version 1 verwendete folgende Code:

var sts = new AWS.STS.Client();// orvar sts = new AWS.STS();

sts.client.operation(...);

sollte wie folgt geändert werden.

var sts = new AWS.STS();sts.operation(...)

24

Page 31: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwenden des Global Configuration Object

Konfigurieren des SDK für JavaScriptBevor Sie das SDK für JavaScript verwenden, um Web-Services über die API aufzurufen, müssen Sie dasSDK konfigurieren. Sie müssen mindestens die folgenden Einstellungen konfigurieren:

• Die Region, in der Sie Dienste anfordern.• Die Anmeldeinformationen, die Ihren Zugriff auf die SDK-Ressourcen autorisieren.

Zusätzlich zu diesen Einstellungen müssen Sie möglicherweise auch Berechtigungen für Ihre AWS-Ressourcen konfigurieren. So können Sie beispielsweise den Zugriff auf einen Amazon S3-Bucketeinschränken oder eine Amazon DynamoDB-Tabelle nur für den schreibgeschützten Zugriff freigeben.

Die Themen in diesem Abschnitt beschreiben die verschiedenen Möglichkeiten, das SDK für JavaScript fürNode.js und JavaScript, die in einem Webbrowser ausgeführt werden, zu konfigurieren.

Themen• Verwenden des Global Configuration Object (p. 25)• Festlegen der AWS-Region (p. 27)• Festlegen von benutzerdefinierten Endpunkten (p. 29)• Abrufen Ihrer Anmeldeinformationen (p. 30)• Festlegen von Anmeldeinformationen (p. 31)• Schützen der API-Versionen (p. 43)• Überlegungen zu Node.js (p. 43)• Überlegungen zum Browser-Skript (p. 47)• Bündeln von Anwendungen mit Webpack (p. 52)• SDK-Metriken im AWS SDK für JavaScript (p. 56)

Verwenden des Global Configuration ObjectEs gibt zwei Möglichkeiten, das SDK zu konfigurieren:

• Legen Sie die globale Konfiguration mithilfe von AWS.Config fest.• Übergeben Sie zusätzliche Konfigurationsinformationen an ein Serviceobjekt.

Das Festlegen der globalen Konfiguration mithilfe von AWS.Config ist häufig zu Beginn einfacher, aberdie Service-Level-Konfiguration bietet mehr Kontrolle über die einzelnen Services. Die über AWS.Configfestgelegte globale Konfiguration bietet Standardeinstellungen, die auf die anschließend von Ihnenerstellten Serviceobjekte angewandt werden und deren Konfiguration vereinfachen. Sie können jedochdie Konfiguration der einzelnen Serviceobjekte aktualisieren, sollten Ihre Anforderungen von der globalenKonfiguration abweichen.

Einrichten der globalen KonfigurationNachdem Sie das aws-sdk-Paket in Ihren Code geladen haben, können Sie die globale Variable AWSverwenden, um auf die SDK-Klassen zuzugreifen und mit einzelnen Services zu interagieren. Das SDKenthält ein globales Konfigurationsobjekt, AWS.Config, über das Sie die SDK-Konfigurationseinstellungenangeben können, die von Ihrer Anwendung benötigt werden.

25

Page 32: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Einrichten der globalen Konfiguration

Konfigurieren Sie das SDK, indem Sie AWS.Config-Eigenschaften entsprechend IhrenAnwendungsanforderungen festlegen. Die folgende Tabelle bietet eine Übersicht über AWS.Config-Eigenschaften, die bei der Konfiguration des SDK häufig verwendet werden.

Konfigurationsoptionen Beschreibung

credentials Erforderlich. Gibt die Anmeldeinformationen an,die für den Zugriff auf Services und Ressourcenverwendet werden.

region Erforderlich. Gibt die Region an, in der Anfragen fürDienste vorgenommen werden.

maxRetries Optional. Gibt die maximale Anzahl derWiederholungsversuche für eine bestimmteAnforderung an.

logger Optional. Gibt ein Logger-Objekt an, auf das dieDebugging-Informationen geschrieben wurden.

update Optional. Aktualisiert die aktuelle Konfiguration mitneuen Werten.

Weitere Informationen über das Konfigurationsobjekt finden Sie unter Class: AWS.Config in der API-Referenz.

Globale KonfigurationsbeispieleSie müssen die Region und die Anmeldeinformationen in AWS.Config festlegen. Sie können dieseEigenschaften als Teil des AWS.Config-Konstruktors definieren, wie im folgenden Browser-Skriptbeispielgezeigt:

var myCredentials = new AWS.CognitoIdentityCredentials({IdentityPoolId:'IDENTITY_POOL_ID'});var myConfig = new AWS.Config({ credentials: myCredentials, region: 'us-west-2'});

Sie können diese Eigenschaften auch nach dem Erstellen von AWS.Config mithilfe der update-Methodefestlegen, wie im folgenden Beispiel anhand der Aktualisierung der Region gezeigt:

myConfig = new AWS.Config();myConfig.update({region: 'us-east-1'});

Sie können Ihre Standard-Anmeldeinformationen abrufen, indem Sie die statische getCredentials-Methode AWS.config aufrufen:

var AWS = require("aws-sdk");

AWS.config.getCredentials(function(err) { if (err) console.log(err.stack); // credentials not loaded else { console.log("Access key:", AWS.config.credentials.accessKeyId); console.log("Secret access key:", AWS.config.credentials.secretAccessKey); }});

26

Page 33: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Festlegen der Konfiguration nach Service

Wenn Sie Ihre Region in Ihrer config-Datei korrekt festgelegt haben, erhalten Sie diesen Wert, indemSie die Umgebungsvariable AWS_SDK_LOAD_CONFIG auf einen wahrscheinlichen Wert setzen und diestatische region-Eigenschaft AWS.config aufrufen:

var AWS = require("aws-sdk");

console.log("Region: ", AWS.config.region);

Festlegen der Konfiguration nach ServiceAuf jeden im SDK für JavaScript verwendeten Service wird über ein Serviceobjekt zugegriffen, das fürdiesen Service Teil der API ist. Um zum Beispiel auf den Amazon S3-Service zuzugreifen, erstellen Siedas Amazon S3-Serviceobjekt. Sie können für einen bestimmten Service Konfigurationseinstellungen alsTeil des Konstruktors für dieses Serviceobjekt definieren. Wenn Sie die Konfigurationswerte auf einemServiceobjekt festlegen, übernimmt der Konstruktor alle Konfigurationswerte, die von AWS.Configverwendet werden, einschließlich der Anmeldeinformationen.

Wenn Sie beispielsweise auf Amazon EC2-Objekte in mehreren Regionen zugreifen müssen, erstellenSie ein EC2-Serviceobjekt für jede Region und legen Sie anschließend die Regionskonfiguration für jedesServiceobjekt entsprechend fest.

var ec2_regionA = new AWS.EC2({region: 'ap-southeast-2', maxRetries: 15, apiVersion: '2014-10-01'});var ec2_regionB = new AWS.EC2({region: 'us-east-1', maxRetries: 15, apiVersion: '2014-10-01'});

Sie können die Konfigurationswerte für einen bestimmten Service auch definieren, wenn Sie dasSDK mithilfe von AWS.Config konfigurieren. Das globale Konfigurationsobjekt unterstützt vieleservicespezifische Konfigurationsoptionen. Weitere Informationen zur servicespezifischen Konfigurationfinden Sie unter Klasse: AWS.Config in der AWS SDK für JavaScript API-Referenz.

Unveränderliche KonfigurationsdatenGlobale Konfigurationsänderungen gelten für Anfragen für alle neu erstellten Serviceobjekte. Neu erstellteServiceobjekte werden zunächst mit den aktuellen globalen Konfigurationsdaten und anschließend mitden lokalen Konfigurationsoptionen konfiguriert. Am globalen AWS.config-Objekt vorgenommeneAktualisierungen gelten nicht für zuvor erstellte Serviceobjekte.

Vorhandene Serviceobjekte müssen manuell mit neuen Konfigurationsdaten aktualisiert werden oder Siemüssen ein neues Serviceobjekt erstellen und verwenden, welches über die neuen Konfigurationsdatenverfügt. Im folgenden Beispiel wird ein neues Amazon S3-Serviceobjekt mit neuen Konfigurationsdatenerstellt:

s3 = new AWS.S3(s3.config);

Festlegen der AWS-RegionEine Region ist ein benannter Satz von AWS-Ressourcen im gleichen geografischen Gebiet. Ein Beispielfür eine Region ist us-east-1, wobei es sich hierbei um die Region USA Ost (Nord-Virginia) handelt. Beider Konfiguration des SDK für JavaScript geben Sie eine Region an, damit das SDK auf die Ressourcen indieser Region zugreift. Einige Services werden nur in bestimmten Regionen angeboten.

Das SDK für JavaScript wählt eine Region nicht standardmäßig aus. Sie können jedoch die Region mithilfeeiner Umgebungsvariablen, einer freigegebenen config-Datei oder dem globalen Konfigurationsobjektdefinieren.

27

Page 34: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2In einem Client-Klassenkonstruktor

In einem Client-KlassenkonstruktorWenn Sie ein Dienstobjekt instanziieren, können Sie die Region für die Ressource als Teil des Client-Klassenkonstruktors angeben, wie hier dargestellt.

var s3 = new AWS.S3({apiVersion: '2006-03-01', region: 'us-west-2'});

Verwenden des Global Configuration ObjectUm die Region in Ihrem JavaScript-Code festzulegen, müssen Sie das globale AWS.Config-Konfigurationsobjekt, wie hier dargestellt, aktualisieren.

AWS.config.update({region: 'us-east-1'});

Weitere Informationen zu den aktuellen Regionen und den in jeder Region verfügbaren Services finden Sieunter AWS-Regionen und Endpunkte in der AWS General Reference.

Verwenden einer UmgebungsvariablenSie können die Region mithilfe der Umgebungsvariablen AWS_REGION festlegen. Wenn Sie diese Variabledefinieren, wird sie vom SDK für JavaScript gelesen und verwendet.

Verwenden einer freigegebenen KonfigurationsdateiÄhnlich wie Sie in der freigegebenen Anmeldeinformationsdatei Anmeldeinformationen für dieVerwendung durch das SDK speichern können, haben Sie die Möglichkeit, die Region und andereKonfigurationseinstellungen in einer freigegebenen Datei mit dem Namen config zu speichern, die vonden SDKs verwendet wird. Wenn die Umgebungsvariable AWS_SDK_LOAD_CONFIG auf einen wahren Wertfestgelegt wurde, sucht das SDK für JavaScript beim Laden automatisch nach einer config-Datei. Wo Siedie config-Datei speichern, hängt von Ihrem Betriebssystem ab:

• Benutzer von Linux, macOS oder Unix: ~/.aws/config• Benutzer von Windows: C:\Users\USER_NAME\.aws\config

Wenn Sie noch keine freigegebene config-Datei haben, können Sie diese in dem angegebenenVerzeichnis erstellen. Im folgenden Beispiel werden sowohl die Region als auch das Ausgabeformat überdie config-Datei definiert.

[default] region=us-west-2 output=json

Weitere Informationen zur Verwendung von freigegebenen Konfigurations- undAnmeldeinformationsdateien finden Sie unter Laden der Anmeldeinformationen in Node.js aus derfreigegebenen Anmeldeinformationsdatei (p. 33) oder Konfigurations- und Anmeldeinformationsdateienim Benutzerhandbuch für AWS Command Line Interface.

Rangfolge zum Festlegen der RegionDie Rangfolge zum Festlegen der Region ist wie folgt:

• Wenn eine Region an einen Client-Klassenkonstruktor übergeben wird, wird diese Region verwendet. Istdies nicht der Fall, dann...

28

Page 35: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Festlegen von benutzerdefinierten Endpunkten

• Wenn eine Region für das globale Konfigurationsobjekt festgelegt ist, wird diese Region verwendet. Istdies nicht der Fall, dann...

• Wenn die Umgebungsvariable AWS_REGION ein wahrer Wert ist, wird diese Region verwendet. Ist diesnicht der Fall, dann...

• Wenn die Umgebungsvariable AMAZON_REGION ein wahrer Wert ist, wird diese Region verwendet. Istdies nicht der Fall, dann...

• Wenn die Umgebungsvariable AWS_SDK_LOAD_CONFIG als wahrer Wert definiert wirdund die freigegebene Anmeldeinformationsdatei (~/.aws/credentials oder der durchAWS_SHARED_CREDENTIALS_FILE angegebene Pfad) eine Region für das konfigurierte Profil enthält,wird diese Region verwendet. Ist dies nicht der Fall, dann...

• Wenn die Umgebungsvariable AWS_SDK_LOAD_CONFIG als wahrer Wert definiert wird und die Config-Datei (~/.aws/config oder der durch AWS_CONFIG_FILE angegebene Pfad) eine Region für daskonfigurierte Profil enthält, wird diese Region verwendet.

Festlegen von benutzerdefinierten EndpunktenAufrufe von API-Methoden im SDK für JavaScript werden in Service-Endpunkt URIs vorgenommen.Standardmäßig werden diese Endpunkte in der Region erstellt, die Sie für Ihren Code konfiguriert haben.Es gibt jedoch Fälle, in denen Sie einen benutzerdefinierten Endpunkt für Ihre API-Aufrufe angebenmüssen.

Endpunkt-ZeichenfolgeformatEndpunktwerte sollten eine Zeichenfolge im folgenden Format sein:

https://{service}.{region}.amazonaws.com

Endpunkte für die Region ap-northeast-3Die Region ap-northeast-3 in Japan wird nicht in Aufzählungs-APIs für Regionen zurückgegeben,z. B. EC2.describeRegions. Um Endpunkte für diese Region zu definieren, befolgen Sie das zuvorbeschriebene Format. Demnach wäre der Amazon EC2-Endpunkt für diese Region

ec2.ap-northeast-3.amazonaws.com

Endpunkte für MediaConvertSie müssen einen benutzerdefinierten Endpunkt zur Verwendung mit MediaConvert verwenden. JedesKundenkonto ist einem eigenen Endpunkt zugewiesen, den Sie verwenden müssen. Hier sehen Sie einBeispiel für die Verwendung eines benutzerdefinierten Endpunkts mit MediaConvert.

// Create MediaConvert service object using custom endpointvar mcClient = new AWS.MediaConvert({endpoint: 'https://abcd1234.mediaconvert.us-west-1.amazonaws.com'});

var getJobParams = {Id: 'job_ID'};

mcClient.getJob(getJobParams, function(err, data)) { if (err) console.log(err, err.stack); // an error occurred else console.log(data); // successful response};

Um den API-Endpunkt für Ihr Konto aufzurufen, lesen Sie den AbschnittMediaConvert.describeEndpoints in der API-Referenz.

29

Page 36: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Abrufen Ihrer Anmeldeinformationen

Stellen Sie sicher, dass die Region in Ihrem Code mit der Region in der benutzerdefinierten Endpunkt-URI übereinstimmt. Eine fehlende Übereinstimmung zwischen der Regionseinstellung und derbenutzerdefinierten Endpunkt-URI könnte dazu führen, dass API-Aufrufe nicht ausgeführt werden können.

Weitere Informationen über MediaConvert finden Sie im Abschnitt zur AWS.MediaConvert-Klasse in derAPI-Referenz oder im AWS Elemental MediaConvert-Benutzerhandbuch.

Abrufen Ihrer AnmeldeinformationenBeim Erstellen Ihres AWS-Kontos werden Ihnen Anmeldeinformationen bereitgestellt. Sie umfassen zweiZugriffsschlüssel:

• Zugriffsschlüssel-ID• Geheimer Zugriffsschlüssel

Weitere Informationen über Zugriffsschlüssel finden Sie unter Verstehen und Abrufen vonSicherheitsanmeldeinformationen in der AWS General Reference.

Zugriffsschlüssel bestehen aus einer Zugriffsschlüssel-ID und einem geheimen Zugriffsschlüssel. Diesewerden zum Signieren der von Ihnen ausgeführten programmgesteuerten Anforderungen an AWSverwendet. Wenn Sie noch keine Zugriffsschlüssel besitzen, können Sie diese über die AWS ManagementConsole erstellen. Verwenden Sie als bewährte Methode nicht die Stammbenutzer des AWS-Kontos-Zugriffsschlüssel für Aufgaben, für die dies nicht erforderlich ist. Erstellen Sie stattdessen einen neuen IAM-Benutzer mit Administratorrechten und mit Zugriffschlüsseln für Sie selbst.

Beim Erstellen der geheimen Zugriffschlüssel besteht die einzige Möglichkeit, diese anzuzeigen oderherunterzuladen. Später lassen sie sich nicht wieder wiederherstellen. Sie können jedoch jederzeit neueZugriffsschlüssel erstellen. Sie müssen auch über Berechtigungen verfügen, um die benötigten IAM-Aktionen durchzuführen. Weitere Informationen finden Sie unter Erforderliche Berechtigungen für denZugriff auf IAM-Ressourcen im IAM-Benutzerhandbuch.

So erstellen Sie Zugriffsschlüssel für einen IAM-Benutzer

1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die IAM-Konsole unter https://console.aws.amazon.com/iam/.

2. Klicken Sie im Navigationsbereich auf Users.3. Wählen Sie erst den Namen des Benutzers, dessen Zugriffsschlüssel Sie erstellen möchten, und dann

die Registerkarte Security credentials (Sicherheitsanmeldeinformationen) aus.4. Wählen Sie im Bereich Access keys (Zugriffsschlüssel) die Option Create access key

(Zugriffsschlüssel erstellen).5. Um das neue Zugriffsschlüsselpaar anzuzeigen, wählen Sie Show (Anzeigen). Sie haben keinen

Zugriff auf den geheimen Zugriffsschlüssel mehr, nachdem das Dialogfeld geschlossen wird. IhreAnmeldeinformationen sehen etwa folgendermaßen aus:

• Zugriffsschlüssel-ID: AKIAIOSFODNN7EXAMPLE• Geheimer Zugriffsschlüssel: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

6. Wählen Sie zum Herunterladen des Schlüsselpaares Download .csv file aus. Speichern Sie dieSchlüssel an einem sicheren Ort. Sie haben keinen Zugriff auf den geheimen Zugriffsschlüssel mehr,nachdem das Dialogfeld geschlossen wird.

Behandeln Sie die Schlüssel vertraulich, um Ihr AWS-Konto zu schützen, und senden Sie dieSchlüssel niemals per E-Mail. Geben Sie die Schlüssel nicht außerhalb Ihrer Organisation weiter, auchnicht im Falle von Anfragen, die von AWS oder Amazon.com zu kommen scheinen. Niemand, derAmazon legitim vertritt, wird Sie nach dem geheimen Schlüssel fragen.

30

Page 37: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Festlegen von Anmeldeinformationen

7. Nachdem Sie die .csv-Datei heruntergeladen haben, klicken Sie auf Close (Schließen). Wenn Sieeinen Zugriffsschlüssel erstellen, ist das Schlüsselpaar standardmäßig aktiv, und Sie können es sofortverwenden.

Verwandte Themen

• Was ist IAM? im IAM-Benutzerhandbuch• AWS-Sicherheitsanmeldeinformationen in der AWS General Reference

Festlegen von AnmeldeinformationenAWS verwendet Anmeldeinformationen, um festzustellen, von wem die Dienste aufgerufen werden, und obder Zugriff auf die angeforderten Ressourcen zulässig ist. In AWS bestehen die Anmeldeinformationen inder Regel aus einer Zugriffsschlüssel-ID und dem geheimen Zugriffsschlüssel, welche zusammen mit IhremKonto erstellt wurden.

Unabhängig davon, ob der JavaScript-Code in einem Webbrowser oder einem Node.js-Server ausgeführtwird, bevor Sie über die API auf die Services zugreifen können, müssen Sie zunächst die gültigenAnmeldeinformationen abrufen. Anmeldeinformationen können für das Konfigurationsobjekt entwedermithilfe von AWS.Config global oder pro Service festgelegt werden, indem Sie die Anmeldeinformationendirekt an ein Serviceobjekt übergeben.

Es gibt mehrere Möglichkeiten, Anmeldeinformationen festzulegen. Diese unterscheiden sich zwischenNode.js und JavaScript in Web-Browsern. Die Themen in diesem Abschnitt beschreiben, wie Sie dieAnmeldeinformationen in Node.js oder Web-Browsern definieren. In jedem Fall werden die Optionen in derempfohlenen Reihenfolge dargestellt.

Bewährte Methoden für AnmeldeinformationenDurch das ordnungsgemäße Festlegen von Anmeldeinformationen wird sichergestellt, dass IhreAnwendung oder Ihr Browser-Skript auf die benötigten Services und Ressourcen zugreifen kann.Gleichzeitig werden Sicherheitsrisiken minimiert, die geschäftskritische Anwendungen beeinträchtigen odervertrauliche Daten kompromittieren könnten.

Ein wichtiger Grundsatz beim Einrichten von Anmeldeinformationen lautet, immer nur diegeringstmöglichen Berechtigungen zu erteilen, die für eine Aufgabe erforderlich sind. Es ist sicherer,minimale Berechtigungen für Ihre Ressourcen bereitzustellen und bei Bedarf weitere Berechtigungenhinzuzufügen, anstatt Berechtigungen bereitzustellen, die die geringsten Rechte überschreiten, undaufgrund dessen zu einem späteren Zeitpunkt möglicherweise Sicherheitsprobleme beheben zu müssen.Legen Sie beispielsweise Berechtigungen als schreibgeschützt fest, es sei denn, Sie benötigen für einzelneRessourcen, wie z. B. Objekte in einem Amazon S3-Bucket oder einer DynamoDB-Tabelle, Lese- undSchreibberechtigungen.

Weitere Informationen zum Erteilen der geringsten Rechte finden Sie im Abschnitt: Gewähren vongeringsten Rechten beim Thema „Bewährte Methoden“ in IAM-Benutzerhandbuch.

Warning

Obwohl es möglich ist, eine Hartcodierung Ihrer Anmeldeinformationen in einer Anwendungoder einem Browser-Skript vorzunehmen, wird hiervon abgeraten. Die Hartcodierung derAnmeldeinformationen setzt die Zugriffsschlüssel-ID und den geheimen Zugriffsschlüssel demRisiko einer Offenlegung aus.

Weitere Informationen über die Verwaltung Ihrer Zugriffsschlüssel finden Sie unter Bewährte Methoden fürdie Verwaltung von AWS-Zugriffsschlüsseln in der AWS General Reference.

31

Page 38: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Einrichten der Anmeldeinformationen in Node.js

Themen• Einrichten der Anmeldeinformationen in Node.js (p. 32)• Festlegen von Anmeldeinformationen in einem Web-Browser (p. 35)

Einrichten der Anmeldeinformationen in Node.jsEs gibt mehrere Möglichkeiten in Node.js, um dem SDK die Anmeldeinformationen bereitzustellen.Einige davon sind sicherer und andere bieten eine höhere Benutzerfreundlichkeit bei derAnwendungsentwicklung. Beim Abrufen von Anmeldeinformationen in Node.js sollten Sie vorsichtigsein, wenn Sie sich auf mehr als eine Quelle verlassen, wie z. B. auf eine von Ihnen geladeneUmgebungsvariable und eine JSON-Datei. Sie können die Berechtigungen, unter denen Ihr Codeausgeführt wird, ändern, ohne sich dieser Änderung bewusst zu sein.

So können Sie Ihre Anmeldeinformationen angeben (in der Reihenfolge der Stärke der Empfehlung):

1. Aus AWS Identity and Access Management (IAM)-Rollen für Amazon EC2 geladen2. Aus der freigegebenen Anmeldeinformationsdatei (~/.aws/credentials) geladen3. Aus den Umgebungsvariablen geladen4. Aus einer JSON-Datei auf einem Datenträger geladen5. Andere Klassen von Anbietern für Anmeldeinformationen bereitgestellt durch die JavaScript-SDK

Wenn mehr als eine Quelle für Anmeldeinformationen für die SDK verfügbar ist, lautet die Standard-Auswahlpriorität wie folgt:

1. Anmeldeinformationen, die explizit über den Service-Client-Konstruktor festgelegt werden2. Umgebungsvariablen3. Die freigegebene Anmeldeinformationsdatei4. Anmeldeinformationen, die aus dem ECS-Anmeldeinformationsanbieter geladen werden (wenn

zutreffend)5. Anmeldeinformationen, die über einen Prozess für Anmeldeinformationen in der AWS Shared Config-

Datei oder aus der freigegebenen Anmeldeinformationsdatei geladen werden. Weitere Informationenfinden Sie unter the section called “Anmeldeinformationen, die über einen Prozess für die Konfigurierungvon Anmeldeinformationen geladen werden” (p. 35).

6. Anmeldeinformationen, die über den Anmeldeinformationsanbieter der Amazon EC2-Instance (wenn inden Instance-Metadaten konfiguriert) aus AWS IAM geladen werden

Weitere Informationen finden Sie unter Klasse: AWS.Credentials und Klasse:AWS.CredentialProviderChain in der API-Referenz.

Warning

Obwohl es möglich ist, eine Hartcodierung Ihrer AWS-Anmeldeinformationen in einer Anwendungvorzunehmen, wird hiervon abgeraten. Die Hartcodierung der Anmeldeinformationen setzt dieZugriffsschlüssel-ID und den geheimen Zugriffsschlüssel dem Risiko einer Offenlegung aus.

Die Themen in diesem Abschnitt beschreiben, wie Sie die Anmeldeinformationen in Node.js laden.

Themen• Laden der Anmeldeinformationen in Node.js aus IAM-Rollen für EC2 (p. 33)• Laden der Anmeldeinformationen für eine Node.js-Lambda-Funktion (p. 33)• Laden der Anmeldeinformationen in Node.js aus der freigegebenen

Anmeldeinformationsdatei (p. 33)

32

Page 39: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Einrichten der Anmeldeinformationen in Node.js

• Laden der Anmeldeinformationen in Node.js aus den Umgebungsvariablen (p. 34)• Laden der Anmeldeinformationen in Node.js aus einer JSON-Datei (p. 35)• Laden von Anmeldeinformationen in Node.js über einen Prozess für konfigurierte

Anmeldeinformationen (p. 35)

Laden der Anmeldeinformationen in Node.js aus IAM-Rollen fürEC2Wenn Sie die Node.js-Anwendung auf einer Amazon EC2-Instance ausführen, können Sie IAM-Rollen fürAmazon EC2 nutzen, um die Anmeldeinformationen automatisch für die Instance bereitzustellen. WennSie Ihre Instance so konfigurieren, dass sie IAM-Rollen verwendet, wählt das SDK automatisch die IAM-Anmeldeinformationen für Ihre Anwendung aus, sodass Sie diese nicht manuell eingeben müssen.

Weitere Informationen zum Hinzufügen von IAM-Rollen zu einer Amazon EC2-Instance finden Sie unterIAM-Rollen für Amazon EC2.

Laden der Anmeldeinformationen für eine Node.js-Lambda-FunktionWenn Sie eine AWS Lambda-Funktion erstellen, müssen Sie eine spezielle IAM-Rolle erstellen,die berechtigt ist, die Funktion auszuführen. Diese Rolle wird Ausführungsrolle genannt. Wenn Sieeine Lambda-Funktion einrichten, müssen Sie die von Ihnen erstellte IAM-Rolle als die zugehörigeAusführungsrolle angeben.

Die Ausführungsrolle stellt der Lambda-Funktion die benötigten Anmeldeinformationen bereit, um dieFunktion auszuführen sowie andere Web-Services aufzurufen. Aus diesem Grund müssen Sie für denNode.js-Code, den Sie innerhalb einer Lambda-Funktion schreiben, keine Anmeldeinformationen angeben.

Weitere Informationen zum Erstellen einer Lambda-Ausführungsrolle finden Sie unter Verwalten vonBerechtigungen: Verwenden einer IAM-Rolle (Ausführungsrolle) im AWS Lambda Developer Guide.

Laden der Anmeldeinformationen in Node.js aus derfreigegebenen AnmeldeinformationsdateiSie können Ihre AWS-Anmeldeinformationen in einer freigegebenen Datei speichern, die von den SDKsund der Befehlszeilen-Schnittstelle verwendet wird. Das SDK für JavaScript durchsucht beim Ladenautomatisch die freigegebene Anmeldeinformationsdatei, mit dem Namen „Anmeldeinformationen“. Wo Siedie freigegebene Anmeldeinformationsdatei speichern, hängt von Ihrem Betriebssystem ab:

• Die Datei mit gemeinsam genutzten Anmeldeinformationen auf Linux, Unix und macOS: ~/.aws/credentials

• Die freigegebene Datei für Anmeldeinformationen auf Windows: C:\Users\USER_NAME\.aws\credentials

Wenn Sie noch keine freigegebene Anmeldeinformationsdatei haben, finden Sie weitere Informationenunter Abrufen Ihrer Anmeldeinformationen (p. 30). Sobald Sie die folgenden Anweisungen ausgeführthaben, sollten Sie Text ähnlich dem folgenden in der Anmeldeinformationsdatei sehen, wobei<YOUR_ACCESS_KEY_ID> Ihre Zugriffsschlüssel-ID und <YOUR_SECRET_ACCESS_KEY> Ihr geheimerZugriffsschlüssel ist:

[default]aws_access_key_id = <YOUR_ACCESS_KEY_ID>aws_secret_access_key = <YOUR_SECRET_ACCESS_KEY>

33

Page 40: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Einrichten der Anmeldeinformationen in Node.js

Ein Beispiel für die Verwendung dieser Datei finden Sie unter Erste Schritte in Node.js (p. 8).

Unter der [default]-Abschnittsüberschrift wird ein Standardprofil sowie die zugehörigen Werte fürdie Anmeldeinformationen festgelegt. Sie können zusätzliche Profile in der gleichen freigegebenenKonfigurationsdatei erstellen, wobei diese über ihre eigenen Anmeldeinformationen verfügen. Das folgendeBeispiel zeigt eine Konfigurationsdatei mit dem Standardprofil und zwei zusätzlichen Profilen:

[default] ; default profileaws_access_key_id = <DEFAULT_ACCESS_KEY_ID>aws_secret_access_key = <DEFAULT_SECRET_ACCESS_KEY> [personal-account] ; personal account profileaws_access_key_id = <PERSONAL_ACCESS_KEY_ID>aws_secret_access_key = <PERSONAL_SECRET_ACCESS_KEY> [work-account] ; work account profileaws_access_key_id = <WORK_ACCESS_KEY_ID>aws_secret_access_key = <WORK_SECRET_ACCESS_KEY>

Standardmäßig prüft das SDK die Umgebungsvariable AWS_PROFILE, um zu bestimmen, welchesProfil verwendet werden soll. Wenn die AWS_PROFILE-Variable in Ihrer Umgebung nicht festgelegt ist,verwendet das SDK die Anmeldeinformationen für das [default]-Profil. Um eines der alternativen Profilezu verwenden, müssen Sie den Wert der Umgebungsvariablen AWS_PROFILE einstellen oder ändern.Beispiel: Um die Anmeldeinformationen aus dem Arbeitskonto bei der oben gezeigten Konfigurationsdateizu verwenden, legen Sie die AWS_PROFILE Umgebungsvariable auf work-account (passend für IhrBetriebssystem).

Note

Wenn Sie Umgebungsvariablen einstellen, stellen Sie sicher, dass Sie später die angemessenenSchritte durchführen (gemäß den Anforderungen Ihres Betriebssystems), um die Variablen in derBefehlszeile oder der Befehlsumgebung verfügbar zu machen.

Nach dem Festlegen der Umgebungsvariable (falls erforderlich), können Sie eine Datei mit dem Namenscript.js öffnen, die das SDK verwendet. Gehen Sie dazu wie folgt vor:

$ node script.js

Sie können auch das vom SDK verwendete Profil explizit auswählen. Definieren Sie dazu entwederprocess.env.AWS_PROFILE vor dem Laden der SDK oder wählen Sie den Anmeldeinformationsanbieteraus, wie im folgenden Beispiel gezeigt:

var credentials = new AWS.SharedIniFileCredentials({profile: 'work-account'});AWS.config.credentials = credentials;

Laden der Anmeldeinformationen in Node.js aus denUmgebungsvariablenDas SDK erkennt automatisch AWS-Anmeldeinformationen, die in Ihrer Umgebung als Variablen festgelegtwurden und verwendet sie für SDK-Anforderungen. So müssen Sie keine Anmeldeinformationen in IhrerAnwendung verwalten. Die Umgebungsvariablen, die Sie zum Bereitstellen Ihrer Anmeldeinformationenfestlegen, sind:

• AWS_ACCESS_KEY_ID

• AWS_SECRET_ACCESS_KEY

• AWS_SESSION_TOKEN (optional)

34

Page 41: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Festlegen von Anmeldeinformationen in einem Web-Browser

Note

Wenn Sie Umgebungsvariablen einstellen, stellen Sie sicher, dass Sie später die angemessenenSchritte durchführen (gemäß den Anforderungen Ihres Betriebssystems), um die Variablen in derBefehlszeile oder der Befehlsumgebung verfügbar zu machen.

Laden der Anmeldeinformationen in Node.js aus einer JSON-DateiSie können die Konfigurations- und Anmeldeinformationen aus einem JSON-Dokument auf der Festplattemithilfe von AWS.config.loadFromPath laden. Der angegebene Pfad ist relativ zum aktuellenArbeitsverzeichnis Ihres Vorgangs. Um zum Beispiel Anmeldeinformationen aus einer 'config.json'-Datei mit folgendem Inhalt zu laden:

{ "accessKeyId": <YOUR_ACCESS_KEY_ID>, "secretAccessKey": <YOUR_SECRET_ACCESS_KEY>, "region": "us-east-1" }

Verwenden Sie den folgenden Befehl:

AWS.config.loadFromPath('./config.json');

Note

Durch das Laden der Konfigurationsdaten aus einem JSON-Dokument werden alle vorhandenenKonfigurationsdaten zurückgesetzt. Fügen Sie nach Verwendung dieser Methode zusätzlicheKonfigurationsdaten hinzu. Das Laden von Anmeldeinformationen aus einem JSON-Dokumentwird in Browser-Skripts nicht unterstützt.

Laden von Anmeldeinformationen in Node.js über einen Prozessfür konfigurierte AnmeldeinformationenSie können Anmeldeinformationen unter Verwendung einer Methode beschaffen, die nicht in das SDKintegriert ist. Hierzu geben Sie einen Prozess für Anmeldeinformationen in der AWS Shared Config-Datei oder in der Datei für freigegebene Anmeldeinformationen an. Wenn die AWS_SDK_LOAD_CONFIG-Umgebungsvariable auf einen truthy-Wert festgelegt wurde, bevorzugt das SDK den in der Config-Dateiangegebenen Prozess gegenüber dem in der Anmeldeinformationsdatei (wenn vorhanden) angegebenenProzess.

Details zur Angabe eines Anmeldeinformationsprozesses in der AWS Shared Config-Datei oder in derDatei für freigegebene Anmeldeinformationen finden Sie im AWS CLI Command Reference, besondersunter Beschaffen von Anmeldeinformationen aus externen Prozessen.

Informationen zur Verwendung der AWS_SDK_LOAD_CONFIG-Umgebungsvariablen finden Sie unter thesection called “Verwenden einer freigegebenen Konfigurationsdatei” (p. 28) in diesem Dokument.

Festlegen von Anmeldeinformationen in einem Web-BrowserEs gibt mehrere Möglichkeiten, um dem SDK die Anmeldeinformationen aus Browser-Skriptsbereitzustellen. Einige davon sind sicherer und andere bieten eine höhere Benutzerfreundlichkeit bei derEntwicklung eines Skripts. So können Sie Ihre Anmeldeinformationen angeben (in der Reihenfolge derStärke der Empfehlung):

35

Page 42: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Festlegen von Anmeldeinformationen in einem Web-Browser

1. Verwenden von Amazon Cognito-Identität zum Authentifizieren von Benutzern und Bereitstellen derAnmeldeinformationen

2. Verwenden von Web-Verbundidentitäten3. Hartcodierung im Skript

Warning

Es wird nicht empfohlen, eine Hartcodierung Ihrer AWS-Anmeldeinformationen in Ihren Skriptsvorzunehmen. Die Hartcodierung der Anmeldeinformationen setzt die Zugriffsschlüssel-ID und dengeheimen Zugriffsschlüssel dem Risiko einer Offenlegung aus.

Themen• Verwenden von Amazon Cognito-Identität zum Authentifizieren von Benutzern (p. 36)• Verwenden von Web-Verbundidentitäten zum Authentifizieren von Benutzern (p. 38)• Beispiele von Web-Verbundidentitäten (p. 40)

Verwenden von Amazon Cognito-Identität zum Authentifizierenvon BenutzernDie Verwendung des Amazon Cognito-Identität-AnmeldeinformationsobjektsAWS.CognitoIdentityCredentials ist die empfohlene Methode, um AWS-Anmeldeinformationen fürIhre Browser-Skripts zu erhalten. Amazon Cognito ermöglicht die Authentifizierung von Benutzern durchDritt-Identitätsanbieter.

Um Amazon Cognito-Identität verwenden zu können, müssen Sie zunächst einen Identitäten-Poolin der Amazon Cognito-Konsole erstellen. Ein Identitäten-Pool stellt die Gruppe von Identitäten dar,die Ihre Anwendung für Ihre Benutzer bereitstellt. Die Identitäten, die den Benutzern zugewiesenwurden, identifizieren eindeutig die einzelnen Benutzerkonten. Amazon Cognito-Identitäten sind keineAnmeldeinformationen. Sie werden über die Unterstützung des Web-Identitätsverbunds in AWS SecurityToken Service (AWS STS) gegen Anmeldeinformationen ausgetauscht.

Amazon Cognito unterstützt Sie dabei, die Abstraktion der Identitäten über mehrere Identitätsanbietermithilfe des AWS.CognitoIdentityCredentials-Objekts zu verwalten. Die geladene Identität wirddann gegen Anmeldeinformationen in AWS STS ausgetauscht.

Konfigurieren des Amazon Cognito-Identität-AnmeldeinformationsobjektsFalls Sie es bisher noch nicht getan haben, erstellen Sie zunächst einen Identitäten-Pool für dieVerwendung mit Ihren Browser-Skripts in der Amazon Cognito-Konsole, konfigurieren Sie anschließendAWS.CognitoIdentityCredentials. Erstellen und verknüpfen Sie sowohl authentifizierte als auchnicht authentifizierte IAM-Rollen für den Identitäten-Pool.

Für nicht authentifizierte Benutzer wird die Identität nicht verifiziert, sodass diese Rolle für GastbenutzerIhrer Anwendung geeignet ist, oder in Fällen, in denen es keine Rolle spielt, ob Benutzer ihre Identitätverifizieren lassen. Authentifizierte Benutzer melden sich bei Ihrer Anwendung über einen Drittanbieteran, der ihre Identität überprüft. Vergewissern Sie sich, dass Sie die Berechtigungen der Ressourcenentsprechend anpassen, damit Sie keinen Zugriff von nicht authentifizierten Benutzern darauf gewähren.

Nachdem Sie einen Identitäten-Pool mit angefügten Identitätsanbietern konfiguriert haben, können Sie mitAWS.CognitoIdentityCredentials Benutzer authentifizieren. Um die Anmeldeinformationen für IhreAnwendung so zu konfigurieren, dass Sie AWS.CognitoIdentityCredentials verwenden können,setzen Sie die credentials-Eigenschaft für AWS.Config oder Sie verwenden eine servicespezifischeKonfiguration. Im folgenden Beispiel wird AWS.Config verwendet:

AWS.config.credentials = new AWS.CognitoIdentityCredentials({

36

Page 43: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Festlegen von Anmeldeinformationen in einem Web-Browser

IdentityPoolId: 'us-east-1:1699ebc0-7900-4099-b910-2df94f52a030', Logins: { // optional tokens, used for authenticated login 'graph.facebook.com': 'FBTOKEN', 'www.amazon.com': 'AMAZONTOKEN', 'accounts.google.com': 'GOOGLETOKEN' }});

Die optionale Logins-Eigenschaft ist eine Abbildung der Namen des Identitätsanbieters auf die Identitäts-Token für diese Anbieter. Wie Sie den Token von Ihrem Identitätsanbieter erhalten, hängt davon ab,welchen Anbieter Sie verwenden. Ist beispielsweise Facebook einer Ihrer Identitätsanbieter, könnten sie dieFB.login-Funktion aus dem Facebook SDK verwenden, um ein Identitätsanbieter-Token zu erhalten:

FB.login(function (response) { if (response.authResponse) { // logged in AWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'us-east-1:1699ebc0-7900-4099-b910-2df94f52a030', Logins: { 'graph.facebook.com': response.authResponse.accessToken } });

s3 = new AWS.S3; // we can now create our service object

console.log('You are now logged in.'); } else { console.log('There was a problem logging you in.'); }});

Wechseln von nicht authentifizierten Benutzern zu authentifizierten Benutzern

Amazon Cognito unterstützt sowohl authentifizierte als auch nicht authentifizierte Benutzer. Nichtauthentifizierte Benutzer erhalten Zugriff auf Ihre Ressourcen, auch wenn sie nicht über IhreIdentitätsanbieter angemeldet sind. Dieser Grad des Zugriffs ist nützlich, um Inhalte für Benutzeranzuzeigen, bevor diese sich anmelden. Jeder nicht authentifizierte Benutzer hat eine eindeutige Identitätin Amazon Cognito, auch wenn er nicht individuell angemeldet und authentifiziert ist.

Anfänglich nicht authentifizierter Benutzer

Benutzer beginnen in der Regel mit der nicht authentifizierten Rolle, für die Sie die Eigenschaft für dieAnmeldeinformationen Ihres Konfigurationsobjekts ohne eine Logins-Eigenschaft festlegen. In diesem Fallkönnte Ihre Standardkonfiguration folgendermaßen aussehen:

// set the default config objectvar creds = new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'us-east-1:1699ebc0-7900-4099-b910-2df94f52a030'});AWS.config.credentials = creds;

Wechseln Sie zum authentifizierten Benutzer

Wenn ein nicht authentifizierter Benutzer sich bei einem Identitätsanbieter anmeldet und Sie ein Tokenhaben, können Sie den Benutzer von einem nicht authentifizierten in einen authentifizierten Benutzerumändern, indem Sie eine benutzerdefinierte Funktion aufrufen, welche das Anmeldeobjekt aktualisiert unddas Logins-Token hinzufügt:

// Called when an identity provider has a token for a logged in userfunction userLoggedIn(providerName, token) {

37

Page 44: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Festlegen von Anmeldeinformationen in einem Web-Browser

creds.params.Logins = creds.params.Logins || {}; creds.params.Logins[providerName] = token; // Expire credentials to refresh them on the next request creds.expired = true;}

Darüber hinaus können Sie ein CognitoIdentityCredentials-Objekt erstellen. Wenn Siedies tun, müssen Sie die Eigenschaften für die Anmeldeinformationen der vorhandenen, von Ihnenerstellten Serviceobjekte zurücksetzen. Serviceobjekte lesen die globale Konfiguration nur während derObjektinitialisierung.

Weitere Informationen zum CognitoIdentityCredentials-Objekt finden Sie unterAWS.CognitoIdentityCredentials in der AWS SDK für JavaScript-API-Referenz.

Verwenden von Web-Verbundidentitäten zum Authentifizierenvon BenutzernSie können individuelle Identitätsanbieter direkt konfigurieren, sodass diese mithilfe eines Web-Identitätsverbunds auf AWS-Ressourcen zugreifen können. Derzeit unterstützt AWS das Authentifizierenvon Benutzern mithilfe eines Web-Identitätsverbunds über mehrere Identitätsanbieter:

• Login with Amazon• Facebook-Anmeldung• Google-Anmeldung

Sie müssen Ihre Anwendung zunächst mit den Anbietern registrieren, die von Ihrer Anwendung unterstütztwerden. Erstellen Sie danach eine IAM-Rolle und richten Sie die Berechtigungen dafür ein. Die IAM-Rolle, die Sie erstellen, wird dann für die Erteilung der Berechtigungen verwendet, die Sie für sie über denjeweiligen Identitätsanbieter konfiguriert haben. Sie können beispielsweise eine Rolle so einrichten, dassBenutzer, die sich über Facebook anmelden, Lesezugriff auf einen bestimmten Amazon S3-Bucket haben,den Sie steuern.

Nachdem Sie sowohl über eine IAM-Rolle mit konfigurierten Berechtigungen verfügen als auch eineAnwendung bei den von Ihnen ausgewählten Identitätsanbieter registriert haben, können Sie das SDKso einrichten, dass die Anmeldeinformationen für die IAM-Rolle mithilfe von Hilfscode folgendermaßenabgerufen werden:

AWS.config.credentials = new AWS.WebIdentityCredentials({ RoleArn: 'arn:aws:iam::<AWS_ACCOUNT_ID>/:role/<WEB_IDENTITY_ROLE_NAME>', ProviderId: 'graph.facebook.com|www.amazon.com', // this is null for Google WebIdentityToken: ACCESS_TOKEN});

Der Wert des ProviderId-Parameters hängt vom angegebenen Identitätsanbieter ab. Der Wert desWebIdentityToken-Parameters ist das abgerufene Zugriffstoken aus einer erfolgreichen Anmeldungmit dem Identitätsanbieter. Weitere Informationen zum Konfigurieren und Abrufen von Zugriffstoken für dieeinzelnen Identitätsanbieter finden Sie in der Dokumentation des Identitätsanbieters.

Schritt 1: Registrierung bei den Identitätsanbietern

Registrieren Sie eine Anwendung zu Beginn bei den Identitätsanbietern, die Sie unterstützen möchten. Siewerden um Informationen gebeten, anhand derer Ihre Anwendung und möglicherweise auch deren Autoridentifiziert werden können. Auf diese Weise wird sichergestellt, dass die Identitätsanbieter den Empfängerihrer Benutzerinformationen kennen. In jedem Fall erstellt der Identitätsanbieter eine Anwendungs-ID, mitder Sie Benutzerrollen konfigurieren können.

38

Page 45: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Festlegen von Anmeldeinformationen in einem Web-Browser

Schritt 2: Erstellen einer IAM-Rolle für einen Identitätsanbieter

Nachdem Sie die Anwendungs-ID vom Identitätsanbieter erhalten haben, navigieren Sie zur IAM-Konsoleunter https://console.aws.amazon.com/iam/, um eine neue IAM-Rolle zu erstellen.

So erstellen Sie eine IAM-Rolle für einen Identitätsanbieter

1. Rufen Sie in der Konsole den Abschnitt Roles (Rollen) auf und wählen Sie anschließend Create newrole (Neue Rolle erstellen) aus.

2. Geben Sie einen Namen für die neue Rolle ein, über den Sie deren Verwendung verfolgen können, z.B. facebookIdentity. Wählen Sie anschließend Next Step (Nächster Schritt) aus.

3. Wählen Sie unter Select Role Type (Rollentyp auswählen) die Option Role for Identity Provider Access(Rolle für den Zugriff von Identitätsanbietern) aus.

4. Wählen Sie unter Grant access to web identity providers (Web-Identitätsanbietern Zugriff gewähren)die Option Select (Auswählen) aus.

5. Wählen Sie in der Liste Identity Provider (Identitätsanbieter) den Identitätsanbieter aus, den Sie fürdiese IAM-Rolle verwenden möchten.

6. Geben Sie die Anwendungs-ID des Identitätsanbieters im Feld Application ID (Anwendungs-ID) einund wählen Sie dann Next Step (Nächster Schritt) aus

7. Konfigurieren Sie Berechtigungen für die Ressourcen, die Sie bereitstellen möchten, damit der Zugriffauf bestimmte Operationen für bestimmte Ressourcen gewährt wird. Weitere Informationen überIAM-Berechtigungen finden Sie im Abschnitt mit der Übersicht über AWS IAM-BerechtigungenimIAM-Benutzerhandbuch. Überprüfen Sie die Vertrauensstellung der Rolle und passen Sie sieerforderlichenfalls an. Klicken Sie anschließend auf Next Step (Nächster Schritt).

8. Fügen Sie zusätzliche benötigte Richtlinien an und wählen Sie dann Next Step (Nächster Schritt)aus. Weitere Informationen über IAM-Richtlinien finden Sie im Abschnitt mit der Übersicht über IAM-Richtlinien im IAM-Benutzerhandbuch.

9. Prüfen Sie die neue Rolle und wählen Sie dann Create Role (Rolle erstellen) aus.

Sie können der Rolle andere Einschränkungen hinzufügen, z. B. die Zuordnung zu bestimmten Benutzer-IDs. Wenn die Rolle Schreibberechtigungen für Ihre Ressourcen erteilt, stellen Sie sicher, dass Sie dieRolle nur Benutzern mit den entsprechenden Berechtigungen zuordnen, ansonsten kann jeder Benutzer miteiner Amazon-, Facebook- oder Google-Identität Änderungen an Ihren Ressourcen vornehmen.

Weitere Informationen zur Verwendung des Web-Identitätsverbunds in IAM finden Sie unter Über Web-Identitätsverbund im IAM-Benutzerhandbuch.

Schritt 3: Abrufen eines Zugriffstokens für Anbieter nach der Anmeldung

Richten Sie die Anmeldung für Ihre Anwendung ein, indem Sie das SDK des Identitätsanbietersverwenden. Sie können ein JavaScript-SDK des Identitätsanbieters herunterladen und installieren, das

39

Page 46: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Festlegen von Anmeldeinformationen in einem Web-Browser

Ihnen die Benutzeranmeldung mithilfe von OAuth oder OpenID ermöglicht. Weitere Informationen zumHerunterladen und Einrichten des SDK-Codes in Ihrer Anwendung finden Sie in der SDK-DokumentationIhres Identitätsanbieters:

• Login with Amazon• Facebook-Anmeldung• Google-Anmeldung

Schritt 4: Abrufen temporärer Anmeldeinformationen

Nachdem Sie die Anwendung, Rollen und Ressourcenberechtigungen konfiguriert haben, fügenSie Ihrer Anwendung den Code hinzu, um temporäre Anmeldeinformationen zu erhalten. DieseAnmeldeinformationen werden unter Verwendung des Web-Identitätsverbunds über AWS Security TokenService bereitgestellt. Benutzer melden sich beim Identitätsanbieter an, wodurch Ihnen ein Zugriffstokenbereitgestellt wird. Richten Sie das AWS.WebIdentityCredentials-Objekt mithilfe des ARN für die IAM-Rolle ein, die Sie für diesen Identitätsanbieter erstellt haben:

AWS.config.credentials = new AWS.WebIdentityCredentials({ RoleArn: 'arn:aws:iam::<AWS_ACCOUNT_ID>:role/<WEB_IDENTITY_ROLE_NAME>', ProviderId: 'graph.facebook.com|www.amazon.com', // Omit this for Google WebIdentityToken: ACCESS_TOKEN // Access token from identity provider});

Serviceobjekte, die anschließend erstellt werden, verfügen über die entsprechendenAnmeldeinformationen. Objekte, die vor der Einrichtung der AWS.config.credentials-Eigenschafterstellt wurden, verfügen nicht über die aktuellen Anmeldeinformationen.

Sie können AWS.WebIdentityCredentials auch vor dem Abrufen des Zugriffstokens erstellen.Auf diese Weise können Sie Serviceobjekte erstellen, die von den Anmeldeinformationen abhängen,bevor Sie das Zugriffstoken laden. Erstellen Sie hierzu das Anmeldeinformationsobjekt ohne denWebIdentityToken-Parameter:

AWS.config.credentials = new AWS.WebIdentityCredentials({ RoleArn: 'arn:aws:iam::<AWS_ACCOUNT_ID>:role/<WEB_IDENTITY_ROLE_NAME>', ProviderId: 'graph.facebook.com|www.amazon.com' // Omit this for Google});

// Create a service objectvar s3 = new AWS.S3;

Definieren Sie anschließend WebIdentityToken im Callback des SDK des Identitätsanbieters, das denZugriffstoken enthält:

AWS.config.credentials.params.WebIdentityToken = accessToken;

Beispiele von Web-VerbundidentitätenIm Folgenden finden Sie einige Beispiele zur Verwendung von Web-Verbundidentitäten, umAnmeldeinformationen im JavaScript des Browsers abzurufen. Diese Beispiele müssen über ein Host-Schema „http://“ oder „https://“ ausgeführt werden, um sicherzustellen, dass die Weiterleitung an IhreAnwendung durch den Identitätsanbieter erfolgen kann.

Beispiel für Login with Amazon

Der folgende Code zeigt, wie Sie Login with Amazon als Identitätsanbieter verwenden.

40

Page 47: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Festlegen von Anmeldeinformationen in einem Web-Browser

<a href="#" id="login"> <img border="0" alt="Login with Amazon" src="https://images-na.ssl-images-amazon.com/images/G/01/lwa/btnLWA_gold_156x32.png" width="156" height="32" /></a><div id="amazon-root"></div><script type="text/javascript"> var s3 = null; var clientId = 'amzn1.application-oa2-client.1234567890abcdef'; // client ID var roleArn = 'arn:aws:iam::<AWS_ACCOUNT_ID>:role/<WEB_IDENTITY_ROLE_NAME>';

window.onAmazonLoginReady = function() { amazon.Login.setClientId(clientId); // set client ID

document.getElementById('login').onclick = function() { amazon.Login.authorize({scope: 'profile'}, function(response) { if (!response.error) { // logged in AWS.config.credentials = new AWS.WebIdentityCredentials({ RoleArn: roleArn, ProviderId: 'www.amazon.com', WebIdentityToken: response.access_token });

s3 = new AWS.S3();

console.log('You are now logged in.'); } else { console.log('There was a problem logging you in.'); } }); }; };

(function(d) { var a = d.createElement('script'); a.type = 'text/javascript'; a.async = true; a.id = 'amazon-login-sdk'; a.src = 'https://api-cdn.amazon.com/sdk/login1.js'; d.getElementById('amazon-root').appendChild(a); })(document);</script>

Beispiel für eine Facebook-AnmeldungDer folgende Code zeigt, wie Sie die Facebook-Anmeldung als Identitätsanbieter verwenden:

<button id="login">Login</button><div id="fb-root"></div><script type="text/javascript">var s3 = null;var appId = '1234567890'; // Facebook app IDvar roleArn = 'arn:aws:iam::<AWS_ACCOUNT_ID>:role/<WEB_IDENTITY_ROLE_NAME>';

window.fbAsyncInit = function() { // init the FB JS SDK FB.init({appId: appId});

document.getElementById('login').onclick = function() { FB.login(function (response) { if (response.authResponse) { // logged in AWS.config.credentials = new AWS.WebIdentityCredentials({ RoleArn: roleArn, ProviderId: 'graph.facebook.com', WebIdentityToken: response.authResponse.accessToken });

41

Page 48: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Festlegen von Anmeldeinformationen in einem Web-Browser

s3 = new AWS.S3;

console.log('You are now logged in.'); } else { console.log('There was a problem logging you in.'); } }); };};

// Load the FB JS SDK asynchronously(function(d, s, id){ var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) {return;} js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/en_US/all.js"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk'));</script>

Beispiel für eine Google+-Anmeldung

Der folgende Code zeigt, wie Sie die Google+-Anmeldung als Identitätsanbieter verwenden. DasZugriffstoken für den Web-Identitätsverbund von Google wird im response.id_token und nicht imaccess_token gespeichert, wie dies bei anderen Identitätsanbietern der Fall ist.

<span id="login" class="g-signin" data-height="short" data-callback="loginToGoogle" data-cookiepolicy="single_host_origin" data-requestvisibleactions="http://schemas.google.com/AddActivity" data-scope="https://www.googleapis.com/auth/plus.login"></span><script type="text/javascript"> var s3 = null; var clientID = '1234567890.apps.googleusercontent.com'; // Google client ID var roleArn = 'arn:aws:iam::<AWS_ACCOUNT_ID>:role/<WEB_IDENTITY_ROLE_NAME>';

document.getElementById('login').setAttribute('data-clientid', clientID); function loginToGoogle(response) { if (!response.error) { AWS.config.credentials = new AWS.WebIdentityCredentials({ RoleArn: roleArn, WebIdentityToken: response.id_token });

s3 = new AWS.S3();

console.log('You are now logged in.'); } else { console.log('There was a problem logging you in.'); } }

(function() { var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; po.src = 'https://apis.google.com/js/client:plusone.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); })(); </script>

42

Page 49: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Schützen der API-Versionen

Schützen der API-VersionenAWS-Services verwenden API-Versionsnummern, um die API-Kompatibilität nachzuverfolgen. API-Versionen in AWS-Services werden anhand einer Zeichenfolge im Format YYYY-mm-dd identifiziert. ZumBeispiel lautet die aktuelle API-Version für Amazon S3 2006-03-01.

Es wird empfohlen, die API-Version für einen Service zu schützen, wenn diese für den Produktions-Code erforderlich ist. Dies kann Ihre Anwendungen von Service-Änderungen isolieren, die aufgrund vonAktualisierungen des SDK erfolgen. Wenn Sie beim Erstellen von Serviceobjekten keine API-Versionangeben, verwendet das SDK standardmäßig die neueste API-Version. Dies kann dazu führen, dassIhre Anwendung eine aktualisierte API referenziert, die Änderungen enthält, die sich negativ auf IhreAnwendung auswirken.

Um die API-Version, die Sie für einen Service verwenden, zu schützen, übergeben Sie den apiVersion-Parameter bei der Erstellung des Serviceobjekts. Im folgenden Beispiel wird ein neu erstelltesAWS.DynamoDB-Serviceobjekt der API-Version 2011-12-05 zugeordnet:

var dynamodb = new AWS.DynamoDB({apiVersion: '2011-12-05'});

Sie können auch eine Reihe von Service-API-Versionen global konfigurieren, indem Sie denapiVersions-Parameter in AWS.Config angeben. Um beispielsweise bestimmte Versionen derDynamoDB- und Amazon EC2-APIs sowie die aktuelle Amazon Redshift-API festzulegen, richten SieapiVersions wie folgt ein:

AWS.config.apiVersions = { dynamodb: '2011-12-05', ec2: '2013-02-01', redshift: 'latest'};

Abrufen von API-VersionenInformationen zum Abrufen der API-Version für einen Service finden Sie im Abschnitt Sperren der API-Version auf der Referenzseite des Service, wie etwa https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html für Amazon S3.

Überlegungen zu Node.jsObwohl der Node.js-Code in JavaScript geschrieben wurde, kann sich die Verwendung des AWS SDKfür JavaScript in Node.js von der Verwendung des SDK in Browser-Skripts unterscheiden. Einige API-Methoden funktionieren in Node.js, jedoch nicht in Browser-Skripts und umgekehrt. Die erfolgreicheVerwendung einiger APIs hängt davon ab, wie vertraut Sie mit häufigen Node.js-Codierungsmustern sind,beispielsweise dem Importieren und Verwenden anderer Node.js-Module wie des File System (fs)-Moduls.

Verwenden integrierter Node.js-ModuleNode.js bietet eine Reihe von integrierten Modulen, die Sie verwenden können ohne sie installieren zumüssen. Um diese Module verwenden zu können, müssen Sie ein Objekt mit der require-Methodeerstellen und den Modulnamen angeben. Wenn beispielsweise das integrierte HTTP-Modul enthalten seinsoll, geben Sie Folgendes ein.

43

Page 50: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwenden von NPM-Paketen

var http = require('http');

Rufen Sie Methoden des Moduls ab, als würde es sich um Methoden dieses Objekts handeln. Das folgendeBeispiel zeigt Code, der eine HTML-Datei liest.

// include File System modulevar fs = require('fs'); // Invoke readFile method fs.readFile('index.html', function(err, data) { if (err) { throw err; } else { // Successful file read }});

Eine vollständige Liste aller integrierten Module, die Node.js bereitstellt, finden Sie in der Dokumentation fürNode.js v6.11.1 auf der Node.js-Website.

Verwenden von NPM-PaketenZusätzlich zu den integrierten Modulen können Sie auch Drittanbieter-Code von npm, dem Node.js-Paketmanager, integrieren. Hierbei handelt es sich um ein Repository mit Open-Source-Node.js-Paketensowie um eine Befehlszeilen-Schnittstelle für die Installation dieser Pakete. Weitere Informationen übernpm und eine Liste der aktuell verfügbaren Pakete finden Sie unter https://www.npmjs.com. Sie könnenauch Informationen zu zusätzlichen Node.js-Paketen, die von Ihnen verwendet werden können, hier aufGitHub finden.

Ein Beispiel für ein npm-Paket, das Sie zusammen mit dem AWS SDK für JavaScript verwendenkönnen, ist browserify. Details dazu finden Sie unter Erstellen des SDK als Abhängigkeit mitBrowserify (p. 49). Ein weiteres Beispiel ist webpack. Details dazu finden Sie unter Bündeln vonAnwendungen mit Webpack (p. 52).

Themen• Konfigurieren von maxSockets in Node.js (p. 44)• Wiederverwenden von Verbindungen mit Keep-Alive in Node.js (p. 45)• Konfigurieren von Proxys für Node.js (p. 46)• Registrieren von Zertifikat-Bundles in Node.js (p. 46)

Konfigurieren von maxSockets in Node.jsIn Node.js können Sie die maximale Anzahl der Verbindungen pro Ursprungsserver festlegen. WennmaxSockets festgelegt wurde, setzt der Low-Level-HTTP-Client die Anforderungen auf eine Wartelisteund ordnet sie Sockets zu, sobald diese verfügbar werden.

Mit dieser Option können Sie eine Obergrenze für die Anzahl der gleichzeitigen Anforderungen an einenbestimmten Ursprungsserver angeben. Indem Sie diesen Wert senken, kann die Anzahl der maximalenAblehnungen oder Timeout-Fehler reduziert werden. Es kann jedoch auch die Speichernutzung erhöhen,da Anforderungen so lange in eine Warteschlange gesetzt werden, bis ein Socket verfügbar wird.

Das folgende Beispiel zeigt, wie Sie maxSockets für alle Serviceobjekte definieren, die Sie erstellen. Indiesem Beispiel sind bis zu 25 gleichzeitiger Verbindungen zu jedem Service-Endpunkt erlaubt.

var AWS = require('aws-sdk');

44

Page 51: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Wiederverwenden von Verbindungen

mit Keep-Alive in Node.js

var https = require('https');var agent = new https.Agent({ maxSockets: 25});

AWS.config.update({ httpOptions:{ agent: agent }});

Das Gleiche kann auch für die einzelnen Services vorgenommen werden.

var AWS = require('aws-sdk');var https = require('https');var agent = new https.Agent({ maxSockets: 25});

var dynamodb = new AWS.DynamoDB({ apiVersion: '2012-08-10' httpOptions:{ agent: agent }});

Wenn Sie den Standardwert von https verwenden, übernimmt das SDK den maxSockets-Wert ausglobalAgent. Wenn der maxSockets-Wert nicht definiert wurde oder Infinity ist, nimmt das SDKeinen maxSockets-Wert von 50 an.

Weitere Informationen zum Festlegen von maxSockets in Node.js finden Sie in der Online-Dokumentationfür Node.js.

Wiederverwenden von Verbindungen mit Keep-Alive inNode.jsStandardmäßig erstellt der standardmäßige Node.js-HTTP/HTTPS-Agent eine neue TCP-Verbindung fürjede neue Anforderung. Um die Kosten für den Aufbau einer neuen Verbindung zu vermeiden, können Sieeine vorhandene Verbindung wiederverwenden.

Bei kurzlebigen Vorgängen, z. B. DynamoDB-Abfragen, ist der Latenzaufwand beim Einrichten einerTCP-Verbindung möglicherweise höher als der Vorgang selbst. Da die DynamoDB-Verschlüsselungim Ruhezustand in AWS KMS integriert ist, können Latenzen in der Datenbank auftreten, die für jedenVorgang neue AWS KMS-Cache-Einträge wiederherstellen müssen.

Die einfachste Möglichkeit, SDK für JavaScript so zu konfigurieren, dass TCP-Verbindungenwiederverwendet werden, ist es, die AWS_NODEJS_CONNECTION_REUSE_ENABLED-Umgebungsvariableauf 1 festzulegen. Diese Funktion wurde in der Version 2.463.0 hinzugefügt.

Alternativ können Sie die keepAlive-Eigenschaft eines HTTP- oder HTTPS-Agenten auf true festlegen,wie im folgenden Beispiel gezeigt.

const AWS = require('aws-sdk');// http or httpsconst http = require('http');const agent = new http.Agent({ keepAlive: true, // Infinitity is read as 50 sockets maxSockets: Infinity

45

Page 52: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Konfigurieren von Proxys für Node.js

});

AWS.config.update({ httpOptions: { agent }});

Das folgende Beispiel zeigt, wie keepAlive für nur einen DynamoDB-Client festgelegt wird:

const AWS = require('aws-sdk')// http or httpsconst https = require('https');const agent = new https.Agent({ keepAlive: true});

const dynamodb = new AWS.DynamoDB({ httpOptions: { agent }});

Wenn keepAlive aktiviert ist, können Sie auch die anfängliche Verzögerung für TCP-Keep-Alive-Paketemit keepAliveMsecs festlegen, die standardmäßig 1000 ms beträgt. Weitere Informationen finden Sie inder Node.js-Dokumentation .

Konfigurieren von Proxys für Node.jsWenn Sie nicht direkt eine Verbindung mit dem Internet herstellen können, unterstützt das SDK fürJavaScript die Verwendung von HTTP- oder HTTPS-Proxys über einen Drittanbieter-HTTP-Agenten, wie z.B. dem Proxy-Agenten. Um den Proxy-Agenten zu installieren, geben Sie Folgendes in die Befehlszeile ein.

npm install proxy-agent --save

Wenn Sie einen anderen Proxy verwenden möchten, befolgen Sie die Anweisungen zur Installation undKonfiguration für diesen Proxy. Um diesen oder einen anderen Drittanbieter-Proxy in Ihrer Anwendungverwenden zu können, müssen Sie die httpOptions-Eigenschaft von AWS.Config so einrichten, dassder von Ihnen gewählte Proxy angegeben ist. Dieses Beispiel veranschaulicht proxy-agent.

var proxy = require('proxy-agent');AWS.config.update({ httpOptions: { agent: proxy('http://internal.proxy.com') }});

Weitere Informationen zu anderen Proxy-Bibliotheken finden Sie im Abschnitt zu npm, dem Paketmanagervon Node.js.

Registrieren von Zertifikat-Bundles in Node.jsDie standardmäßigen Vertrauensspeicher von Node.js enthalten die Zertifikate, die für den Zugriff aufAWS-Services benötigt werden. In einigen Fällen könnte es vorteilhaft sein, nur eine bestimmte Gruppe vonZertifikaten einzuschließen.

In diesem Beispiel wird ein bestimmtes Zertifikat auf der Festplatte verwendet, mit dem ein https.Agenterstellt wird, der alle Verbindungen ablehnt, die nicht über das vorgesehene Zertifikat verfügen. Der neuerstellte https.Agent wird anschließend zur Aktualisierung der SDK-Konfiguration verwendet.

46

Page 53: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Überlegungen zum Browser-Skript

var fs = require('fs');var https = require('https');var certs = [ fs.readFileSync('/path/to/cert.pem')]; AWS.config.update({ httpOptions: { agent: new https.Agent({ rejectUnauthorized: true, ca: certs }) }});

Überlegungen zum Browser-SkriptIn den folgenden Themen werden spezielle Überlegungen zur Verwendung des AWS SDK für JavaScript inBrowser-Skripts besprochen.

Themen• Erstellen des SDK für Browser (p. 47)• Cross-Origin Resource Sharing (CORS) (p. 50)

Erstellen des SDK für BrowserDas SDK für JavaScript wird als JavaScript-Datei bereitgestellt und unterstützt einen Standardsatz vonServices. Diese Datei wird in der Regel mithilfe eines <script>-Tags in Browser-Skripts geladen, das dasgehostete SDK-Paket referenziert. Möglicherweise benötigen Sie Unterstützung für andere Services als dieim Standardsatz enthaltenen Services oder müssen das SDK auf andere Weise anpassen.

Wenn Sie mit dem SDK außerhalb einer Umgebung arbeiten, die CORS in Ihrem Browser erzwingt, undwenn Sie auf alle Services, die vom SDK für JavaScript bereitgestellt werden, zugreifen möchten, könnenSie durch lokales Klonen des Repositorys eine benutzerdefinierte Kopie des SDK erstellen und daraufdie gleichen Build-Tools ausführen, die die standardmäßige gehostete Version des SDK erstellt haben. Inden folgenden Abschnitten werden die Schritte erklärt, anhand derer das SDK zusammen mit zusätzlichenServices und API-Versionen erstellt werden kann.

Themen• Verwenden des SDK-Builders, um das SDK für JavaScript zu erstellen (p. 47)• Verwenden der CLI zum Erstellen des SDK für JavaScript (p. 48)• Erstellen von bestimmten Services und API-Versionen (p. 49)• Erstellen des SDK als Abhängigkeit mit Browserify (p. 49)

Verwenden des SDK-Builders, um das SDK für JavaScript zuerstellenAm einfachsten erstellen Sie Ihren eigenen Build des AWS SDK für JavaScript, indem Sie dieWebanwendung des SDK-Builders unter https://sdk.amazonaws.com/builder/js Web-Anwendungverwenden. Verwenden Sie den SDK-Builder, um die Services und deren API-Versionen, die in Ihrem Buildeingeschlossen werden sollen, anzugeben.

47

Page 54: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Erstellen des SDK für Browser

Wählen Sie zu Beginn Select all services (Alle Services auswählen) oder Select Standard Services(Standard-Services auswählen) aus. Hier haben Sie die Möglichkeit, Services hinzuzufügen oder zuentfernen. Wählen Sie Development (Entwicklung) aus, wenn Sie einen besser lesbaren Code wünschen,oder Minified (Minimiert), um einen minimierten Build bereitzustellen. Nachdem Sie die gewünschtenServices und Versionen ausgewählt haben, wählen Sie Build aus, um Ihr benutzerdefiniertes SDK zuerstellen und herunterzuladen.

Verwenden der CLI zum Erstellen des SDK für JavaScriptBevor Sie das SDK für JavaScript mithilfe der AWS CLI erstellen können, müssen Sie zunächst das Git-Repository klonen, das die SDK-Quelle enthält. Git und Node.js müssen auf Ihrem Computer installiert sein.

Klonen Sie zunächst das Repository von GitHub und ändern Sie das Verzeichnis in das folgendeVerzeichnis:

git clone git://github.com/aws/aws-sdk-jscd aws-sdk-js

Nachdem Sie das Repository geklont haben, laden Sie das Abhängigkeitsmodul für das SDK und dasBuild-Tool herunter:

npm install

Sie können jetzt eine verpackte Version des SDK erstellen.

Die Erstellung von der Befehlszeile

Das Builder-Tool befindet sich hier: dist-tools/browser-builder.js. Führen Sie dieses Skript aus,indem Sie Folgendes eingeben:

node dist-tools/browser-builder.js > aws-sdk.js

Dieser Befehl erstellt die aws-sdk.js-Datei. Diese Datei ist unkomprimiert. Standardmäßig enthält diesesPaket nur den Standardsatz an Services.

Minimierte Build-Ausgabe

Um die Datenmenge im Netzwerk zu reduzieren, können JavaScript-Dateien komprimiert werden. DieserProzess wird auch als minification (Minimierung) bezeichnet. Bei der Minimierung werden Kommentare,überflüssige Leerzeichen und andere Zeichen entfernt, die die Lesbarkeit unterstützen, jedoch keineAuswirkungen auf die Ausführung des Codes haben. Das Builder-Tool kann unkomprimierte oder minimiertAusgaben generieren. Um Ihre Build-Ausgabe zu minimieren, legen Sie die Umgebungsvariable MINIFYfest:

48

Page 55: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Erstellen des SDK für Browser

MINIFY=1 node dist-tools/browser-builder.js > aws-sdk.js

Erstellen von bestimmten Services und API-VersionenSie können auswählen, welche Dienste im SDK erstellt werden sollen. Um die Services auszuwählen,geben Sie die Namen der Services durch Kommas getrennt als Parameter ein. Um beispielsweise nurAmazon S3 und Amazon EC2 zu erstellen, geben Sie den folgenden Befehl ein:

node dist-tools/browser-builder.js s3,ec2 > aws-sdk-s3-ec2.js

Indem Sie die Versionsbezeichnung nach dem Service-Namen hinzufügen, können Sie auch spezifischeAPI-Versionen des Services erstellen. Um beispielsweise beide API-Versionen von Amazon DynamoDB zuerstellen, verwenden Sie den folgenden Befehl:

node dist-tools/browser-builder.js dynamodb-2011-12-05,dynamodb-2012-08-10

Service-IDs und API-Versionen sind in den servicespezifischen Konfigurationsdateien unter https://github.com/aws/aws-sdk-js/tree/master/apis verfügbar.

Erstellen aller Services

Sie können alle Services und API-Versionen erstellen, indem Sie den all-Parameter verwenden:

node dist-tools/browser-builder.js all > aws-sdk-full.js

Erstellen bestimmter Services

Um die Auswahl der Services, die im Build eingeschlossen sein sollen, anzupassen, übergeben Sie dieUmgebungsvariable AWS_SERVICES an den Browserify-Befehl, der die Liste der gewünschten Servicesenthält. Im folgenden Beispiel werden die Services Amazon EC2, Amazon S3 und DynamoDB erstellt.

$ AWS_SERVICES=ec2,s3,dynamodb browserify index.js > browser-app.js

Erstellen des SDK als Abhängigkeit mit BrowserifyNode.js verfügt über einen modulbasierten Mechanismus, um Code und Funktionen von externenEntwicklern einzuschließen. Dieser modulare Ansatz wird von JavaScript nicht nativ unterstützt, wenn es inWeb-Browsern ausgeführt wird. Jedoch steht Ihnen mithilfe des Browserify-Tools der Node.js-Modulansatzzur Verfügung und Sie können Module verwenden, die im Browser für Node.js geschrieben wurden.Browserify erstellt die Modulabhängigkeiten für ein Browser-Skript in einer einzigen, geschlossenenJavaScript-Datei, die Sie im Browser verwenden können.

Sie können mithilfe von Browserify das SDK als Bibliotheksabhängigkeit für jedes Browser-Skript erstellen.Beispielsweise erfordert der folgende Node.js-Code das SDK:

var AWS = require('aws-sdk');var s3 = new AWS.S3();s3.listBuckets(function(err, data) { console.log(err, data); });

Dieses Beispiel kann mithilfe von Browserify in eine Browser-kompatible Version kompiliert werden:

$ browserify index.js > browser-app.js

49

Page 56: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Cross-Origin Resource Sharing (CORS)

Die Anwendung, einschließlich der SDK-Abhängigkeiten, wird dann im Browser mithilfe von browser-app.js zur Verfügung gestellt.

Weitere Informationen über Browserify finden Sie auf der Browserify-Website.

Cross-Origin Resource Sharing (CORS)Bei Cross-Origin Resource Sharing oder CORS handelt es sich um eine Sicherheitsfunktion der modernenWebbrowser. Es ermöglicht Webbrowsern zu verhandeln, welche Domänen Anforderungen von externenWebsites oder Services senden können. CORS ist ein wichtiger Aspekt bei der Entwicklung vonBrowseranwendungen mit dem AWS SDK für JavaScript, da die meisten Anforderungen an Ressourcenan eine externe Domäne, wie z. B. der Endpunkt für einen Webservice, gesendet werden. Wenn IhreJavaScript-Umgebung die CORS-Sicherheit erzwingt, müssen Sie CORS mit dem Service konfigurieren.

Ob die Freigabe von Ressourcen in einer ursprungsübergreifenden Anforderung zulässig ist, bestimmtCORS basierend auf:

• Der spezifischen Domäne, die die Anforderung sendet• Dem Typ der HTTP-Anforderung, die gesendet wird (GET, PUT, POST, DELETE usw.)

So funktioniert CORSIm einfachsten Fall sendet Ihr Browser-Skript eine GET-Anforderung für eine Ressource von einemServer in einer anderen Domäne. Abhängig von der CORS-Konfiguration dieses Servers, wenn dieAnforderung von einer Domäne stammt, die berechtigt ist, GET-Anforderungen abzusenden, reagiert derursprungsübergreifende Server, indem er die angeforderte Ressource zurück gibt.

Wenn entweder die anfordernde Domäne oder der Typ der HTTP-Anforderung nicht autorisiert ist, wirddie Anforderung abgelehnt. CORS jedoch ermöglicht ein Preflight der Anforderung, bevor sie tatsächlichabgesendet wird. In diesem Fall wird eine Preflight-Anforderung ausgeführt, in der die OPTIONS-Zugriffsanforderungsoperation gesendet wird. Wenn die CORS-Konfiguration des ursprungsübergreifendenServers Zugriff auf die anfordernde Domäne gewährt, sendet der Server eine Preflight-Antwort zurück,die alle HTTP-Anforderungstypen aufführt, die die anfordernde Domäne für die angeforderte Ressourcevornehmen kann.

Ist die CORS-Konfiguration erforderlichAmazon S3-Buckets benötigen die CORS-Konfiguration, bevor Sie Operationen für sie durchführenkönnen. In einigen JavaScript-Umgebungen wird CORS möglicherweise nicht erzwungen und daher istdas Konfigurieren von CORS nicht erforderlich. Beispiel: Wenn Sie Ihre Anwendung aus einem Amazon

50

Page 57: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Cross-Origin Resource Sharing (CORS)

S3-Bucket hosten und auf Ressourcen aus *.s3.amazonaws.com oder einem anderen spezifischenEndpunkt zugreifen, greifen Ihre Anforderungen nicht auf eine externe Domäne zu. Aus diesem Grundbenötigt diese Konfiguration kein CORS. In diesem Fall wird CORS immer noch für andere Services alsAmazon S3 verwendet.

Konfigurieren von CORS für einen Amazon S3-BucketSie können einen Amazon S3-Bucket zur Verwendung von CORS in der Amazon S3-Konsolekonfigurieren.

1. Suchen Sie in der Amazon S3-Konsole nach dem Bucket, den Sie konfigurieren möchten, undaktivieren Sie das entsprechende Kontrollkästchen.

2. Wählen Sie im Popup-Dialog Permissions (Berechtigungen) aus.

3. Klicken Sie in der Registerkarte Permission (Berechtigung) auf die Option CORS Configuration(CORS-Konfiguration).

4. Geben Sie Ihre CORS-Konfiguration in den CORS Configuration Editor (CORS-Konfigurationseditor)ein und klicken Sie dann auf Save (Speichern).

Eine CORS-Konfiguration ist eine XML-Datei mit einer Reihe von Regeln innerhalb eines <CORSRule>.Eine Konfiguration kann bis zu 100 Regeln enthalten. Eine Regel wird durch eines der folgenden Tagsdefiniert:

• <AllowedOrigin>, das Domänenursprünge angibt, denen Sie erlauben, domänenübergreifendeAnforderungen zu senden.

• <AllowedMethod>, das einen Typ der Anforderung angibt, den Sie (GET, PUT, POST, DELETE,HEAD) in domänenübergreifenden Anforderungen erlauben.

• <AllowedHeader>, das die Header angibt, die in einer Preflight-Anforderung zulässig sind.

Beispiele für Konfigurationen finden Sie unter Wie konfiguriere ich CORS für meinen Bucket? imEntwicklerhandbuch für Amazon Simple Storage Service.

CORS-KonfigurationsbeispielDas folgende CORS-Konfigurationsbeispiel ermöglicht Benutzern das Anzeigen, Hinzufügen, Entfernenoder Aktualisieren von Objekten innerhalb eines Buckets aus der Domäne example.org, aber es wirdempfohlen, dass Sie <AllowedOrigin> auf die Domäne Ihrer Website anwenden. Sie können "*"angeben, sodass jeder Ursprung zulässig ist.

51

Page 58: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Bündeln mit Webpack

<?xml version="1.0" encoding="UTF-8"?><CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <CORSRule> <AllowedOrigin>https://example.org</AllowedOrigin> <AllowedMethod>HEAD</AllowedMethod> <AllowedMethod>GET</AllowedMethod> <AllowedMethod>PUT</AllowedMethod> <AllowedMethod>POST</AllowedMethod> <AllowedMethod>DELETE</AllowedMethod> <AllowedHeader>*</AllowedHeader> <ExposeHeader>ETag</ExposeHeader> <ExposeHeader>x-amz-meta-custom-header</ExposeHeader> </CORSRule></CORSConfiguration>

Diese Konfiguration autorisiert den Benutzer nicht, Aktionen für den Bucket auszuführen. Sie aktiviertdas Sicherheitsmodell des Browsers, um eine Anforderung an Amazon S3 zu gestatten. Berechtigungenmüssen über Bucket-Berechtigungen oder IAM-Rollenberechtigungen konfiguriert werden.

Sie können ExposeHeader verwenden, damit das SDK Antwort-Header lesen kann, die von Amazon S3zurückgegeben werden. Wenn Sie beispielsweise den ETag-Header aus einem PUT- oder mehrteiligenUpload lesen möchten, müssen Sie das ExposeHeader-Tag in Ihrer Konfiguration einschließen, wie imvorherigen Beispiel gezeigt. Das SDK kann nur auf Header zugreifen, die über die CORS-Konfigurationbereitgestellt werden. Wenn Sie Metadaten für das Objekt festlegen, werden Werte als Header mit demPräfix x-amz-meta- zurückgegeben, wie z. B. x-amz-meta-my-custom-header, und müssen auch aufdie gleiche Weise bereitgestellt werden.

Bündeln von Anwendungen mit WebpackWebanwendungen in Browser-Skripts oder die Verwendung von Codemodulen von Node.js erstelltAbhängigkeiten. Diese Codemodule können eigene Abhängigkeiten haben, was zu einer Sammlung vonmiteinander verbundenen Modulen führt, die Ihre Anwendung benötigt, um zu funktionieren. Zum Verwaltenvon Abhängigkeiten können Sie einen Modulpacker wie Webpack verwenden.

Der Webpack-Modulpacker analysiert den Code Ihrer Anwendung. Dabei sucht er nach import- oderrequire-Anweisungen, um Pakete zu erstellen, die alle erforderlichen Komponenten für Ihre Anwendungenthalten, damit sie problemlos über eine Webseite bereitgestellt werden können. Das SDK für JavaScriptkann als eine der Abhängigkeiten in Webpack einbezogen werden, die im Ausgabepaket eingeschlossenwerden sollen.

52

Page 59: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Installieren von Webpack

Weitere Informationen zu Webpack finden Sie auf der Seite zum Webpack-Modulpacker auf GitHub.

Installieren von WebpackDamit Sie den Webpack-Modulpacker installieren können, müssen Sie zuerst npm, den Node.js-Paketmanager, installieren. Geben Sie den folgenden Befehl ein, um die Webpack-CLI und das JavaScript-Modul zu installieren.

npm install webpack

Möglicherweise müssen Sie auch ein Webpack-Plug-in installieren, um JSON-Dateien laden zu können.Geben Sie den folgenden Befehl ein, um das JSON-Loader-Plug-in zu installieren.

npm install json-loader

Konfigurieren von WebpackStandardmäßig sucht Webpack nach einer JavaScript-Datei mit dem Namen webpack.config.jsim Root-Verzeichnis Ihres Projekts. Diese Datei enthält Ihre Konfigurationsoptionen. Hier finden Sie einBeispiel für eine webpack.config.js-Konfigurationsdatei.

// Import path for resolving file pathsvar path = require('path');module.exports = { // Specify the entry point for our app. entry: [ path.join(__dirname, 'browser.js') ], // Specify the output file containing our bundled code output: { path: __dirname, filename: 'bundle.js' }, module: { /** * Tell webpack how to load 'json' files. * When webpack encounters a 'require()' statement * where a 'json' file is being imported, it will use * the json-loader. */ loaders: [ { test: /\.json$/, loaders: ['json'] } ] }}

In diesem Beispiel ist browser.js als Eintrittspunkt angegeben. Der Eintrittspunkt ist die Datei, bei derWebpack die Suche nach importierten Modulen beginnt. Der Name für die Ausgabedatei ist als bundle.jsangegeben. Diese Ausgabedatei enthält den gesamten JavaScript-Code, der für die Ausführung derAnwendung erforderlich ist. Wenn der im Eintrittspunkt angegebene Code weitere Module wie z. B.das SDK für JavaScript importiert oder benötigt, wird dieser Code gebündelt, ohne in der Konfigurationangegeben werden zu müssen.

Die Konfiguration im vorher installierten json-loader-Plug-in gibt Webpack an, wie JSON-Dateienimportiert werden. Standardmäßig unterstützt Webpack nur JavaScript. Es verwendet jedoch Loader, um

53

Page 60: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Ausführen von Webpack

Unterstützung für den Import anderer Dateitypen hinzuzufügen. Da das SDK für JavaScript eine Vielzahlvon JSON-Dateien verwendet, gibt Webpack beim Generieren des Pakets einen Fehler aus, wenn json-loader nicht enthalten ist.

Ausführen von WebpackZum Erstellen einer Anwendung, die Webpack verwendet, fügen Sie Folgendes zum scripts-Objekt inIhrer package.json-Datei hinzu.

"build": "webpack"

Hier finden Sie eine beispielhafte package.json-Datei, die zeigt, wie Webpack hinzugefügt wird.

{ "name": "aws-webpack", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "build": "webpack" }, "author": "", "license": "ISC", "dependencies": { "aws-sdk": "^2.6.1" }, "devDependencies": { "json-loader": "^0.5.4", "webpack": "^1.13.2" }}

Geben Sie den folgenden Befehl ein, um die Anwendung zu erstellen.

npm run build

Der Webpack-Modulpacker generiert dann die JavaScript-Datei, die Sie im Root-Verzeichnis Ihres Projektsangegeben haben.

Verwenden des Webpack-PaketsUm das Paket in einem Browser-Skript zu verwenden, können Sie es mithilfe eines <script>-Tagsintegrieren, wie im folgenden Beispiel gezeigt.

<!DOCTYPE html><html> <head> <title>AWS SDK with webpack</title> </head> <body> <div id="list"></div> <script src="bundle.js"></script> </body></html>

54

Page 61: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Importieren von einzelnen Services

Importieren von einzelnen ServicesEiner der Vorteile von Webpack besteht darin, dass es die Abhängigkeiten in Ihrem Code analysiert undnur den für Ihre Anwendung erforderlichen Code bündelt. Wenn Sie das SDK für JavaScript verwenden,kann das Bündeln nur der von Ihrer Anwendung tatsächlich genutzten Teile des SDKs die Größe derWebpack-Ausgabe deutlich reduzieren.

Betrachten Sie das folgende Codebeispiel zum Erstellen eines Amazon S3-Service-Objekts.

// Import the AWS SDKvar AWS = require('aws-sdk');

// Set credentials and Region// This can also be done directly on the service clientAWS.config.update({region: 'us-west-1', credentials: {YOUR_CREDENTIALS}});

var s3 = new AWS.S3({apiVersion: '2006-03-01'});

Mit der require()-Funktion wird das gesamte SDK angegeben. Ein mit diesem Code generiertesWebpack-Paket umfasst das vollständige SDK. Dieses ist jedoch nicht erforderlich, wenn nur die AmazonS3-Client-Klasse verwendet wird. Die Größe des Pakets ist dann wesentlich kleiner, wenn nur der Teil desSDKs aufgenommen wird, der für den Amazon S3-Service erforderlich ist. Auch die Konfiguration erfordertnicht das vollständige SDK, da Sie die Konfigurationsdaten im Amazon S3-Service-Objekt festlegenkönnen.

Im Folgenden sehen Sie, wie derselbe Code aussieht, wenn er lediglich den Amazon S3-Anteil des SDKsumfasst.

// Import the Amazon S3 service clientvar S3 = require('aws-sdk/clients/s3'); // Set credentials and Regionvar s3 = new S3({ apiVersion: '2006-03-01', region: 'us-west-1', credentials: {YOUR_CREDENTIALS} });

Bündeln für Node.jsSie können mit Webpack Pakete generieren, die in Node.js ausgeführt werden, indem Sie es als Ziel in derKonfiguration angeben.

target: "node"

Dies ist nützlich, wenn eine Node.js-Anwendung in einer Umgebung ausgeführt wird, in der Speicherplatzbegrenzt ist. Hier sehen Sie ein Beispiel für eine webpack.config.js-Konfiguration mit der Angabe vonNode.js als Ausgabeziel.

// Import path for resolving file pathsvar path = require('path');module.exports = { // Specify the entry point for our app entry: [ path.join(__dirname, 'node.js') ], // Specify the output file containing our bundled code

55

Page 62: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2SDK-Metriken

output: { path: __dirname, filename: 'bundle.js' }, // Let webpack know to generate a Node.js bundle target: "node", module: { /** * Tell webpack how to load JSON files. * When webpack encounters a 'require()' statement * where a JSON file is being imported, it will use * the json-loader */ loaders: [ { test: /\.json$/, loaders: ['json'] } ] }}

SDK-Metriken im AWS SDK für JavaScriptAWS SDK-Metriken für Enterprise Support (SDK-Metriken) ermöglicht Enterprise-Kunden die Erfassungvon Metriken aus AWS SDKs auf Hosts und Clients, die für AWS Enterprise Support freigegebensind. SDK-Metriken stellt Informationen bereit, die die Erkennung und Diagnose von Problemen beiVerbindungen mit AWS-Services für AWS Enterprise Support-Kunden unterstützen.

Die auf den einzelnen Hosts erfassten telemetrischen Daten werden über UDP an 127.0.0.1 (localhost)weitergeleitet. Hier aggregiert der Amazon CloudWatch-Agent die Daten und sendet sie an den SDK-Metriken-Service. Daher muss der CloudWatch-Agent zu Ihrer Instance hinzugefügt werden, um Metrikenempfangen zu können.

Weitere Informationen zu SDK-Metriken finden Sie im Amazon CloudWatch-Benutzerhandbuch.

In den folgenden Themen wird beschrieben, wie Sie SDK-Metriken für das SDK für JavaScript konfigurierenund verwalten.

Themen• Autorisieren von SDK-Metriken zum Erfassen und Senden von Metriken (p. 56)• Einrichten von SDK-Metriken für das SDK für JavaScript (p. 57)• Aktivieren von SDK-Metriken für das AWS SDK für JavaScript (p. 57)• Aktivieren der clientseitigen Überwachung mit Scope (p. 58)• Aktualisieren eines CloudWatch-Agenten (p. 59)• Deaktivieren von SDK-Metriken (p. 60)• Definitionen für SDK-Metriken (p. 60)

Autorisieren von SDK-Metriken zum Erfassen undSenden von MetrikenEnterprise-Kunden, die Metriken aus AWS SDKs mithilfe von AWS SDK-Metriken für Enterprise Supporterfassen möchten, müssen eine AWS Identity and Access Management (IAM)-Rolle erstellen, die dem

56

Page 63: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Einrichten von SDK-Metriken für das SDK für JavaScript

CloudWatch-Agenten die Berechtigung zum Sammeln von Daten aus ihrer Amazon Elastic Compute Cloud(Amazon EC2)-Instance oder Produktionsumgebung gewährt.

Details zum Erstellen einer IAM-Richtlinie und -Rolle für den Zugriff auf SDK-Metriken finden Sie unter IAM-Berechtigungen für SDK-Metriken im Amazon CloudWatch-Benutzerhandbuch.

Einrichten von SDK-Metriken für das SDK fürJavaScriptDie folgenden Schritte zeigen die Einrichtung von SDK-Metriken für das AWS SDK für JavaScript. DieseSchritte gelten für eine Amazon EC2-Instance, die Amazon Linux für eine Client-Anwendung ausführt, diedas SDK für JavaScript verwendet. SDK-Metriken ist auch für Ihre Produktionsumgebungen verfügbar,wenn Sie dies während der Konfiguration des SDK für JavaScript aktivieren.

Um SDK-Metriken zu verwenden, müssen Sie die jeweils aktuelle Version des CloudWatch-Agentenausführen. Weitere Informationen zur Konfiguration des CloudWatch-Agenten für SDK-Metriken finden Sieim Amazon CloudWatch-Benutzerhandbuch.

So richten Sie SDK-Metriken mittels des SDK für JavaScript ein

1. Erstellen Sie eine Anwendung mit einem AWS SDK für JavaScript-Client, um einen AWS-Service zuverwenden.

2. Hosten Sie Ihr Projekt auf einer Amazon EC2-Instance oder in Ihrer lokalen Umgebung.3. Installieren und verwenden Sie die jeweils aktuelle Version des SDK für JavaScript.4. Installieren und konfigurieren Sie einen CloudWatch-Agenten auf einer Amazon EC2-Instance oder in

Ihrer lokalen Umgebung.5. Autorisieren Sie SDK-Metriken zum Erfassen und Senden von Metriken.6. Aktivieren Sie SDK-Metriken für das SDK für JavaScript. (p. 57)

Weitere Informationen finden Sie auch unter:

• Aktualisieren eines CloudWatch-Agenten (p. 59)• Deaktivieren von SDK-Metriken (p. 60)

Aktivieren von SDK-Metriken für das AWS SDK fürJavaScriptStandardmäßig ist SDK-Metriken deaktiviert und der Port auf 31000 festgelegt. Die Standardparameterwerden im Folgenden beschrieben.

//default values[ 'enabled' => false, 'port' => 31000,

]

Die Aktivierung von SDK-Metriken ist von der Konfiguration Ihrer Anmeldeinformationen für einen AWS-Service unabhängig.

Sie können SDK-Metriken aktivieren, indem Sie Umgebungsvariablen festlegen (p. 58) oder die AWSShared Config-Datei (p. 58) verwenden.

57

Page 64: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Aktivieren der clientseitigen Überwachung mit Scope

Option 1: Festlegen von UmgebungsvariablenWenn AWS_CSM_ENABLED nicht festgelegt ist, prüft das SDK im in der Umgebungsvariablen unterAWS_PROFILE angegebene Profil, ob SDK-Metriken aktiviert ist. Die Standardeinstellung ist false.

Um SDK-Metriken zu aktivieren, fügen Sie Ihren Umgebungsvariablen Folgendes hinzu.

export AWS_CSM_ENABLED=true

Note

• Es sind weitere Konfigurationseinstellungen (p. 59) verfügbar.• Die Aktivierung von SDK-Metriken ist von der Konfiguration Ihrer Anmeldeinformationen für

einen AWS-Service unabhängig.

Option 2: Verwenden der AWS Shared Config-DateiWenn in den Umgebungsvariablen keine CSM-Konfiguration gefunden wird, überprüft das SDK das Feld fürIhr AWS-Standardprofil. Wenn AWS_DEFAULT_PROFILE auf einen anderen Wert als default festgelegtist, aktualisieren Sie dieses Profil.

Um SDK-Metriken zu aktivieren, fügen Sie csm_enabled zur Shared Config-Datei in ~/.aws/confighinzu.

[default]csm_enabled = true

[profile aws_csm]csm_enabled = true

Note

• Es sind weitere Konfigurationseinstellungen (p. 59) verfügbar.• Die Aktivierung von SDK-Metriken ist von der Konfiguration Ihrer Anmeldeinformationen

für einen AWS-Service unabhängig. Sie können für die Authentifizierung ein anderes Profilverwenden.

Aktivieren der clientseitigen Überwachung mit ScopeZusätzlich zum Aktivieren von SDK-Metriken über eine Umgebungsvariable oder Config-Datei wie obengezeigt können Sie auch die Erfassung von Metriken für einen bestimmten Bereich aktivieren.

Die folgenden Szenarien zeigen die Bereiche, für die Sie SDK-Metriken aktivieren können.

Sie können die clientseitige Überwachung für alle Service-Clients wie folgt in der Service-Konfigurationaktivieren:

const AWS = require('aws-sdk');const s3 = new AWS.S3({clientSideMonitoring: true});

Für Unterklassen wie AWS.S3.ManagedUpload und AWS.DynamoDB.DocumentClient können Sie dieclientseitige Überwachung wie im folgenden Beispiel gezeigt aktivieren.

const AWS = require('aws-sdk');

58

Page 65: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Aktualisieren eines CloudWatch-Agenten

const documentClient = new AWS.DynamoDB.DocumentClient();documentClient.service.config.update({clientSideMonitoring: true});

Sie können die clientseitige Überwachung auch für alle AWS-Services aktivieren:

AWS.config.clientSideMonitoring = true;

Alternativ können Sie die clientseitige Überwachung für alle Clients aktivieren, die aus dem spezifischenService erstellt wurden. Beispiel:

AWS.S3.config.clientSideMonitoring = true;

Aktualisieren eines CloudWatch-AgentenUm Änderungen am Port vorzunehmen, müssen Sie den Wert festlegen (p. 59) und dann alle AWS-Aufgaben neu starten (p. 59), die derzeit aktiv sind.

Die meisten Services verwenden den Standardport. Wenn Ihr Service jedoch eine eindeutige Port-IDbenötigt, fügen Sie diese zu den Umgebungsvariablen des Hosts oder der AWS Shared Config-Datei hinzu.

Hinzufügen einer -Port-IDOption 1: Festlegen von UmgebungsvariablenFügen Sie den Umgebungsvariablen des Hosts eine eindeutige Port-ID(AWS_CSM_PORT=[some_port_number]) hinzu.

Zum Beispiel:

export AWS_CSM_ENABLED=true

export AWS_CSM_PORT=1234

Option 2: Verwenden eines AWS Shared Config-DateiFügen Sie der AWS Shared Config-Datei unter ~/.aws/config eine eindeutige Port-ID (csm_port =[some_port_number]) hinzu.

Zum Beispiel:

[default]csm_enabled = false

csm_port = 1234

[profile aws_csm]csm_enabled = false

csm_port = 1234

Neustart von SDK-MetrikenUm einen Auftrag neu zu starten, führen Sie die folgenden Befehle aus.

$ amazon-cloudwatch-agent-ctl –a stop;

59

Page 66: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Deaktivieren von SDK-Metriken

$ amazon-cloudwatch-agent-ctl –a start;

Deaktivieren von SDK-MetrikenUm SDK-Metriken zu deaktivieren, legen Sie (p. 60) Sie in Ihren Umgebungsvariablen oder IhrerAWS Shared Config-Datei unter ~/.aws/config csm_enabled auf false fest. Stoppen und startenSie (p. 60) anschließend Ihren CloudWatch-Agenten neu, damit die Änderungen wirksam werdenkönnen.

Festlegen von csm_enabled auf falseOption 1: Festlegen von Umgebungsvariablen

export AWS_CSM_ENABLED=false

Option 2: Verwenden der AWS Shared Config-DateiEntfernen Sie csm_enabled aus den Profilen in Ihrer AWS Shared Config-Datei unter ~/.aws/config.

Note

Umgebungsvariablen überschreiben die AWS Shared Config-Datei. Wenn SDK-Metriken in denUmgebungsvariablen aktiviert ist, bleiben SDK-Metriken aktiviert.

[default]csm_enabled = false

[profile aws_csm]csm_enabled = false

Stoppen Sie SDK-Metriken und starten Sie den CloudWatch-Agenten neu.Um SDK-Metriken zu deaktivieren, verwenden Sie den folgenden Befehl, um den CloudWatch-Agenten zustoppen.

$ sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a stop && echo "Done"

Wenn Sie andere CloudWatch-Funktionen verwenden, starten Sie den CloudWatch-Agenten mit demfolgenden Befehl neu.

$ amazon-cloudwatch-agent-ctl –a start;

Definitionen für SDK-MetrikenUm die Ergebnisse zu interpretieren, können Sie die folgenden Beschreibungen von SDK-Metrikenverwenden. Im Allgemeinen sind diese Metriken zur Überprüfung zusammen mit Ihrem Technical AccountManager während der regelmäßigen geschäftlichen Besprechungen verfügbar.

AWS Support-Ressourcen und Ihr Technical Account Manager sollten Zugriff auf SDK-Metriken-Datenhaben, um Sie bei der Behebung von Problemen unterstützen zu können. Daten, die verwirrend oderunerwartet sind, die Leistung Ihrer Anwendung anscheinend jedoch nicht beeinträchtigen, sollten Siejedoch am besten während geplanter geschäftlicher Besprechungen zur Sprache bringen.

60

Page 67: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Definitionen für SDK-Metriken

Metrik: CallCount

Definition Die Gesamtzahl der erfolgreichen oderfehlgeschlagenen API-Aufrufe aus Ihrem Code anAWS-Services.

Verwendung Verwenden Sie dies als Basis für die Korrelierungmit anderen Metriken wie Fehlern oderAblehnungen.

Metrik: ClientErrorCount

Definition Die Anzahl der API-Aufrufe, die mit Client-Fehlern(HTTP-4xx-Antwortcodes) fehlgeschlagen sind.

Beispiele: Ablehnung, Zugriff verweigert, S3-Bucketnicht vorhanden und Ungültiger Parameterwert.

Verwendung Mit Ausnahme bestimmter Fälle im Zusammenhangmit Ablehnungen (z. B. bei Ablehnungen aufgrundeines Grenzwerts, der erhöht werden muss) kanndiese Metrik auf ein Problem in Ihrer Anwendunghinweisen, das behoben werden muss.

Metrik: ConnectionErrorCount

Definition Die Anzahl der API-Aufrufe, die aufgrund vonFehlern bei der Verbindung mit dem Servicefehlschlagen. Dies kann durch Netzwerkproblemezwischen der Kundenanwendung und AWS-Services verursacht werden, einschließlich LoadBalancern, DNS-Fehlern und Transit-Anbietern. Ineinigen Fällen können AWS-Probleme zu diesemFehler führen.

Verwendung Mit dieser Metrik können Sie feststellen, obProbleme anwendungsspezifisch sind oder durchIhre Infrastruktur bzw. Ihr Netzwerk verursachtwerden. Ein hoher ConnectionErrorCount-Wert könnte auch auf kurze Timeout-Werte für API-Aufrufe hinweisen.

Metrik: ThrottleCount

Definition Die Anzahl der API-Aufrufe, die aufgrund derAblehnung durch AWS-Services fehlschlagen.

Verwendung Mit dieser Metrik können Sie feststellen, obIhre Anwendung Ablehnungslimits erreichthat, und die Ursache für Wiederholungen undAnwendungslatenz ermitteln. Sie sollten Aufrufeüber ein Zeitfenster verteilen, statt sie zu stapeln.

61

Page 68: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Definitionen für SDK-Metriken

Metrik: ServerErrorCount

Definition Die Anzahl der API-Aufrufe aus AWS-Services,die aufgrund von Serverfehlern (HTTP-5xx-Antwortcodes) fehlschlagen. Dies wird in der Regeldurch AWS-Services verursacht.

Verwendung Stellen Sie die Ursache für SDK-Wiederholungenoder -Latenzen fest. Diese Metrik weist nicht immerdarauf hin, dass AWS-Services verantwortlich sind,da einige AWS-Teams Latenz als eine HTTP 503-Antwort klassifizieren.

Metrik: EndToEndLatency

Definition Die Gesamtzeit, die Ihre Anwendung benötigt,um einen Aufruf mit dem AWS-SDK zu starten,einschließlich Wiederholungen. Andersausgedrückt: unabhängig davon, ob diesnach mehreren Versuchen erfolgreich ist odersobald ein Aufruf aufgrund eines Fehlers ohneWiederholungsmöglichkeit fehlschlägt.

Verwendung Stellen Sie fest, welchen Anteil AWS-API-Aufrufean der Gesamtlatenz Ihrer Anwendung haben. Einehöhere Latenz als erwartet kann durch Problememit dem Netzwerk, der Firewall oder anderenKonfigurationseinstellungen verursacht werden. Siekann auch durch SDK-Wiederholungsversuchenverursacht werden.

62

Page 69: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2

Arbeiten mit Services im SDK fürJavaScript

Das AWS SDK für JavaScript bietet Zugriff auf Services, die es durch eine Sammlung von Client-Klassenunterstützt. Von diesen Client-Klassen erstellen Sie Service-Schnittstellenobjekte, die allgemein alsService-Objekte bezeichnet werden. Jeder unterstützte AWS-Service verfügt über mindestens eine Client-Klasse, die Low-Level-APIs für die Verwendung von Servicefunktionen und -ressourcen bietet. So stehenz. B. Amazon DynamoDB-APIs über die AWS.DynamoDB-Klasse zur Verfügung.

Die über das SDK für JavaScript bereitgestellten Services folgen dem Anforderungs- und Antwortmuster,um Nachrichten mit aufrufenden Anwendungen auszutauschen. In diesem Muster sendet der Code,der einen Service aufruft, eine HTTP-/HTTPS-Anforderung an einen Endpunkt für den Service. DieAnforderung enthält die erforderlichen Parameter für einen erfolgreichen Aufruf der spezifischen Funktion.Der Service, der aufgerufen wird, generiert eine Antwort, die an den Anforderer zurückgesendet wird.Die Antwort enthält Daten, wenn die Operation erfolgreich war, oder Fehlerinformationen, wenn sie nichterfolgreich war.

Das Aufrufen eines AWS-Services umfasst den vollständigen Anforderungs- und Antwort-Lebenszykluseiner Operation für ein Service-Objekt, einschließlich aller Wiederholungsversuche. Eine Anforderung wirddurch das AWS.Request-Objekt im SDK gekapselt. Die Antwort wird im SDK durch das AWS.Response-Objekt gekapselt. Dieses wird vom Anforderer durch eine von mehreren Techniken bereitgestellt, wie z. B.einer Callback-Funktion oder einem JavaScript-Promise.

Themen• Erstellen und Aufrufen von Service-Objekten (p. 64)• Protokollieren von AWS SDK für JavaScript-Aufrufen (p. 66)• Asynchrones Aufrufen von Services (p. 67)• Verwenden des Response-Objekts (p. 76)• Arbeiten mit JSON (p. 78)

63

Page 70: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Erstellen und Aufrufen von Service-Objekten

Erstellen und Aufrufen von Service-ObjektenDie JavaScript-API unterstützt die am meisten verfügbaren AWS-Services. Jede Serviceklasse inder JavaScript-API bietet Zugriff auf alle API-Aufrufe in ihrem Service. Weitere Informationen zuServiceklassen, Operationen und Parametern in der JavaScript-API finden Sie in der API-Referenz.

Wenn Sie das SDK in Node.js verwenden, fügen Sie Ihrer Anwendung das SDK-Paket mit require hinzu,das Unterstützung für alle aktuellen Services bietet.

var AWS = require('aws-sdk');

Wenn Sie das SDK mit Browser-JavaScript einbinden möchten, können Sie das AWS-gehostete SDK-Paket in Ihre Browser-Skripts laden. Fügen Sie das folgende <script> Element hinzu, um das SDK-Pakezt zu laden:

<script src="https://sdk.amazonaws.com/js/aws-sdk-SDK_VERSION_NUMBER.min.js"></script>

Die aktuelle SDK_VERSION_NUMBER finden Sie in der API-Referenz für SDK für JavaScript bei https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/index.html.

Das standardmäßig gehostete SDK-Paket bietet Unterstützung für einen Teil der verfügbaren AWS-Services. Eine Liste der Standard-Services im gehosteten SDK-Paket für den Browser finden Sie imAbschnitt über Unterstützte Services in der API-Referenz. Sie können das SDK mit anderen Servicesverwenden, wenn die CORS-Sicherheitsüberprüfung deaktiviert ist. In diesem Fall können Sie einebenutzerdefinierte Version des SDKs erstellen, um die von Ihnen benötigten zusätzlichen Serviceseinzuschließen. Weitere Informationen zum Erstellen einer benutzerdefinierten Version des SDKs findenSie unter Erstellen des SDK für Browser (p. 47).

Laden einzelner Services mit der require-FunktionWenn Sie das SDK für JavaScript mit der require-Funktion wie zuvor gezeigt laden, wird das gesamte SDKin Ihren Code eingeschlossen. Sie können aber auch nur die einzelnen Services mit der require-Funktionladen, die von Ihrem Code verwendet werden. Betrachten Sie den folgenden Code zum Erstellen einesAmazon S3-Service-Objekts.

// Import the AWS SDKvar AWS = require('aws-sdk');

// Set credentials and Region// This can also be done directly on the service clientAWS.config.update({region: 'us-west-1', credentials: {YOUR_CREDENTIALS}});

var s3 = new AWS.S3({apiVersion: '2006-03-01'});

Im vorherigen Beispiel gibt die require-Funktion das gesamte SDK an. Die über das Netzwerk zutransportierende Codemenge und der Speichermehraufwand Ihres Codes würden deutlich geringerausfallen, wenn nur der Teil des SDKs eingeschlossen würde, der für den Amazon S3-Service erforderlichist. Um einen einzelnen Service zu laden, rufen Sie die require-Funktion wie beschrieben auf,einschließlich des Service-Konstruktors in Kleinbuchstaben.

require('aws-sdk/clients/SERVICE');

Nachfolgend sehen Sie, wie der Code zum Erstellen des vorherigen Amazon S3-Service-Objekts aussieht,wenn er nur den Amazon S3-Anteil des SDKs enthält.

64

Page 71: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Erstellen von Service-Objekten

// Import the Amazon S3 service clientvar S3 = require('aws-sdk/clients/s3'); // Set credentials and Regionvar s3 = new S3({ apiVersion: '2006-03-01', region: 'us-west-1', credentials: {YOUR_CREDENTIALS} });

Sie können nach wie vor auf den globalen AWS-Namespace zugreifen, ohne dass ihm alle Serviceszugewiesen sind.

require('aws-sdk/global');

Dies ist eine nützliche Technik, wenn dieselbe Konfiguration auf mehrere individuelle Services angewendetwerden soll, um z. B. dieselben Anmeldeinformationen allen Services bereitzustellen. Das Laden einzelnerServices mit der require-Funktion sollte die Ladezeit und die Speichernutzung in Node.js verringern. WennSie diesen Vorgang mit einem Bündelungs-Tool wie z. B. Browserify oder Webpack abgeschlossen haben,weist das SDK nur einen Bruchteil der vollständigen Größe auf, weil nur einzelne Service-Ergebnisse mitder require-Funktion geladen wurden. Dies hilft bei Umgebungen mit eingeschränktem Arbeitsspeicher-oder Festplattenspeicherplatz, wie z. B. einem IoT-Gerät oder in einer Lambda-Funktion.

Erstellen von Service-ObjektenDamit Sie auf Service-Funktionen über die JavaScript-API zugreifen können, müssen Sie zuerst einService-Objekt erstellen, über das Sie auf eine Reihe von Funktionen zugreifen können, die von derzugrunde liegenden Client-Klasse bereitgestellt werden. In der Regel wird für jeden Service eine Client-Klasse bereitgestellt. Manche Services verteilen den Zugriff auf ihre Funktionen jedoch auf mehrere Client-Klassen.

Zum Verwenden einer Funktion müssen Sie eine Instance der Klasse erstellen, die Zugriff auf dieseFunktion bietet. Im folgenden Beispiel wird gezeigt, wie Sie ein Service-Objekt für DynamoDB aus derAWS.DynamoDB-Client-Klasse erstellen können.

var dynamodb = new AWS.DynamoDB({apiVersion: '2012-08-10'});

Standardmäßig wird ein Service-Objekt mit den globalen Einstellungen konfiguriert, mit denen auch dasSDK konfiguriert wird. Sie können jedoch ein Service-Objekt mit Laufzeit-Konfigurationsdaten konfigurieren,die für das Service-Objekt spezifisch sind. Service-spezifische Konfigurationsdaten werden nach denglobalen Konfigurationseinstellungen angewendet.

Im folgenden Beispiel wird ein Amazon EC2-Service-Objekt erstellt und für eine bestimmte Regionkonfiguriert. Ansonsten verwendet es die globale Konfiguration.

var ec2 = new AWS.EC2({region: 'us-west-2', apiVersion: '2014-10-01'});

Es werden nicht nur servicespezifische Konfigurationen unterstützt, die auf einzelne Service-Objekteangewendet werden. Sie können auch servicespezifische Konfigurationen auf alle neu erstellten Service-Objekte einer bestimmten Klasse anwenden. Wenn Sie z. B. alle von der Amazon EC2-Klasse erstelltenService-Objekte so konfigurieren möchten, dass die Region USA West (Oregon) (us-west-2) verwendetwird, fügen Sie dem globalen Konfigurationsobjekt AWS.config Folgendes hinzu.

AWS.config.ec2 = {region: 'us-west-2', apiVersion: '2016-04-01'};

65

Page 72: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Sperren der API-Version eines Service-Objekts

Sperren der API-Version eines Service-ObjektsSie können ein Service-Objekt fest an eine bestimmte API-Version eines Service binden, indem Sie dieapiVersion-Option beim Erstellen des Objekts angeben. Im folgenden Beispiel wird ein DynamoDB-Service-Objekt erstellt, das fest an eine bestimmte API-Version gebunden ist.

var dynamodb = new AWS.DynamoDB({apiVersion: '2011-12-05'});

Weitere Informationen zum Sperren der API-Version eines Service-Objekts finden Sie unter Schützen derAPI-Versionen (p. 43).

Angeben von Service-ObjektparameternWenn Sie eine Methode eines Service-Objekts aufrufen, übergeben Sie die JSON-Parameter wie fürdie API erforderlich. Um z. B. in Amazon S3 ein Objekt für einen angegebenen Bucket und Schlüsselabzurufen, übergeben Sie die folgenden Parameter an die getObject-Methode. Weitere Informationenzum Übergeben von JSON-Parametern finden Sie unter Arbeiten mit JSON (p. 78).

s3.getObject({Bucket: 'bucketName', Key: 'keyName'});

Weitere Informationen zu Amazon S3-Parametern finden Sie unter Class: AWS.S3 in der API-Referenz.

Darüber hinaus können Sie Werte an einzelne Parameter binden, wenn ein Service-Objekt mit demparams-Parameter erstellt wird. Der Wert des params-Parameters von Service-Objekten ist eineZuordnung, mit der mindestens ein durch das Service-Objekt definierter Parameterwert angegeben wird.Das folgende Beispiel zeigt den Bucket-Parameter eines Amazon S3-Service-Objekts, das an einenBucket mit dem Namen myBucket gebunden wird.

var s3bucket = new AWS.S3({params: {Bucket: 'myBucket'}, apiVersion: '2006-03-01' });

Indem das Service-Objekt an einen Bucket gebunden wird, behandelt das s3bucket-Service-Objekt denmyBucket-Parameterwert als Standardwert, der nicht länger für nachfolgende Operationen angegebenwerden muss. Alle gebundenen Parameterwerte werden ignoriert, wenn das Objekt für Operationenverwendet wird, bei denen der Parameterwert nicht anwendbar ist. Sie können diesen gebundenenParameter beim Aufrufen des Service-Objekts überschreiben, indem Sie einen neuen Wert angeben.

var s3bucket = new AWS.S3({ params: {Bucket: 'myBucket'}, apiVersion: '2006-03-01' });s3bucket.getObject({Key: 'keyName'});// ...s3bucket.getObject({Bucket: 'myOtherBucket', Key: 'keyOtherName'});

Detaillierte Informationen zu den verfügbaren Parametern für die einzelnen Methoden finden Sie in der API-Referenz.

Protokollieren von AWS SDK für JavaScript-Aufrufen

Das AWS SDK für JavaScript verfügt über einen integrierten Logger. So können Sie API-Aufrufeprotokollieren, die Sie mit dem SDK für JavaScript ausführen.

Fügen Sie Ihrem Code die folgende Anweisung hinzu, um den Logger zu aktivieren und dieProtokolleinträge in der Konsole zu drucken.

66

Page 73: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwenden eines Drittanbieter-Loggers

AWS.config.logger = console;

Hier finden Sie ein Beispiel für die Protokollausgabe.

[AWS s3 200 0.185s 0 retries] createMultipartUpload({ Bucket: 'js-sdk-test-bucket', Key: 'issues_1704' })

Verwenden eines Drittanbieter-LoggersSie können auch einen Drittanbieter-Logger verwenden, sofern dieser über log()- oder write()-Operationen verfügt, um Daten in eine Protokolldatei oder auf einen Server zu schreiben. Sie müssen Ihrenbenutzerdefinierten Logger vorschriftsmäßig installieren und einrichten, bevor Sie ihn mit dem SDK fürJavaScript verwenden können.

Ein Logger, den Sie entweder in Browser-Skripts oder in Node.js nutzen können, ist logplease. In Node.jskönnen Sie logplease so konfigurieren, dass Protokolleinträge in einer Protokolldatei geschrieben werden.Sie können ihn auch mit webpack verwenden.

Legen Sie bei Verwendung eines Drittanbieter-Loggers alle Optionen fest, bevor Sie ihnAWS.Config.logger zuweisen. Der folgende Beispiel-Code gibt eine externe Protokolldatei an und legtdie Protokollebene für logplease fest.

// Require AWS Node.js SDKconst AWS = require('aws-sdk')// Require logpleaseconst logplease = require('logplease');// Set external log file optionlogplease.setLogfile('debug.log');// Set log levellogplease.setLogLevel('DEBUG');// Create loggerconst logger = logplease.create('logger name');// Assign logger to SDKAWS.config.logger = logger;

Weitere Informationen über logplease finden Sie unter logplease Simple JavaScript Logger auf GitHub.

Asynchrones Aufrufen von ServicesAlle über das SDK ausgeführten Anforderungen sind asynchron. Dies sollten Sie unbedingt beachten, wennSie Browser-Skripts schreiben. In einem Webbrowser ausgeführtes JavaScript hat in der Regel nur einenAusführungs-Thread. Nachdem Sie einen asynchronen Aufruf an einen AWS-Service durchgeführt haben,wird das Browser-Skript weiter ausgeführt, das dabei möglicherweise versucht, Code auszuführen, der vondiesem asynchronen Ergebnis abhängig ist, bevor es zurückgegeben wird.

Zur Durchführung asynchroner Aufrufe an einen AWS-Service gehört die Verwaltung solcher Aufrufe,sodass Ihr Code nicht versucht, Daten zu verwenden, bevor diese verfügbar sind. Die Themen in diesemAbschnitt erklären, wie wichtig es ist, asynchrone Aufrufe zu verwalten, und erläutern die verschiedenenVerwaltungstechniken im Detail.

Themen• Verwalten von asynchronen Aufrufen (p. 68)• Verwenden einer anonymen Callback-Funktion (p. 68)• Verwenden eines Anforderungsobjektereignis-Listeners (p. 69)• Verwenden von JavaScript-Promises (p. 73)

67

Page 74: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwalten von asynchronen Aufrufen

• Verwenden von async/await (p. 75)• Anforderungen mit einem Node.js-Stream-Objekt (p. 75)

Verwalten von asynchronen AufrufenBeispiel: Die Startseite einer E-Commerce-Website bietet wiederkehrenden Kunden die Möglichkeit, sichanzumelden. Die Kunden, die sich anmelden, profitieren u. a. davon, dass sich die Website nach derAnmeldung an ihre besonderen Präferenzen anpasst. Dafür ist Folgendes erforderlich:

1. Der Kunde muss sich anmelden und mit Benutzernamen und Passwort validiert werden.2. Die Präferenzen des Kunden werden von einer Kundendatenbank angefordert.3. Die Datenbank stellt die Präferenzen des Kunden bereit, mit denen die Website angepasst wird, bevor

die Seite geladen wird.

Wenn diese Aufgaben synchron ausgeführt werden, muss jede abgeschlossen sein, bevor die nächstestarten kann. Die Webseite kann nicht vollständig geladen werden, bis die Präferenzen des Kunden von derDatenbank zurückgegeben wurden. Nachdem die Datenbankabfrage an den Server gesendet wurde, kannder Empfang der Kundendaten jedoch aufgrund von Netzwerkengpässen, besonders hohem Datenverkehroder einer schlechten Verbindung eines Mobilgeräts sich verzögern oder sogar fehlschlagen.

Rufen Sie die Datenbank asynchron auf, um zu verhindern, dass die Website unter solchen Bedingungeneinfriert. Nachdem der Datenbankaufruf ausgeführt und Ihre asynchrone Anforderung gesendet wurde,wird Ihr Code wie erwartet weiter ausgeführt. Wenn Sie die Antwort eines asynchronen Aufrufs nichtordnungsgemäß verwalten, versucht Ihr Code möglicherweise im Fall, dass diese Daten noch nichtverfügbar sind, Informationen zu verwenden, die er von der Datenbank zurückerwartet.

Verwenden einer anonymen Callback-FunktionJede Service-Objektmethode, die ein AWS.Request-Objekt erstellt, kann eine anonyme Callback-Funktionals letzten Parameter annehmen. Die Signatur dieser Callback-Funktion lautet:

function(error, data) { // callback handling code}

68

Page 75: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwenden eines Anforderungsobjektereignis-Listeners

Diese Callback-Funktion wird ausgeführt, wenn entweder eine erfolgreiche Antwort oder Fehlerdatenzurückgegeben werden. Wenn der Methodenaufruf erfolgreich war, wird der Callback-Funktion der Inhaltder Antwort im data-Parameter bereitgestellt. Wenn der Aufruf nicht erfolgreich war, werden die Detailsüber den Fehler im error-Parameter angegeben.

In der Regel prüft der Code innerhalb der Callback-Funktion, ob ein Fehler vorliegt, den er verarbeitet,wenn ein Fehler zurückgegeben wird. Wenn kein Fehler zurückgegeben wird, ruft der Code dieAntwortdaten vom data-Parameter ab. Die grundlegende Form der Callback-Funktion sieht wie folgt aus.

function(error, data) { if (error) { // error handling code console.log(error); } else { // data handling code console.log(data); }}

Im vorherigen Beispiel werden die Details zum Fehler oder die zurückgegebenen Daten in der Konsoleprotokolliert. Hier finden Sie ein Beispiel für eine Callback-Funktion, die als Teil des Aufrufs einer Methodein einem Service-Objekt zurückgegeben wird.

new AWS.EC2({apiVersion: '2014-10-01'}).describeInstances(function(error, data) { if (error) { console.log(error); // an error occurred } else { console.log(data); // request succeeded }});

Zugreifen auf die Anforderungs- und AntwortobjekteInnerhalb der Callback-Funktion bezieht sich das JavaScript-Schlüsselwort this auf das zugrundeliegende AWS.Response-Objekt für die meisten Services. Im folgenden Beispiel wird die httpResponse-Eigenschaft eines AWS.Response-Objekts innerhalb einer Callback-Funktion für die Protokollierung derunformatierten Antwortdaten und -Header verwendet, um das Debugging zu erleichtern.

new AWS.EC2({apiVersion: '2014-10-01'}).describeInstances(function(error, data) { if (error) { console.log(error); // an error occurred // Using this keyword to access AWS.Response object and properties console.log("Response data and headers: " + JSON.stringify(this.httpResponse)); } else { console.log(data); // request succeeded }});

Da das AWS.Response-Objekt über eine Request-Eigenschaft verfügt, die das AWS.Request-Objektenthält, das vom ursprünglichen Methodenaufruf gesendet wurde, können Sie außerdem auf die Details derAnforderung zugreifen.

Verwenden eines Anforderungsobjektereignis-ListenersWenn Sie keine anonyme Callback-Funktion erstellen und als Parameter übergeben, wenn Sie eineService-Objektmethode aufrufen, generiert der Methodenaufruf ein AWS.Request-Objekt, das mit dessensend-Methode manuell gesendet werden muss.

69

Page 76: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwenden eines Anforderungsobjektereignis-Listeners

Zum Verarbeiten der Antwort müssen Sie einen Ereignis-Listener für das AWS.Request-Objekt erstellen,um eine Callback-Funktion für den Methodenaufruf zu registrieren. Das folgende Beispiel zeigt, wiedas AWS.Request-Objekt zum Aufrufen einer Service-Objektmethode und der Ereignis-Listener für dieerfolgreiche Rückgabe erstellt werden.

// create the AWS.Request objectvar request = new AWS.EC2({apiVersion: '2014-10-01'}).describeInstances();

// register a callback event handlerrequest.on('success', function(response) { // log the successful data response console.log(response.data); });

// send the requestrequest.send();

Nachdem die send-Methode im AWS.Request-Objekt aufgerufen wurde, wird der Ereignis-Handlerausgeführt, wenn das Service-Objekt ein AWS.Response-Objekt erhält.

Weitere Informationen zum AWS.Request-Objekt finden Sie unter Class: AWS.Request in der API-Referenz. Weitere Informationen zum AWS.Response-Objekt finden Sie unter Verwenden des Response-Objekts (p. 76) oder Class: AWS.Response in the API-Referenz.

Verketten von mehreren CallbacksSie können mehrere Callbacks für jedes Anforderungsobjekt registrieren. Mehrere Callbacks können fürverschiedene Ereignisse oder dasselbe Ereignis registriert werden. Sie können Callbacks auch verketten,wie im folgenden Beispiel gezeigt wird.

request. on('success', function(response) { console.log("Success!"); }). on('error', function(response) { console.log("Error!"); }). on('complete', function() { console.log("Always!"); }). send();

Anforderungsobjekt-FertigstellungsereignisDas AWS.Request-Objekt löst diese Fertigstellungsereignisse basierend auf der Antwort der einzelnenService-Operationsmethoden aus:

• success

• error

• complete

Sie können eine Callback-Funktion als Reaktion auf jedes dieser Ereignisse registrieren. Eine vollständigeListe aller Anforderungsobjektereignisse finden Sie unter Class: AWS.Request in der API-Referenz.

Das ErfolgsereignisDas success-Ereignis wird ausgelöst, wenn eine erfolgreiche Antwort vom Service-Objekt erhalten wird.Hier sehen Sie, wie Sie eine Callback-Funktion für dieses Ereignis registrieren.

70

Page 77: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwenden eines Anforderungsobjektereignis-Listeners

request.on('success', function(response) { // event handler code});

Die Antwort enthält eine data-Eigenschaft mit den serialisierten Antwortdaten vom Service. Beispiel: Derfolgende Aufruf an die listBuckets-Methode des Amazon S3-Service-Objekts

s3.listBuckets.on('success', function(response) { console.log(response.data);}).send();

gibt die Antwort zurück. Anschließend wird der folgende Inhalt der data-Eigenschaft an die Konsoleausgegeben.

{ Owner: { ID: '...', DisplayName: '...' }, Buckets: [ { Name: 'someBucketName', CreationDate: someCreationDate }, { Name: 'otherBucketName', CreationDate: otherCreationDate } ], RequestId: '...' }

Das error-EreignisDas error-Ereignis wird ausgelöst, wenn eine Fehlerantwort vom Service-Objekt erhalten wird. Hier sehenSie, wie Sie eine Callback-Funktion für dieses Ereignis registrieren.

request.on('error', function(error, response) { // event handling code});

Wenn das error-Ereignis ausgelöst wird, ist der Wert der data-Eigenschaft der Antwort null und dieerror-Eigenschaft enthält die Fehlerdaten. Das zugehörige error-Objekt wird als erster Parameter an dieregistrierte Callback-Funktion übergeben. Der folgende Code beispielsweise:

s3.config.credentials.accessKeyId = 'invalid';s3.listBuckets().on('error', function(error, response) { console.log(error);}).send();

gibt den Fehler zurück. Anschließend werden die folgenden Fehlerdaten an die Konsole ausgegeben.

{ code: 'Forbidden', message: null }

Das complete-EreignisDas complete-Ereignis wird ausgelöst, wenn ein Service-Objektaufruf unabhängig davon, ob der Aufruferfolgreich war oder nicht, abgeschlossen wurde. Hier sehen Sie, wie Sie eine Callback-Funktion für diesesEreignis registrieren.

request.on('complete', function(response) { // event handler code});

Verwenden Sie den complete-Ereignis-Callback, um die einzelnen Anforderungsbereinigungen zuverarbeiten, die unabhängig von Erfolg oder Fehlern ausgeführt werden müssen. Wenn Sie Antwortdatenin einer Callback-Funktion für das complete-Ereignis verwenden, überprüfen Sie zuerst die Eigenschaften

71

Page 78: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwenden eines Anforderungsobjektereignis-Listeners

response.data oder response.error, bevor Sie versuchen, auf eine der beiden zuzugreifen. Dieswird in folgendem Beispiel gezeigt.

request.on('complete', function(response) { if (response.error) { // an error occurred, handle it } else { // we can use response.data here }}).send();

HTTP-Ereignisse für AnforderungsobjekteDas AWS.Request-Objekt löst die folgenden HTTP-Ereignisse basierend auf der Antwort der einzelnenService-Operationsmethoden aus:

• httpHeaders

• httpData

• httpUploadProgress

• httpDownloadProgress

• httpError

• httpDone

Sie können eine Callback-Funktion als Reaktion auf jedes dieser Ereignisse registrieren. Eine vollständigeListe aller Anforderungsobjektereignisse finden Sie unter Class: AWS.Request in der API-Referenz.

Das httpHeaders-EreignisDas httpHeaders-Ereignis wird ausgelöst, wenn Header vom Remote-Server gesendet werden. Hiersehen Sie, wie Sie eine Callback-Funktion für dieses Ereignis registrieren.

request.on('httpHeaders', function(statusCode, headers, response) { // event handling code});

Der statusCode-Parameter der Callback-Funktion ist der HTTP-Statuscode. Der headers-Parameterenthält die Antwort-Header.

Das httpData-EreignisDas httpData-Ereignis wird ausgelöst, um Antwortdatenpakete vom Service zu streamen. Hier sehen Sie,wie Sie eine Callback-Funktion für dieses Ereignis registrieren.

request.on('httpData', function(chunk, response) { // event handling code});

Dieses Ereignis wird in der Regel für den Empfang großer Antwortblöcke verwendet, wenn das Ladender gesamten Antwort in den Arbeitsspeicher nicht praktikabel ist. Dieses Ereignis verfügt über einenzusätzlichen chunk-Parameter, der einen Teil der eigentlichen Daten vom Server enthält.

Wenn Sie einen Callback für das httpData-Ereignis registrieren, enthält die data-Eigenschaft der Antwortdie gesamte serialisierte Ausgabe für die Anforderung. Sie müssen den standardmäßigen httpData-Listener entfernen, wenn Sie nicht über den zusätzlichen Analyse- und Speichermehraufwand für dieintegrierten Handler verfügen.

72

Page 79: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwenden von Promises

Das httpUploadProgress- und das httpDownloadProgress-Ereignis

Das httpUploadProgress-Ereignis wird ausgelöst, wenn die HTTP-Anforderung mehr Datenhochgeladen hat. Entsprechend wird das httpDownloadProgress-Ereignis ausgelöst, wenn die HTTP-Anforderung mehr Daten heruntergeladen hat. Hier sehen Sie, wie Sie eine Callback-Funktion für dieseEreignisse registrieren.

request.on('httpUploadProgress', function(progress, response) { // event handling code}).on('httpDownloadProgress', function(progress, response) { // event handling code});

Der progress-Parameter der Callback-Funktion enthält ein Objekt mit den geladenen und gesamtenBytes der Anforderung.

Das httpError-Ereignis

Das httpError-Ereignis wird ausgelöst, wenn die HTTP-Anforderung fehlschlägt. Hier sehen Sie, wie Sieeine Callback-Funktion für dieses Ereignis registrieren.

request.on('httpError', function(error, response) { // event handling code});

Der error-Parameter der Callback-Funktion enthält die Fehler, die ausgelöst wurden.

Das httpDone-Ereignis

Das httpDone-Ereignis wird ausgelöst, wenn der Server das Senden von Daten abgeschlossen hat. Hiersehen Sie, wie Sie eine Callback-Funktion für dieses Ereignis registrieren.

request.on('httpDone', function(response) { // event handling code});

Verwenden von JavaScript-PromisesMit der AWS.Request.promise-Methode haben Sie die Möglichkeit, eine Service-Operation aufzurufenund asynchrone Flows zu verwalten, anstatt Callbacks zu verwenden. In Node.js und Browser-Skripts wirdein AWS.Request-Objekt zurückgegeben, wenn eine Service-Operation ohne eine Callback-Funktionaufgerufen wird. Sie können die send-Methode der Anforderung aufrufen, um den Service aufzurufen.

AWS.Request.promise startet jedoch sofort den Service-Aufruf und gibt ein Promis zurück. Dieseswird entweder mit der data-Eigenschaft der Antwort erfüllt oder mit der error-Eigenschaft der Antwortabgelehnt.

var request = new AWS.EC2({apiVersion: '2014-10-01'}).describeInstances();

// create the promise objectvar promise = request.promise();

// handle promise's fulfilled/rejected statespromise.then( function(data) { /* process the data */

73

Page 80: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwenden von Promises

}, function(error) { /* handle the error */ });

Das nächste Beispiel gibt ein Promis zurück, das mit einem data-Objekt erfüllt oder mit einem error-Objekt abgelehnt wird. Beim Verwenden von Promises ist ein einzelner Callback nicht dafür zuständig,Fehler zu erkennen. Stattdessen wird der richtige Callback basierend auf dem Erfolg oder Misserfolg einerAnforderung aufgerufen.

var s3 = new AWS.S3({apiVersion: '2006-03-01', region: 'us-west-2'});var params = { Bucket: 'bucket', Key: 'example2.txt', Body: 'Uploaded text using the promise-based method!'};var putObjectPromise = s3.putObject(params).promise();putObjectPromise.then(function(data) { console.log('Success');}).catch(function(err) { console.log(err);});

Koordinieren mehrerer PromisesIn einigen Fällen muss Ihr Code mehrere asynchrone Aufrufe ausführen, die nur dann eine Aktionerfordern, wenn alle erfolgreich zurückgegeben wurden. Wenn Sie diese einzelnen asynchronenMethodenaufrufe mit Promises verwalten, können Sie ein zusätzliches Promise erstellen, das die all-Methode verwendet. Diese Methode erfüllt dieses übergeordnete Promise-Objekt, falls und wenn das andie Methode übergebene Array der Promises erfüllt ist. Die Callback-Funktion wird als Array von Wertender Promises übergeben, die an die all-Methode übergeben werden.

Im folgenden Beispiel muss eine AWS Lambda-Funktion drei asynchrone Aufrufe an Amazon DynamoDBausführen, kann jedoch nur abgeschlossen werden, nachdem die Promises für die einzelnen Aufrufe erfülltwurden.

Promise.all([firstPromise, secondPromise, thirdPromise]).then(function(values) { console.log("Value 0 is " + values[0].toString); console.log("Value 1 is " + values[1].toString); console.log("Value 2 is " + values[2].toString);

// return the result to the caller of the Lambda function callback(null, values);});

Browser- und Node.js-Unterstützung für PromisesOb native JavaScript-Promises (ECMAScript 2015) unterstützt werden, hängt von der JavaScript-Engine und -Version ab, in der Ihr Code ausgeführt wird. Hilfreiche Informationen zur Bestimmung derUnterstützung für JavaScript-Promises in jeder Umgebung, in der Ihr Code ausgeführt werden muss, findenSie in der ECMAScript-Kompatibilitätstabelle auf GitHub.

Verwenden anderer Promise-ImplementierungenZusätzlich zur nativen Promise-Implementierung in ECMAScript 2015 können Sie auch Promise-Bibliotheken von Drittanbietern verwenden. Dazu gehören:

74

Page 81: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwenden von async/await

• Bluebird• RSVP• Q

Diese optionalen Promise-Bibliotheken können nützlich sein, wenn Sie Ihren Code in Umgebungenausführen müssen, die native Promise-Implementierungen in ECMAScript 5 und ECMAScript 2015 nichtunterstützen.

Wenn Sie die Promise-Bibliothek eines Drittanbieters verwenden möchten, legen Sie einePromise-Abhängigkeit im SDK fest, indem Sie die setPromisesDependency-Methode desglobalen Konfigurationsobjekts aufrufen. Stellen Sie in Browser-Skripts sicher, dass die Promise-Drittanbieterbibliothek vor dem SDK geladen wird. Im folgenden Beispiel wird das SDK so konfiguriert, dasses die Implementierung in der Bluebird-Promise-Bibliothek verwendet.

AWS.config.setPromisesDependency(require('bluebird'));

Wenn Sie wieder die native Promise-Implementierung der JavaScript-Engine verwenden möchten, rufenSie setPromisesDependency erneut auf und übergeben Sie null anstelle des Namens der Bibliothek.

Verwenden von async/awaitAnstatt Versprechen zu verwenden, sollten Sie async/awawait verwenden. Async-Funktionen sindeinfacher und benötigen weniger Boilerplate als die Verwendung von Versprechen. Await kann nur in einerasynchronen Funktion verwendet werden, um asynchron auf einen Wert zu warten.

Anforderungen mit einem Node.js-Stream-ObjektSie können eine Anforderung erstellen, die die zurückgegebenen Daten direkt an ein Node.js-Stream-Objekt streamt, indem die createReadStream-Methode für die Anforderung aufgerufen wird. Der Aufrufvon createReadStream gibt den unformatierten HTTP-Stream zurück, der von der Anforderung verwaltetwird. Der Rohdaten-Stream kann dann per Pipe in ein beliebiges Node.js-Stream-Objekt geleitet werden.

Diese Technik ist für Service-Anrufe sinnvoll, die Rohdaten in ihrer Nutzlast zurückgeben, wie z. B. beimAufrufen von getObject in einem Amazon S3-Service-Objekt, um Daten direkt in eine Datei zu streamen.Dies wird in folgenden Beispiel gezeigt.

var s3 = new AWS.S3({apiVersion: '2006-03-01'});var params = {Bucket: 'myBucket', Key: 'myImageFile.jpg'};var file = require('fs').createWriteStream('/path/to/file.jpg');s3.getObject(params).createReadStream().pipe(file);

Wenn Sie Daten aus einer Anforderung mit createReadStream streamen, werden lediglich dieunformatierten HTTP-Daten zurückgegeben. Das SDK übernimmt nicht die Nachbearbeitung der Daten.

Da Node.js die meisten Streams nicht zurückspulen kann, wird im Fall, dass die Anforderung anfänglicherfolgreich ist, die Logik für Wiederholungsversuche für den Rest der Antwort deaktiviert. Bei einem Socket-Fehler während des Streamens wird das SDK keinen Wiederholungsversuch unternehmen oder weitereDaten an den Stream senden. Ihre Anwendungslogik muss solche Streaming-Ausfälle identifizieren undbehandeln.

Vermeiden Sie die Verwendung eines Rückrufs, um Fehler im getObject-Aufruf zu fangen, z. B. wenn derSchlüssel nicht gültig ist, da diese Taktik zu einer Racebedingung führt, bei der zwei Anfragen gleichzeitiggeöffnet werden, die Daten von beiden jedoch an dasselbe Ziel weitergeleitet werden.

75

Page 82: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwenden des Response-Objekts

Die Lösung besteht darin, einen Fehlerereignis-Listener an den Amazon S3-Stream anzuhängen, wie imfolgenden Beispiel gezeigt.

var fileStream = fs.createWriteStream('/path/to/file.jpg');var s3Stream = s3.getObject({Bucket: 'myBucket', Key: 'myImageFile.jpg'}).createReadStream();

// Listen for errors returned by the services3Stream.on('error', function(err) { // NoSuchKey: The specified key does not exist console.error(err);});

s3Stream.pipe(fileStream).on('error', function(err) { // capture any errors that occur when writing data to the file console.error('File Stream:', err);}).on('close', function() { console.log('Done.');});

Verwenden des Response-ObjektsNachdem eine Service-Objektmethode aufgerufen wurde, gibt diese ein AWS.Response-Objekt zurück,indem es an Ihre Callback-Funktion übergeben wird. Sie greifen auf den Inhalt der Antwort über dieEigenschaften des AWS.Response-Objekts zu. Für den Zugriff auf den Inhalt der Antwort gibt es zweiEigenschaften des AWS.Response-Objekts:

• data-Eigenschaft• error-Eigenschaft

Wenn Sie den standardmäßigen Callback-Mechanismus verwenden, werden diese beiden Eigenschaftenals Parameter in der anonymen Callback-Funktion bereitgestellt, wie das folgende Beispiel zeigt.

function(error, data) { if (error) { // error handling code console.log(error); } else { // data handling code console.log(data); }}

Zugreifen auf im Response-Objekt zurückgegebeneDatenDie data-Eigenschaft des AWS.Response-Objekts enthält die serialisierten Daten, die von der Service-Anforderung zurückgegeben werden. Wenn die Anforderung erfolgreich ist, enthält die data-Eigenschaftein Objekt mit einer Zuordnung zu den zurückgegebenen Daten. Die data-Eigenschaft kann Null sein,wenn ein Fehler auftritt.

Hier sehen Sie ein Beispiel für einen Aufruf der getItem-Methode einer DynamoDB-Tabelle, um denNamen einer Bilddatei abzurufen, die als Teil eines Spiels verwendet werden soll.

// Initialize parameters needed to call DynamoDB

76

Page 83: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Durchblättern von zurückgegebenen Daten

var slotParams = { Key : {'slotPosition' : {N: '0'}}, TableName : 'slotWheels', ProjectionExpression: 'imageFile'};

// prepare request object for call to DynamoDBvar request = new AWS.DynamoDB({region: 'us-west-2', apiVersion: '2012-08-10'}).getItem(slotParams);// log the name of the image file to load in the slot machinerequest.on('success', function(response) { // logs a value like "cherries.jpg" returned from DynamoDB console.log(response.data.Item.imageFile.S);});// submit DynamoDB requestrequest.send();

In diesem Beispiel ist DynamoDB eine Suchtabelle mit Bildern, die die Ergebnisse eines Spiels an einemSpielautomaten zeigen, wie mit den Parametern in slotParams angegeben.

Nach einem erfolgreichen Aufruf der getItem-Methode enthält die data-Eigenschaft des AWS.Response-Objekts ein Item-Objekt, das von DynamoDB zurückgegeben wird. Auf die zurückgegebenen Datenwird gemäß dem ProjectionExpression-Parameter der Anforderung zugegriffen, in diesem Fallalso dem imageFile-Mitglied des Item-Objekts. Da das imageFile-Mitglied einen Zeichenfolgenwertenthält, können Sie auf den Dateinamen des Bildes über den Wert des untergeordneten Mitglieds S vonimageFile zugreifen.

Durchblättern von zurückgegebenen DatenManchmal umfasst der Inhalt der von einer Service-Anforderung zurückgegebenen data-Eigenschaftmehrere Seiten. Sie können auf die nächste Datenseite mit dem Aufruf der response.nextPage-Methode zugreifen. Diese Methode sendet eine neue Anforderung. Die Antwort auf die Anforderung kannentweder mit einem Callback oder einem Listener für Erfolg oder Fehler erfasst werden.

Sie können prüfen, ob die von einer Service-Anforderung zurückgegebenen Daten zusätzliche Datenseitenhaben, indem Sie die response.hasNextPage-Methode aufrufen. Diese Methode gibt einen booleschenWert zurück, der angibt, ob der Aufruf von response.nextPage zusätzliche Daten zurückgibt.

s3.listObjects({Bucket: 'bucket'}).on('success', function handlePage(response) { // do something with response.data if (response.hasNextPage()) { response.nextPage().on('success', handlePage).send(); }}).send();

Zugreifen auf Fehlerinformationen aus einemAntwortobjektDie error-Eigenschaft des AWS.Response-Objekts enthält die verfügbaren Fehlerdaten bei einemService-Fehler oder einem Übertragungsfehler. Der zurückgegebene Fehler hat das folgende Format.

{ code: 'SHORT_UNIQUE_ERROR_CODE', message: 'a descriptive error message' }

Im Fall eines Fehlers ist der Wert der data-Eigenschaft gleich null. Wenn Sie Ereignisse verarbeiten, diesich in einem Fehlerzustand befinden können, überprüfen Sie immer, ob die error-Eigenschaft festgelegtwurde, bevor Sie versuchen, auf den Wert der data-Eigenschaft zuzugreifen.

77

Page 84: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Zugreifen auf das ursprüngliche Anforderungsobjekt

Zugreifen auf das ursprüngliche AnforderungsobjektDie request-Eigenschaft bietet Zugriff auf das ursprüngliche AWS.Request-Objekt. Es kann nützlichsein, Bezug auf das ursprüngliche AWS.Request-Objekt zu nehmen, um auf die ursprünglichen Parameterzuzugreifen, die es gesendet hat. Im folgenden Beispiel wird die request-Eigenschaft verwendet, um aufden Key-Parameter der ursprünglichen Service-Anforderung zuzugreifen.

s3.getObject({Bucket: 'bucket', Key: 'key'}).on('success', function(response) { console.log("Key was", response.request.params.Key);}).send();

Arbeiten mit JSONJSON ist sowohl visuell lesbares als auch ein maschinenlesbares Format für den Datenaustausch.Währende der Name „JSON“ eine Abkürzung für JavaScript Object Notation ist, ist das JSON-Formatunabhängig von Programmiersprachen.

Das SDK für JavaScript verwendet JSON, um bei Anforderungen Daten an Service-Objekte zu senden, underhält Daten von Service-Objekten im JSON-Format. Weitere Informationen über JSON finden Sie auf derWebsite json.org.

JSON stellt Daten auf zwei Arten dar:

• Ein Objekt, bei dem es sich um eine ungeordnete Sammlung von Name-Wert-Paaren handelt. Ein Objektwird innerhalb von zwei Klammern ({ und }) definiert. Jedes Name-Wert-Paar beginnt mit dem Namen,gefolgt von einem Doppelpunkt und dem Wert. Name-Wert-Paare werden durch Kommas voneinandergetrennt.

• Ein Array, bei dem es sich um eine geordnete Sammlung von Werten handelt. Ein Array wird innerhalbvon zwei Klammern ([ und ]) definiert. Elemente im Array werden durch Kommas voneinander getrennt.

Hier sehen Sie ein Beispiel für ein JSON-Objekt mit einem Array von Objekten, in dem die Objekte Kartenin einem Kartenspiel darstellen. Jede Karte wird durch zwei Namen-Wert-Paare definiert. Eines davon gibteinen eindeutigen Wert an, um die Karte zu identifizieren, und das andere gibt die URL an, die auf dasKartenbild verweist.

var cards = [{"CardID":"defaultname", "Image":"defaulturl"}, {"CardID":"defaultname", "Image":"defaulturl"}, {"CardID":"defaultname", "Image":"defaulturl"}, {"CardID":"defaultname", "Image":"defaulturl"}, {"CardID":"defaultname", "Image":"defaulturl"}];

JSON als Service-ObjektparameterHier sehen Sie ein einfaches JSON-Beispiel, um Parameter eines Aufrufs an ein Lambda-Service-Objekt zudefinieren.

78

Page 85: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Zurückgeben von Daten als JSON

var pullParams = { FunctionName : 'slotPull', InvocationType : 'RequestResponse', LogType : 'None'};

Das pullParams-Objekt wird durch drei Name-Wert-Paare definiert, die durch Kommas innerhalb einerlinken und einer rechten Klammer getrennt sind. Beim Bereitstellen von Parametern für einen Service-Objektmethodenaufruf werden die Namen durch die Parameternamen für die Service-Objektmethodebestimmt, die Sie aufrufen möchten. Wenn eine Lambda-Funktion aufgerufen wird, sind FunctionName,InvocationType und LogType die Parameter, mit denen die invoke-Methode in einem Lambda-Service-Objekt aufgerufen wird.

Wenn Sie Parameter an einen Service-Objektmethodenaufruf übergeben, stellen Sie dem Methodenaufrufdas JSON-Objekt bereit, wie im folgenden Beispiel für das Aufrufen einer Lambda Funktion gezeigt wird.

lambda = new AWS.Lambda({region: 'us-west-2', apiVersion: '2015-03-31'});// create JSON object for service call parametersvar pullParams = { FunctionName : 'slotPull', InvocationType : 'RequestResponse', LogType : 'None'}; // invoke Lambda function, passing JSON objectlambda.invoke(pullParams, function(err, data) { if (err) { console.log(err); } else { console.log(data); }});

Zurückgeben von Daten als JSONJSON bietet eine standardisierte Methode, um Daten zwischen Teilen eine Anwendung zu übermitteln, diemehrere Werte gleichzeitig senden müssen. Die Methoden von Client-Klassen in der API geben gewöhnlichJSON im data-Parameter zurück, der an ihre Callback-Funktionen übergeben wird. Hier finden Sie einBeispiel für einen Aufruf an die getBucketCors-Methode der Amazon S3-Client-Klasse.

// call S3 to retrieve CORS configuration for selected buckets3.getBucketCors(bucketParams, function(err, data) { if (err) { console.log(err); } else if (data) { console.log(JSON.stringify(data)); }});

Der Wert von data ist ein JSON-Objekt, in diesem Beispiel JSON zur Beschreibung der aktuellen CORS-Konfiguration für einen angegebenen Amazon S3-Bucket.

{ "CORSRules": [ { "AllowedHeaders":["*"], "AllowedMethods":["POST","GET","PUT","DELETE","HEAD"], "AllowedOrigins":["*"], "ExposeHeaders":[], "MaxAgeSeconds":3000

79

Page 86: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Zurückgeben von Daten als JSON

} ]}

80

Page 87: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Amazon CloudWatch Beispiele

SDK für JavaScript-CodebeispieleDie Themen in diesem Abschnitt enthalten Beispiele für die Verwendung von AWS SDK für JavaScript mitden APIs verschiedener Services zum Ausführen allgemeiner Aufgaben.

Den Quellcode für diese und andere Beispiele finden Sie im Repository für Codebeispiele derAWS-Dokumentation auf GitHub. Um ein neues Codebeispiel für das AWS-Dokumentationsteamvorzuschlagen, dessen Erstellung es erwägen soll, erstellen Sie eine neue Anfrage. Das Team möchteCodebeispiele erstellen, die breitere Szenarien und Anwendungsfälle abdecken, im Vergleich zu einfachenCodeausschnitten, die nur einzelne API-Aufrufe abdecken. Anweisungen finden Sie im Abschnitt Proposingnew code examples in der Readme auf GitHub.

Themen• Amazon CloudWatch Beispiele (p. 81)• Amazon DynamoDB Beispiele (p. 97)• Amazon EC2 Beispiele (p. 113)• AWS Elemental MediaConvert Beispiele (p. 130)• Amazon S3 Glacier Beispiele (p. 144)• Beispiele für AWS IAM (p. 147)• Amazon Kinesis Beispiel (p. 164)• AWS Lambda Beispiele (p. 169)• Amazon S3 Beispiele (p. 169)• Amazon Simple Email Service Beispiele (p. 203)• Amazon Simple Notification Service Beispiele (p. 223)• Amazon SQS Beispiele (p. 238)

Amazon CloudWatch BeispieleAmazon CloudWatch (CloudWatch) ist ein Webservice, der Ihre Amazon Web Services (AWS)-Ressourcenund Anwendungen, die Sie auf AWS ausführen, in Echtzeit überwacht. Sie können CloudWatchverwenden, um Metriken zu erfassen und nachzuverfolgen. Es handelt sich dabei um Variablen, die Siefür Ihre Ressourcen und Anwendungen messen können. Abhängig von den von Ihnen definierten Regelnsenden CloudWatch-Alarme Benachrichtigungen oder nehmen automatisch Änderungen an den von Ihnenüberwachten Ressourcen vor.

Die JavaScript-API für CloudWatch wird über die Client-Klassen AWS.CloudWatch,AWS.CloudWatchEvents und AWS.CloudWatchLogs bereitgestellt. Weitere Informationen zur

81

Page 88: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Erstellen von Alarmen in Amazon CloudWatch

Verwendung der CloudWatch-Client-Klassen finden Sie unter Klasse: AWS.CloudWatch, Klasse:AWS.CloudWatchEvents und Klasse: AWS.CloudWatchLogs in der API-Referenz.

Themen• Erstellen von Alarmen in Amazon CloudWatch (p. 82)• Verwenden von Alarmaktionen in Amazon CloudWatch (p. 85)• Abrufen von Metriken von Amazon CloudWatch (p. 88)• Senden von Ereignissen an Amazon CloudWatch Events (p. 90)• Verwenden von Abonnementfiltern in Amazon CloudWatch Logs (p. 94)

Erstellen von Alarmen in Amazon CloudWatch

Dieses Node.js-Codebeispiel zeigt:

• So rufen Sie grundlegende Informationen über Ihre CloudWatch-Alarme ab.• So erstellen und löschen Sie einen CloudWatch-Alarm.

Das SzenarioEin Alarm überwacht eine Metrik über einen bestimmten, von Ihnen definierten Zeitraum und führt eine odermehrere Aktionen durch, die vom Wert der Metrik im Vergleich zu einem festgelegten Schwellenwert ineiner Reihe von Zeiträumen abhängt.

In diesem Beispiel werden eine Reihe von Node.js-Modulen verwendet, um Alarme in CloudWatch zuerstellen. Die Node.js-Module verwenden das SDK für JavaScript, um Alarme mithilfe dieser Methoden derAWS.CloudWatch-Client-Klasse zu erstellen:

• describeAlarms

• putMetricAlarm

• deleteAlarms

Weitere Informationen über CloudWatch-Alarme finden Sie unter Erstellen von Amazon CloudWatch-Alarmen im Amazon CloudWatch-Benutzerhandbuch.

Erforderliche AufgabenZum Einrichten und Ausführen dieses Beispiels müssen Sie zunächst diese Aufgaben abschließen:

• Installieren Sie "Node.js". Weitere Informationen über die Installation von Node.js finden Sie auf derNode.js-Website.

• Erstellen Sie eine freigegebene Konfigurationsdatei mit Ihren Anmeldeinformationen. WeitereInformationen zum Bereitstellen einer Datei mit gemeinsam genutzten Anmeldeinformationenfinden Sie unter Laden der Anmeldeinformationen in Node.js aus der freigegebenenAnmeldeinformationsdatei (p. 33).

82

Page 89: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Erstellen von Alarmen in Amazon CloudWatch

Beschreiben von AlarmenErstellen Sie ein Node.js-Modul mit dem Dateinamen cw_describealarms.js. Stellen Sie sicher,dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Um auf CloudWatch zuzugreifen, erstellen Sieein AWS.CloudWatch-Serviceobjekt. Erstellen Sie ein JSON-Objekt, um die Parameter für das Abrufenvon Alarmbeschreibungen zu speichern und begrenzen Sie dabei die zurückgegebenen Alarme aufdiejenigen mit Status INSUFFICIENT_DATA. Rufen Sie dann die describeAlarms-Methode desAWS.CloudWatch-Serviceobjekts auf.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create CloudWatch service objectvar cw = new AWS.CloudWatch({apiVersion: '2010-08-01'});

cw.describeAlarms({StateValue: 'INSUFFICIENT_DATA'}, function(err, data) { if (err) { console.log("Error", err); } else { // List the names of all current alarms in the console data.MetricAlarms.forEach(function (item, index, array) { console.log(item.AlarmName); }); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node cw_describealarms.js

Diesen Beispielcode finden Sie hier auf GitHub.

Erstellen eines Alarms für eine CloudWatch-MetrikErstellen Sie ein Node.js-Modul mit dem Dateinamen cw_putmetricalarm.js. Stellen Sie sicher, dassSie das SDK, wie zuvor dargestellt, konfigurieren. Um auf CloudWatch zuzugreifen, erstellen Sie einAWS.CloudWatch-Serviceobjekt. Erstellen Sie ein JSON-Objekt für die Parameter, die für das Erstelleneines Alarms auf der Grundlage einer Metrik erforderlich sind. In diesem Fall ist dies die Metrik für die CPU-Auslastung einer Amazon EC2-Instance. Die restlichen Parameter werden so festgelegt, dass der Alarmausgelöst wird, wenn die Metrik einen Grenzwert von 70 Prozent überschreitet. Rufen Sie anschließend diedescribeAlarms-Methode des AWS.CloudWatch-Serviceobjekts auf.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create CloudWatch service objectvar cw = new AWS.CloudWatch({apiVersion: '2010-08-01'});

var params = { AlarmName: 'Web_Server_CPU_Utilization', ComparisonOperator: 'GreaterThanThreshold', EvaluationPeriods: 1, MetricName: 'CPUUtilization', Namespace: 'AWS/EC2',

83

Page 90: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Erstellen von Alarmen in Amazon CloudWatch

Period: 60, Statistic: 'Average', Threshold: 70.0, ActionsEnabled: false, AlarmDescription: 'Alarm when server CPU exceeds 70%', Dimensions: [ { Name: 'InstanceId', Value: 'INSTANCE_ID' }, ], Unit: 'Percent'};

cw.putMetricAlarm(params, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node cw_putmetricalarm.js

Diesen Beispielcode finden Sie hier auf GitHub.

Löschen eines AlarmsErstellen Sie ein Node.js-Modul mit dem Dateinamen cw_deletealarms.js. Stellen Sie sicher,dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Um auf CloudWatch zuzugreifen, erstellen Sieein AWS.CloudWatch-Serviceobjekt. Erstellen Sie ein JSON-Objekt, um die Namen der Alarme zuspeichern, die Sie löschen möchten. Rufen Sie dann die deleteAlarms-Methode des AWS.CloudWatch-Serviceobjekts auf.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create CloudWatch service objectvar cw = new AWS.CloudWatch({apiVersion: '2010-08-01'});

var params = { AlarmNames: ['Web_Server_CPU_Utilization']};

cw.deleteAlarms(params, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node cw_deletealarms.js

84

Page 91: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwenden von Alarmaktionen in Amazon CloudWatch

Diesen Beispiel-Code finden Sie hier auf GitHub.

Verwenden von Alarmaktionen in Amazon CloudWatch

Dieses Node.js-Codebeispiel zeigt:

• So ändern Sie den Status Ihrer Amazon EC2-Instances basierend auf einem CloudWatch-Alarmautomatisch.

Das SzenarioMithilfe von Alarmaktionen können Sie Alarme erstellen, die die Amazon EC2-Instances automatischanhalten, beenden, neu starten oder wiederherstellen. Sie können die Aktionen zum Anhalten oderBeenden nutzen, wenn eine Instance nicht mehr ausgeführt werden muss. Sie können die Aktionen zumNeustarten oder Wiederherstellen verwenden, um diese Instances automatisch neu zu starten.

In diesem Beispiel werden eine Reihe von Node.js-Modulen zum Definieren einer Alarmaktion inCloudWatch verwendet, die den Neustart einer Amazon EC2-Instance auslöst. Die Node.js-Moduleverwenden das SDK für JavaScript, um Amazon EC2-Instances mithilfe dieser Methoden derCloudWatch-Client-Klasse zu verwalten:

• enableAlarmActions

• disableAlarmActions

Weitere Informationen zu CloudWatch-Alarmaktionen finden Sie unter Erstellen von Alarmen, mit deneneine Instance angehalten, beendet, neu gestartet oder wiederhergestellt wird im Amazon CloudWatch-Benutzerhandbuch.

Erforderliche AufgabenZum Einrichten und Ausführen dieses Beispiels müssen Sie zunächst diese Aufgaben abschließen:

• Installieren Sie "Node.js". Weitere Informationen über die Installation von Node.js finden Sie auf derNode.js-Website.

• Erstellen Sie eine freigegebene Konfigurationsdatei mit Ihren Anmeldeinformationen. WeitereInformationen zum Bereitstellen einer Datei mit gemeinsam genutzten Anmeldeinformationenfinden Sie unter Laden der Anmeldeinformationen in Node.js aus der freigegebenenAnmeldeinformationsdatei (p. 33).

• Erstellen Sie eine IAM-Rolle, deren Richtlinie Berechtigungen zum Beschreiben, Neustarten, Stoppenoder Beenden einer Amazon EC2-Instance erteilt. Weitere Informationen zum Erstellen einer IAM-Rollefinden Sie im Abschnitt zum Erstellen einer Rolle zum Delegieren von Berechtigungen an einen AWS-Service im IAM-Benutzerhandbuch.

Verwenden Sie die folgende Rollenrichtlinie beim Erstellen der IAM-Rolle.

{ "Version": "2012-10-17",

85

Page 92: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwenden von Alarmaktionen in Amazon CloudWatch

"Statement": [ { "Effect": "Allow", "Action": [ "cloudwatch:Describe*", "ec2:Describe*", "ec2:RebootInstances", "ec2:StopInstances*", "ec2:TerminateInstances" ], "Resource": [ "*" ] } ]}

Konfigurieren Sie das SDK für JavaScript, indem Sie ein globales Konfigurationsobjekt und dann dieRegion für Ihren Code festlegen. In diesem Beispiel ist die Region auf us-west-2 festgelegt.

// Load the SDK für JavaScriptvar AWS = require('aws-sdk');// Set the Region AWS.config.update({region: 'us-west-2'});

Erstellen und Aktivieren von AlarmaktionenErstellen Sie ein Node.js-Modul mit dem Dateinamen cw_enablealarmactions.js. Stellen Sie sicher,dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Um auf CloudWatch zuzugreifen, erstellen Sie einAWS.CloudWatch-Serviceobjekt.

Erstellen Sie ein JSON-Objekt für die Parameter, die für das Erstellen eines Alarms erforderlich sind.Geben Sie dabei ActionsEnabled als true und ein Array von ARNs für die Aktionen an, die der Alarmauslösen soll. Rufen Sie die putMetricAlarm-Methode des AWS.CloudWatch-Serviceobjekts auf, dieden Alarm erstellt, wenn er nicht vorhanden ist, oder diesen aktualisiert, sofern vorhanden.

Erstellen Sie in der Callback-Funktion für den putMetricAlarm nach erfolgreichem Abschluss ein JSON-Objekt mit dem Namen des CloudWatch-Alarms. Rufen Sie die enableAlarmActions-Methode auf, umdie Alarmaktion zu aktivieren.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create CloudWatch service objectvar cw = new AWS.CloudWatch({apiVersion: '2010-08-01'});

var params = { AlarmName: 'Web_Server_CPU_Utilization', ComparisonOperator: 'GreaterThanThreshold', EvaluationPeriods: 1, MetricName: 'CPUUtilization', Namespace: 'AWS/EC2', Period: 60, Statistic: 'Average', Threshold: 70.0, ActionsEnabled: true, AlarmActions: ['ACTION_ARN'], AlarmDescription: 'Alarm when server CPU exceeds 70%',

86

Page 93: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwenden von Alarmaktionen in Amazon CloudWatch

Dimensions: [ { Name: 'InstanceId', Value: 'INSTANCE_ID' }, ], Unit: 'Percent'};

cw.putMetricAlarm(params, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Alarm action added", data); var paramsEnableAlarmAction = { AlarmNames: [params.AlarmName] }; cw.enableAlarmActions(paramsEnableAlarmAction, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Alarm action enabled", data); } }); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node cw_enablealarmactions.js

Diesen Beispiel-Code finden Sie hier auf GitHub.

Deaktivieren von AlarmaktionenErstellen Sie ein Node.js-Modul mit dem Dateinamen cw_disablealarmactions.js. Stellen Sie sicher,dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Um auf CloudWatch zuzugreifen, erstellen Sie einAWS.CloudWatch-Serviceobjekt. Erstellen Sie ein JSON-Objekt mit dem Namen des CloudWatch-Alarms.Rufen Sie die disableAlarmActions-Methode auf, um die Aktionen für diesen Alarm zu deaktivieren.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create CloudWatch service objectvar cw = new AWS.CloudWatch({apiVersion: '2010-08-01'});

cw.disableAlarmActions({AlarmNames: ['Web_Server_CPU_Utilization']}, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node cw_disablealarmactions.js

87

Page 94: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Abrufen von Metriken von Amazon CloudWatch

Diesen Beispiel-Code finden Sie hier auf GitHub.

Abrufen von Metriken von Amazon CloudWatch

Dieses Node.js-Codebeispiel zeigt:

• So rufen Sie eine Liste der veröffentlichten CloudWatch-Metriken ab.• So veröffentlichen Sie Datenpunkte in CloudWatch-Metriken.

Das SzenarioMetriken sind Daten über die Leistung Ihrer Systeme. Sie können die detaillierte Überwachung einigerRessourcen, wie der Amazon EC2-Instances, oder Ihrer eigenen Anwendungsmetriken aktivieren.

In diesem Beispiel wird eine Reihe von Node.js-Modulen verwendet, um Metriken aus CloudWatchabzurufen und Ereignisse an Amazon CloudWatch Events zu senden. Die Node.js-Module verwendendas SDK für JavaScript, um Metriken aus CloudWatch mithilfe der folgenden Methoden der CloudWatch-Client-Klasse abzurufen:

• listMetrics

• putMetricData

Weitere Informationen zu Metriken in CloudWatch finden Sie unter Verwenden von Amazon CloudWatch-Metriken im Amazon CloudWatch-Benutzerhandbuch.

Erforderliche AufgabenZum Einrichten und Ausführen dieses Beispiels müssen Sie zunächst diese Aufgaben abschließen:

• Installieren Sie "Node.js". Weitere Informationen über die Installation von Node.js finden Sie auf derNode.js-Website.

• Erstellen Sie eine freigegebene Konfigurationsdatei mit Ihren Anmeldeinformationen. WeitereInformationen zum Bereitstellen einer Datei mit gemeinsam genutzten Anmeldeinformationenfinden Sie unter Laden der Anmeldeinformationen in Node.js aus der freigegebenenAnmeldeinformationsdatei (p. 33).

Auflisten von MetrikenErstellen Sie ein Node.js-Modul mit dem Dateinamen cw_listmetrics.js. Stellen Sie sicher, dassSie das SDK, wie zuvor dargestellt, konfigurieren. Um auf CloudWatch zuzugreifen, erstellen Sie einAWS.CloudWatch-Serviceobjekt. Erstellen Sie ein JSON-Objekt mit den erforderlichen Parametern für dasAuflisten von Metriken innerhalb des AWS/Logs-Namespace. Rufen Sie die listMetrics-Methode zumAuflisten der IncomingLogEvents-Metrik auf.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');

88

Page 95: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Abrufen von Metriken von Amazon CloudWatch

// Set the region AWS.config.update({region: 'REGION'});

// Create CloudWatch service objectvar cw = new AWS.CloudWatch({apiVersion: '2010-08-01'});

var params = { Dimensions: [ { Name: 'LogGroupName', /* required */ }, ], MetricName: 'IncomingLogEvents', Namespace: 'AWS/Logs'};

cw.listMetrics(params, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Metrics", JSON.stringify(data.Metrics)); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node cw_listmetrics.js

Diesen Beispiel-Code finden Sie hier auf GitHub.

Übermitteln von benutzerdefinierten MetrikenErstellen Sie ein Node.js-Modul mit dem Dateinamen cw_putmetricdata.js. Stellen Sie sicher, dassSie das SDK, wie zuvor dargestellt, konfigurieren. Um auf CloudWatch zuzugreifen, erstellen Sie einAWS.CloudWatch-Serviceobjekt. Erstellen Sie ein JSON-Objekt mit den erforderlichen Parametern fürdas Übermitteln eines Datenpunktes an die benutzerdefinierte PAGES_VISITED-Metrik. Rufen Sie dieputMetricData-Methode auf.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create CloudWatch service objectvar cw = new AWS.CloudWatch({apiVersion: '2010-08-01'});

// Create parameters JSON for putMetricDatavar params = { MetricData: [ { MetricName: 'PAGES_VISITED', Dimensions: [ { Name: 'UNIQUE_PAGES', Value: 'URLS' }, ], Unit: 'None', Value: 1.0 }, ],

89

Page 96: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Senden von Ereignissen an Amazon CloudWatch Events

Namespace: 'SITE/TRAFFIC'};

cw.putMetricData(params, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", JSON.stringify(data)); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node cw_putmetricdata.js

Diesen Beispielcode finden Sie hier auf GitHub.

Senden von Ereignissen an Amazon CloudWatchEvents

Dieses Node.js-Codebeispiel zeigt:

• So erstellen und aktualisieren Sie eine Regel für das Auslösen eines Ereignisses.• So definieren Sie ein oder mehrere Ziele für die Reaktion auf ein Ereignis.• So senden Sie Ereignisse, die Zielen zur Bearbeitung zugeordnet sind.

Das SzenarioCloudWatch-Ereignisse bietet einen Stream von Systemereignissen nahezu in Echtzeit, der Änderungen anverschiedenen Zielen in den Amazon Web Services (AWS)-Ressourcen beschreibt. Mit einfachen Regelnkönnen Sie Ereignisse zuordnen und sie zu einer oder mehreren Zielfunktionen oder Streams umleiten.

In diesem Beispiel werden eine Reihe von Node.js-Modulen verwendet, um Ereignisse an CloudWatch-Ereignisse zu senden. Die Node.js-Module verwenden das SDK für JavaScript, um Instances mithilfe dieserMethoden der CloudWatchEvents-Client-Klasse zu verwalten:

• putRule

• putTargets

• putEvents

Weitere Informationen zu CloudWatch-Ereignisse finden Sie unter Hinzufügen von Ereignissen mitPutEvents im Benutzerhandbuch für Amazon CloudWatch Events.

Erforderliche AufgabenZum Einrichten und Ausführen dieses Beispiels müssen Sie zunächst diese Aufgaben abschließen:

90

Page 97: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Senden von Ereignissen an Amazon CloudWatch Events

• Installieren Sie "Node.js". Weitere Informationen über die Installation von Node.js finden Sie auf derNode.js-Website.

• Erstellen Sie eine freigegebene Konfigurationsdatei mit Ihren Anmeldeinformationen. WeitereInformationen zum Bereitstellen einer Datei mit gemeinsam genutzten Anmeldeinformationenfinden Sie unter Laden der Anmeldeinformationen in Node.js aus der freigegebenenAnmeldeinformationsdatei (p. 33).

• Erstellen Sie mithilfe der Hello-World-Vorlage eine Lambda-Funktion, die als Ziel für Ereignissedienen soll. Informationen hierzu finden Sie unter Schritt 1: Erstellen einer AWS Lambda-Funktion imBenutzerhandbuch für Amazon CloudWatch Events.

• Erstellen Sie eine IAM-Rolle, deren Richtlinie CloudWatch-Ereignisse die Berechtigung erteilt undevents.amazonaws.com als vertrauenswürdige Entität enthält. Weitere Informationen zum Erstelleneiner IAM-Rolle finden Sie im Abschnitt zum Erstellen einer Rolle zum Delegieren von Berechtigungenan einen AWS-Service im IAM-Benutzerhandbuch.

Verwenden Sie die folgende Rollenrichtlinie beim Erstellen der IAM-Rolle.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "CloudWatchEventsFullAccess", "Effect": "Allow", "Action": "events:*", "Resource": "*" }, { "Sid": "IAMPassRoleForCloudWatchEvents", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::*:role/AWS_Events_Invoke_Targets" } ]}

Verwenden Sie beim Erstellen einer IAM-Rolle die folgende Vertrauensstellung.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sts:AssumeRole" } ]}

Erstellen einer geplanten RegelErstellen Sie ein Node.js-Modul mit dem Dateinamen cwe_putrule.js. Stellen Sie sicher, dass Siedas SDK, wie zuvor dargestellt, konfigurieren. Um auf CloudWatch-Ereignisse zuzugreifen, erstellen Sieein AWS.CloudWatchEvents-Serviceobjekt. Erstellen Sie ein JSON-Objekt, welches die für die neuegeplante Regel erforderlichen Parameter enthält, darunter die folgenden:

• Einen Namen für die Regel• Den ARN der IAM-Rolle, die Sie zuvor erstellt haben

91

Page 98: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Senden von Ereignissen an Amazon CloudWatch Events

• Einen Ausdruck zum Auslösen der Regel alle fünf Minuten

Rufen Sie die putRule-Methode auf, um die Regel zu erstellen. Der Callback gibt den ARN der neuenoder aktualisierten Regel zurück.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create CloudWatchEvents service objectvar cwevents = new AWS.CloudWatchEvents({apiVersion: '2015-10-07'});

var params = { Name: 'DEMO_EVENT', RoleArn: 'IAM_ROLE_ARN', ScheduleExpression: 'rate(5 minutes)', State: 'ENABLED'};

cwevents.putRule(params, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data.RuleArn); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node cwe_putrule.js

Diesen Beispielcode finden Sie hier auf GitHub.

Hinzufügen eines Lambda-FunktionszielsErstellen Sie ein Node.js-Modul mit dem Dateinamen cwe_puttargets.js. Stellen Sie sicher, dass Siedas SDK, wie zuvor dargestellt, konfigurieren. Um auf CloudWatch-Ereignisse zuzugreifen, erstellen Sie einAWS.CloudWatchEvents-Serviceobjekt. Erstellen Sie ein JSON-Objekt, welches die Parameter enthält,die für die Regel erforderlich sind, der Sie das Ziel zuordnen möchten, einschließlich des ARN der vonIhnen erstellten Lambda-Funktion. Rufen Sie die putTargets-Methode des AWS.CloudWatchEvents-Serviceobjekts auf.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create CloudWatchEvents service objectvar cwevents = new AWS.CloudWatchEvents({apiVersion: '2015-10-07'});

var params = { Rule: 'DEMO_EVENT', Targets: [ { Arn: 'LAMBDA_FUNCTION_ARN', Id: 'myCloudWatchEventsTarget', } ]

92

Page 99: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Senden von Ereignissen an Amazon CloudWatch Events

};

cwevents.putTargets(params, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node cwe_puttargets.js

Diesen Beispielcode finden Sie hier auf GitHub.

Senden von EreignissenErstellen Sie ein Node.js-Modul mit dem Dateinamen cwe_putevents.js. Stellen Sie sicher, dassSie das SDK, wie zuvor dargestellt, konfigurieren. Um auf CloudWatch-Ereignisse zuzugreifen, erstellenSie ein AWS.CloudWatchEvents-Serviceobjekt. Erstellen Sie ein JSON-Objekt, welches die für dasSenden von Ereignissen erforderlichen Parameter enthält. Geben Sie für jedes Ereignis die Quelle desEreignisses, die ARNs aller vom Ereignis betroffenen Ressourcen sowie Details zum Ereignis an. RufenSie die putEvents-Methode des AWS.CloudWatchEvents-Serviceobjekts auf.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create CloudWatchEvents service objectvar cwevents = new AWS.CloudWatchEvents({apiVersion: '2015-10-07'});

var params = { Entries: [ { Detail: '{ \"key1\": \"value1\", \"key2\": \"value2\" }', DetailType: 'appRequestSubmitted', Resources: [ 'RESOURCE_ARN', ], Source: 'com.company.app' } ]};

cwevents.putEvents(params, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data.Entries); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node cwe_putevents.js

Diesen Beispielcode finden Sie hier auf GitHub.

93

Page 100: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwenden von Abonnementfiltern

in Amazon CloudWatch Logs

Verwenden von Abonnementfiltern in AmazonCloudWatch Logs

Dieses Node.js-Codebeispiel zeigt:

• So erstellen und löschen Sie Filter für Protokollereignisse in CloudWatch Logs.

Das SzenarioAbonnements gewähren Zugriff auf einen Echtzeit-Feed für Protokollereignisse von CloudWatchLogs. Dieser wird dann für andere Services, wie einen Amazon Kinesis-Stream oder AWS Lambda,für benutzerdefinierte Verarbeitung, Analyse oder das Laden in andere Systeme bereitgestellt. EinAbonnementfilter definiert das Muster, das zum Filtern verwendet werden soll, welche Protokollereignissean Ihre AWS-Ressource übermittelt werden.

In diesem Beispiel werden eine Reihe von Node.js-Modulen verwendet, um einen Abonnementfilter inCloudWatch Logs aufzulisten, zu erstellen und zu löschen. Das Ziel für die Protokollereignisse ist eineLambda-Funktion. Die Node.js-Module verwenden das SDK für JavaScript, um Abonnementfilter mithilfedieser Methoden der CloudWatchLogs-Client-Klasse zu verwalten:

• putSubscriptionFilters

• describeSubscriptionFilters

• deleteSubscriptionFilter

Weitere Informationen zu CloudWatch Logs-Abonnements finden Sie unter Echtzeitverarbeitung vonProtokollen mit Abonnements im Amazon CloudWatch Logs User Guide.

Erforderliche AufgabenZum Einrichten und Ausführen dieses Beispiels müssen Sie zunächst diese Aufgaben abschließen:

• Installieren Sie "Node.js". Weitere Informationen über die Installation von Node.js finden Sie auf derNode.js-Website.

• Erstellen Sie eine freigegebene Konfigurationsdatei mit Ihren Anmeldeinformationen. WeitereInformationen zum Bereitstellen einer Datei mit gemeinsam genutzten Anmeldeinformationenfinden Sie unter Laden der Anmeldeinformationen in Node.js aus der freigegebenenAnmeldeinformationsdatei (p. 33).

• Erstellen Sie eine Lambda-Funktion, die als Ziel für die Protokollereignisse dient. Dazu benötigen Sieden ARN dieser Funktion. Weitere Informationen zum Einrichten einer Lambda-Funktion finden Sie imAbschnitt Abonnementfilter mit AWS Lambda im Amazon CloudWatch Logs User Guide.

• Erstellen Sie eine IAM-Rolle, deren Richtlinie die Berechtigung zum Aufrufen der von Ihnen erstelltenLambda-Funktion erteilt und vollen Zugriff auf CloudWatch Logs gewährt oder wenden Sie diefolgende Richtlinie auf die Ausführungsrolle an, die Sie für die Lambda-Funktion erstellt haben. WeitereInformationen zum Erstellen einer IAM-Rolle finden Sie im Abschnitt zum Erstellen einer Rolle zumDelegieren von Berechtigungen an einen AWS-Service im IAM-Benutzerhandbuch.

94

Page 101: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwenden von Abonnementfiltern

in Amazon CloudWatch Logs

Verwenden Sie die folgende Rollenrichtlinie beim Erstellen der IAM-Rolle.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:*:*" }, { "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": [ "*" ] } ]}

Beschreiben von bestehenden AbonnementfilternErstellen Sie ein Node.js-Modul mit dem Dateinamen cwl_describesubscriptionfilters.js.Stellen Sie sicher, dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Um auf CloudWatch Logszuzugreifen, erstellen Sie ein AWS.CloudWatchLogs-Serviceobjekt. Erstellen Sie ein JSON-Objekt mitden erforderlichen Parametern für die Beschreibung Ihrer bestehenden Filter, einschließlich der Namender Protokollgruppe sowie der maximalen Anzahl der Filter, die Sie beschreiben möchten. Rufen Sie diedescribeSubscriptionFilters-Methode auf.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create the CloudWatchLogs service objectvar cwl = new AWS.CloudWatchLogs({apiVersion: '2014-03-28'});

var params = { logGroupName: 'GROUP_NAME', limit: 5};

cwl.describeSubscriptionFilters(params, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data.subscriptionFilters); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node cwl_describesubscriptionfilters.js

Diesen Beispielcode finden Sie hier auf GitHub.

95

Page 102: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwenden von Abonnementfiltern

in Amazon CloudWatch Logs

Erstellen eines AbonnementfiltersErstellen Sie ein Node.js-Modul mit dem Dateinamen cwl_putsubscriptionfilter.js. Stellen Siesicher, dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Um auf CloudWatch Logs zuzugreifen,erstellen Sie ein AWS.CloudWatchLogs-Serviceobjekt. Erstellen Sie ein JSON-Objekt mit denerforderlichen Parametern für die Erstellung eines Filters, einschließlich des ARN der Ziel-Lambda-Funktion, des Filternamens, des Zeichenfolgenmusters zum Filtern und des Namens der Protokollgruppe.Rufen Sie die putSubscriptionFilters-Methode auf.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create the CloudWatchLogs service objectvar cwl = new AWS.CloudWatchLogs({apiVersion: '2014-03-28'});

var params = { destinationArn: 'LAMBDA_FUNCTION_ARN', filterName: 'FILTER_NAME', filterPattern: 'ERROR', logGroupName: 'LOG_GROUP',};

cwl.putSubscriptionFilter(params, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node cwl_putsubscriptionfilter.js

Diesen Beispielcode finden Sie hier auf GitHub.

Löschen eines AbonnementfiltersErstellen Sie ein Node.js-Modul mit dem Dateinamen cwl_deletesubscriptionfilters.js.Stellen Sie sicher, dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Um auf CloudWatch Logszuzugreifen, erstellen Sie ein AWS.CloudWatchLogs-Serviceobjekt. Erstellen Sie ein JSON-Objekt mitden erforderlichen Parametern für das Löschen eines Filters, einschließlich des Filternamens und desNamens der Protokollgruppe. Rufen Sie die deleteSubscriptionFilters-Methode auf.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create the CloudWatchLogs service objectvar cwl = new AWS.CloudWatchLogs({apiVersion: '2014-03-28'});

var params = { filterName: 'FILTER', logGroupName: 'LOG_GROUP'};

96

Page 103: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Amazon DynamoDB Beispiele

cwl.deleteSubscriptionFilter(params, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node cwl_deletesubscriptionfilter.js

Diesen Beispielcode finden Sie hier auf GitHub.

Amazon DynamoDB BeispieleAmazon DynamoDB ist eine vollständig verwaltete NoSQL-Cloud-Datenbank, die sowohl Dokument- alsauch Schlüssel-Wert-Speichermodelle unterstützt. Sie erstellen schemalose Tabellen für Daten – ohneBereitstellung oder Wartung dedizierter Datenbankserver.

Die JavaScript-API für DynamoDB wird über die Client-Klassen AWS.DynamoDB, AWS.DynamoDBStreamsund AWS.DynamoDB.DocumentClient bereitgestellt. Weitere Informationen zur Verwendung derDynamoDB-Client-Klassen finden Sie unter Klasse: AWS.DynamoDB, Klasse: AWS.DynamoDBStreamsund Klasse: AWS.DynamoDB.DocumentClient in der API-Referenz.

Themen• Erstellen und Verwenden von Tabellen in DynamoDB (p. 97)• Lesen und Schreiben eines einzelnen Elements in DynamoDB (p. 101)• Lesen und Schreiben von Elementen im Stapel in DynamoDB (p. 104)• Abfragen und Scannen einer DynamoDB-Tabelle (p. 106)• Verwenden des DynamoDB-Dokument-Clients (p. 109)

Erstellen und Verwenden von Tabellen in DynamoDB

Dieses Node.js-Codebeispiel zeigt:

• So erstellen und verwalten Sie Tabellen zum Speichern und Abrufen von Daten aus DynamoDB.

97

Page 104: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Erstellen und Verwenden von Tabellen in DynamoDB

Das SzenarioEbenso wie bei anderen Datenbanksystemen werden auch die Daten von DynamoDB in Tabellengespeichert. Eine DynamoDB-Tabelle ist eine Sammlung von Daten, die in Elementen vergleichbar mitZeilen organisiert sind. Um Daten in DynamoDB zu speichern oder darauf zuzugreifen, erstellen SieTabellen und arbeiten mit ihnen.

In diesem Beispiel verwenden Sie eine Reihe von Node.js-Modulen zum Ausführen einfacher Operationenmit einer DynamoDB-Tabelle. Der Code verwendet das SDK für JavaScript, um Tabellen zu erstellen undmit ihnen zu arbeiten, indem diese Methoden der AWS.DynamoDB-Client-Klasse verwendet werden:

• createTable• listTables• describeTable• deleteTable

Erforderliche AufgabenZum Einrichten und Ausführen dieses Beispiels schließen Sie zunächst diese Aufgaben ab:

• Installieren Sie "Node.js". Weitere Informationen finden Sie auf der Node.js-Website.• Erstellen Sie eine freigegebene Konfigurationsdatei mit Ihren Anmeldeinformationen. Weitere

Informationen zum Bereitstellen einer Datei mit gemeinsam genutzten Anmeldeinformationenfinden Sie unter Laden der Anmeldeinformationen in Node.js aus der freigegebenenAnmeldeinformationsdatei (p. 33).

Erstellen einer TabelleErstellen Sie ein Node.js-Modul mit dem Dateinamen ddb_createtable.js. Stellen Sie sicher, dassSie das SDK, wie zuvor dargestellt, konfigurieren. Um auf DynamoDB zuzugreifen, erstellen Sie einAWS.DynamoDB-Serviceobjekt. Erstellen Sie ein JSON-Objekt mit den erforderlichen Parametern fürdas Erstellen einer Tabelle, das in diesem Beispiel den Namen und Datentyp für jedes Attribut, dasSchlüsselschema, den Namen der Tabelle und die Durchsatzeinheiten beinhaltet, die bereitgestellt werdensollen. Rufen Sie die createTable-Methode des DynamoDB-Serviceobjekts auf.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create the DynamoDB service objectvar ddb = new AWS.DynamoDB({apiVersion: '2012-08-10'});

var params = { AttributeDefinitions: [ { AttributeName: 'CUSTOMER_ID', AttributeType: 'N' }, { AttributeName: 'CUSTOMER_NAME', AttributeType: 'S' } ], KeySchema: [ { AttributeName: 'CUSTOMER_ID',

98

Page 105: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Erstellen und Verwenden von Tabellen in DynamoDB

KeyType: 'HASH' }, { AttributeName: 'CUSTOMER_NAME', KeyType: 'RANGE' } ], ProvisionedThroughput: { ReadCapacityUnits: 1, WriteCapacityUnits: 1 }, TableName: 'CUSTOMER_LIST', StreamSpecification: { StreamEnabled: false }};

// Call DynamoDB to create the tableddb.createTable(params, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Table Created", data); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node ddb_createtable.js

Diesen Beispielcode finden Sie hier auf GitHub.

Auflisten von TabellenErstellen Sie ein Node.js-Modul mit dem Dateinamen ddb_listtables.js. Stellen Sie sicher, dassSie das SDK, wie zuvor dargestellt, konfigurieren. Um auf DynamoDB zuzugreifen, erstellen Sie einAWS.DynamoDB-Serviceobjekt. Erstellen Sie ein JSON-Objekt mit den erforderlichen Parametern für dasAuflisten Ihrer Tabellen, das in diesem Beispiel die Anzahl der aufgeführten Tabellen auf 10 begrenzt.Rufen Sie die listTables-Methode des DynamoDB-Serviceobjekts auf.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create the DynamoDB service objectvar ddb = new AWS.DynamoDB({apiVersion: '2012-08-10'});

// Call DynamoDB to retrieve the list of tablesddb.listTables({Limit: 10}, function(err, data) { if (err) { console.log("Error", err.code); } else { console.log("Table names are ", data.TableNames); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node ddb_listtables.js

99

Page 106: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Erstellen und Verwenden von Tabellen in DynamoDB

Diesen Beispielcode finden Sie hier auf GitHub.

Beschreiben einer TabelleErstellen Sie ein Node.js-Modul mit dem Dateinamen ddb_describetable.js. Stellen Sie sicher,dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Um auf DynamoDB zuzugreifen, erstellen Sieein AWS.DynamoDB-Serviceobjekt. Erstellen Sie ein JSON-Objekt mit den erforderlichen Parameternfür die Beschreibung einer Tabelle, das in diesem Beispiel den Namen der Tabelle beinhaltet, der alsBefehlszeilenparameter bereitgestellt wird. Rufen Sie die describeTable-Methode des DynamoDB-Serviceobjekts auf.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create the DynamoDB service objectvar ddb = new AWS.DynamoDB({apiVersion: '2012-08-10'});

var params = { TableName: process.argv[2]};

// Call DynamoDB to retrieve the selected table descriptionsddb.describeTable(params, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data.Table.KeySchema); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node ddb_describetable.js TABLE_NAME

Diesen Beispielcode finden Sie hier auf GitHub.

Löschen einer TabelleErstellen Sie ein Node.js-Modul mit dem Dateinamen ddb_deletetable.js. Stellen Sie sicher,dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Um auf DynamoDB zuzugreifen, erstellen Sieein AWS.DynamoDB-Serviceobjekt. Erstellen Sie ein JSON-Objekt mit den erforderlichen Parameternzum Löschen einer Tabelle, das in diesem Beispiel den Namen der Tabelle beinhaltet, der alsBefehlszeilenparameter bereitgestellt wird. Rufen Sie die deleteTable-Methode des DynamoDB-Serviceobjekts auf.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create the DynamoDB service objectvar ddb = new AWS.DynamoDB({apiVersion: '2012-08-10'});

var params = { TableName: process.argv[2]};

100

Page 107: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Lesen und Schreiben eines

einzelnen Elements in DynamoDB

// Call DynamoDB to delete the specified tableddb.deleteTable(params, function(err, data) { if (err && err.code === 'ResourceNotFoundException') { console.log("Error: Table not found"); } else if (err && err.code === 'ResourceInUseException') { console.log("Error: Table in use"); } else { console.log("Success", data); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node ddb_deletetable.js TABLE_NAME

Diesen Beispielcode finden Sie hier auf GitHub.

Lesen und Schreiben eines einzelnen Elements inDynamoDB

Dieses Node.js-Codebeispiel zeigt:

• So fügen Sie ein Element in einer DynamoDB-Tabelle hinzu.• So rufen Sie ein Element in einer DynamoDB-Tabelle ab.• So löschen Sie ein Element in einer DynamoDB-Tabelle.

Das SzenarioIn diesem Beispiel verwenden Sie eine Reihe von Node.js-Modulen zum Lesen und Schreiben einesElements in einer DynamoDB-Tabelle, indem Sie diese Methoden der AWS.DynamoDB-Client-Klasseverwenden:

• putItem• getItem• deleteItem

Erforderliche AufgabenZum Einrichten und Ausführen dieses Beispiels schließen Sie zunächst diese Aufgaben ab:

• Installieren Sie "Node.js". Weitere Informationen finden Sie auf der Node.js-Website.• Erstellen Sie eine freigegebene Konfigurationsdatei mit Ihren Anmeldeinformationen. Weitere

Informationen zum Bereitstellen einer Datei mit gemeinsam genutzten Anmeldeinformationenfinden Sie unter Laden der Anmeldeinformationen in Node.js aus der freigegebenenAnmeldeinformationsdatei (p. 33).

101

Page 108: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Lesen und Schreiben eines

einzelnen Elements in DynamoDB

• Erstellen Sie eine DynamoDB-Tabelle, auf deren Elemente Sie zugreifen können. Weitere Informationenzum Erstellen einer DynamoDB-Tabelle finden Sie unter Erstellen und Verwenden von Tabellen inDynamoDB (p. 97).

Schreiben eines ElementsErstellen Sie ein Node.js-Modul mit dem Dateinamen ddb_putitem.js. Stellen Sie sicher, dassSie das SDK, wie zuvor dargestellt, konfigurieren. Um auf DynamoDB zuzugreifen, erstellen Sie einAWS.DynamoDB-Serviceobjekt. Erstellen Sie ein JSON-Objekt mit den erforderlichen Parametern für dasHinzufügen eines Elements, das in diesem Beispiel den Namen der Tabelle und eine Map beinhaltet, diedie festzulegenden Attribute und Werte für jedes Attribut definiert. Rufen Sie die putItem-Methode desDynamoDB-Serviceobjekts auf.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create the DynamoDB service objectvar ddb = new AWS.DynamoDB({apiVersion: '2012-08-10'});

var params = { TableName: 'CUSTOMER_LIST', Item: { 'CUSTOMER_ID' : {N: '001'}, 'CUSTOMER_NAME' : {S: 'Richard Roe'} }};

// Call DynamoDB to add the item to the tableddb.putItem(params, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node ddb_putitem.js

Diesen Beispielcode finden Sie hier auf GitHub.

Abrufen eines ElementsErstellen Sie ein Node.js-Modul mit dem Dateinamen ddb_getitem.js. Stellen Sie sicher, dassSie das SDK, wie zuvor dargestellt, konfigurieren. Um auf DynamoDB zuzugreifen, erstellen Sie einAWS.DynamoDB-Serviceobjekt. Zum Identifizieren des abzurufenden Elements müssen Sie den Wert desPrimärschlüssels für dieses Element in der Tabelle angeben. Die getItem-Methode gibt standardmäßigalle Attributwerte zurück, die für das Element definiert sind. Um nur eine Teilmenge aller möglichenAttributwerte abzurufen, geben Sie einen Projektionsausdruck an.

Erstellen Sie ein JSON-Objekt mit den erforderlichen Parametern für das Abrufen eines Elements, dasin diesem Beispiel den Namen der Tabelle, den Namen und Wert des Schlüssels für das abzurufendeElement und einen Projektionsausdruck beinhaltet, der das abzurufende Elementattribut identifiziert. RufenSie die getItem-Methode des DynamoDB-Serviceobjekts auf.

102

Page 109: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Lesen und Schreiben eines

einzelnen Elements in DynamoDB

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create the DynamoDB service objectvar ddb = new AWS.DynamoDB({apiVersion: '2012-08-10'});

var params = { TableName: 'TABLE', Key: { 'KEY_NAME': {N: '001'} }, ProjectionExpression: 'ATTRIBUTE_NAME'};

// Call DynamoDB to read the item from the tableddb.getItem(params, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data.Item); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node ddb_getitem.js

Diesen Beispielcode finden Sie hier auf GitHub.

Löschen eines ElementsErstellen Sie ein Node.js-Modul mit dem Dateinamen ddb_deleteitem.js. Stellen Sie sicher, dassSie das SDK, wie zuvor dargestellt, konfigurieren. Um auf DynamoDB zuzugreifen, erstellen Sie einAWS.DynamoDB-Serviceobjekt. Erstellen Sie ein JSON-Objekt mit den erforderlichen Parametern zumLöschen eines Elements, das in diesem Beispiel den Namen der Tabelle und den Schlüsselnamen sowieden Wert für das zu löschende Element beinhaltet. Rufen Sie die deleteItem-Methode des DynamoDB-Serviceobjekts auf.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create the DynamoDB service objectvar ddb = new AWS.DynamoDB({apiVersion: '2012-08-10'});

var params = { TableName: 'TABLE', Key: { 'KEY_NAME': {N: 'VALUE'} }};

// Call DynamoDB to delete the item from the tableddb.deleteItem(params, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data);

103

Page 110: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Lesen und Schreiben von

Elementen im Stapel in DynamoDB

}});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node ddb_deleteitem.js

Diesen Beispielcode finden Sie hier auf GitHub.

Lesen und Schreiben von Elementen im Stapel inDynamoDB

Dieses Node.js-Codebeispiel zeigt:

• So lesen und schreiben Sie Stapel von Elementen in einer DynamoDB-Tabelle.

Das SzenarioIn diesem Beispiel verwenden Sie eine Reihe von Node.js-Modulen, um einen Stapel von Elementen ineiner DynamoDB-Tabelle abzulegen sowie einen Stapel von Elementen zu lesen. Der Code verwendet dasSDK für JavaScript, um stapelweise Lese- und Schreibvorgänge unter Verwendung dieser Methoden derDynamoDB-Client-Klasse durchzuführen:

• batchGetItem• batchWriteItem

Erforderliche AufgabenZum Einrichten und Ausführen dieses Beispiels schließen Sie zunächst diese Aufgaben ab:

• Installieren Sie "Node.js". Weitere Informationen finden Sie auf der Node.js-Website.• Erstellen Sie eine freigegebene Konfigurationsdatei mit Ihren Anmeldeinformationen. Weitere

Informationen zum Bereitstellen einer Datei mit gemeinsam genutzten Anmeldeinformationenfinden Sie unter Laden der Anmeldeinformationen in Node.js aus der freigegebenenAnmeldeinformationsdatei (p. 33).

• Erstellen Sie eine DynamoDB-Tabelle, auf deren Elemente Sie zugreifen können. Weitere Informationenzum Erstellen einer DynamoDB-Tabelle finden Sie unter Erstellen und Verwenden von Tabellen inDynamoDB (p. 97).

Lesen von Elementen im StapelErstellen Sie ein Node.js-Modul mit dem Dateinamen ddb_batchgetitem.js. Stellen Sie sicher, dassSie das SDK, wie zuvor dargestellt, konfigurieren. Um auf DynamoDB zuzugreifen, erstellen Sie einAWS.DynamoDB-Serviceobjekt. Erstellen Sie ein JSON-Objekt mit den erforderlichen Parametern für dasAbrufen eines Stapels von Elementen, das in diesem Beispiel den Namen einer oder mehrerer zu lesender

104

Page 111: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Lesen und Schreiben von

Elementen im Stapel in DynamoDB

Tabellen, die in jeder Tabelle zu lesenden Werte von Schlüsseln und den Projektionsausdruck beinhaltet,der die zurückzugebenden Attribute angibt. Rufen Sie die batchGetItem-Methode des DynamoDB-Serviceobjekts auf.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create DynamoDB service objectvar ddb = new AWS.DynamoDB({apiVersion: '2012-08-10'});

var params = { RequestItems: { 'TABLE_NAME': { Keys: [ {'KEY_NAME': {N: 'KEY_VALUE_1'}}, {'KEY_NAME': {N: 'KEY_VALUE_2'}}, {'KEY_NAME': {N: 'KEY_VALUE_3'}} ], ProjectionExpression: 'KEY_NAME, ATTRIBUTE' } }};

ddb.batchGetItem(params, function(err, data) { if (err) { console.log("Error", err); } else { data.Responses.TABLE_NAME.forEach(function(element, index, array) { console.log(element); }); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node ddb_batchgetitem.js

Diesen Beispielcode finden Sie hier auf GitHub.

Schreiben von Elementen im StapelErstellen Sie ein Node.js-Modul mit dem Dateinamen ddb_batchwriteitem.js. Stellen Sie sicher,dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Um auf DynamoDB zuzugreifen, erstellen Sie einAWS.DynamoDB-Serviceobjekt. Erstellen Sie ein JSON-Objekt mit den erforderlichen Parametern für dasAbrufen eines Stapels von Elementen, das in diesem Beispiel die Tabelle, in die Sie Elemente schreibenmöchten, den/die Schlüssel, den/die Sie für jedes Element schreiben möchten, und die Attribute zusammenmit ihren Werten beinhaltet. Rufen Sie die batchWriteItem-Methode des DynamoDB-Serviceobjekts auf.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the regionAWS.config.update({region: 'REGION'});

// Create DynamoDB service objectvar ddb = new AWS.DynamoDB({apiVersion: '2012-08-10'});

var params = { RequestItems: { "TABLE_NAME": [

105

Page 112: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Abfragen und Scannen einer DynamoDB-Tabelle

{ PutRequest: { Item: { "KEY": { "N": "KEY_VALUE" }, "ATTRIBUTE_1": { "S": "ATTRIBUTE_1_VALUE" }, "ATTRIBUTE_2": { "N": "ATTRIBUTE_2_VALUE" } } } }, { PutRequest: { Item: { "KEY": { "N": "KEY_VALUE" }, "ATTRIBUTE_1": { "S": "ATTRIBUTE_1_VALUE" }, "ATTRIBUTE_2": { "N": "ATTRIBUTE_2_VALUE" } } } } ] }};

ddb.batchWriteItem(params, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node ddb_batchwriteitem.js

Diesen Beispielcode finden Sie hier auf GitHub.

Abfragen und Scannen einer DynamoDB-Tabelle

Dieses Node.js-Codebeispiel zeigt:

• So fragen Sie eine DynamoDB-Tabelle ab und scannen sie nach Elementen.

Das SzenarioDie Abfrage findet Elemente in einer Tabelle oder einem Sekundärindex nur überPrimärschlüsselattributwerte. Sie müssen einen Partitionsschlüsselnamen und einen Wert angeben, nachdem gesucht werden soll. Sie können auch einen Sortierschlüsselnamen und Wert angeben, und einenVergleichsoperator verwenden, um die Suchergebnisse zu verfeinern. Das Scannen findet Elemente,indem jedes Element in der angegebenen Tabelle überprüft wird.

In diesem Beispiel verwenden Sie eine Reihe von Node.js-Modulen zur Identifizierung eines oder mehrererElemente, die Sie aus einer DynamoDB-Tabelle abrufen möchten. Der Code verwendet das SDK für

106

Page 113: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Abfragen und Scannen einer DynamoDB-Tabelle

JavaScript zum Abfragen und Scannen von Tabellen unter Verwendung dieser Methoden der DynamoDB-Client-Klasse:

• query• scan

Erforderliche AufgabenZum Einrichten und Ausführen dieses Beispiels schließen Sie zunächst diese Aufgaben ab:

• Installieren Sie "Node.js". Weitere Informationen finden Sie auf der Node.js-Website.• Erstellen Sie eine freigegebene Konfigurationsdatei mit Ihren Anmeldeinformationen. Weitere

Informationen zum Bereitstellen einer Datei mit gemeinsam genutzten Anmeldeinformationenfinden Sie unter Laden der Anmeldeinformationen in Node.js aus der freigegebenenAnmeldeinformationsdatei (p. 33).

• Erstellen Sie eine DynamoDB-Tabelle, auf deren Elemente Sie zugreifen können. Weitere Informationenzum Erstellen einer DynamoDB-Tabelle finden Sie unter Erstellen und Verwenden von Tabellen inDynamoDB (p. 97).

Abfragen einer TabelleIn diesem Beispiel wird eine Tabelle abgefragt, die Informationen zu Episoden einer Videoserie enthält, unddie Episodentitel und -untertitel von Episoden der zweiten Staffel nach Episode 9 zurückgegeben, die einenangegebene Begriff im Untertitel enthalten.

Erstellen Sie ein Node.js-Modul mit dem Dateinamen ddb_query.js. Stellen Sie sicher, dass Siedas SDK, wie zuvor dargestellt, konfigurieren. Um auf DynamoDB zuzugreifen, erstellen Sie einAWS.DynamoDB-Serviceobjekt. Erstellen Sie ein JSON-Objekt mit den erforderlichen Parametern fürdas Abfragen der Tabelle, das in diesem Beispiel den Tabellennamen, die von der Abfrage benötigtenExpressionAttributeValues, einen KeyConditionExpression, der diese Werte verwendet,um zu definieren, welche Elemente die Abfrage zurück gibt, und die Namen der für jedes Elementzurückzugebenden Attributwerte beinhaltet. Rufen Sie die query-Methode des DynamoDB-Serviceobjektsauf.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the regionAWS.config.update({region: 'REGION'});

// Create DynamoDB service objectvar ddb = new AWS.DynamoDB({apiVersion: '2012-08-10'});

var params = { ExpressionAttributeValues: { ':s': {N: '2'}, ':e' : {N: '09'}, ':topic' : {S: 'PHRASE'} }, KeyConditionExpression: 'Season = :s and Episode > :e', ProjectionExpression: 'Episode, Title, Subtitle', FilterExpression: 'contains (Subtitle, :topic)', TableName: 'EPISODES_TABLE'};

ddb.query(params, function(err, data) { if (err) { console.log("Error", err);

107

Page 114: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Abfragen und Scannen einer DynamoDB-Tabelle

} else { //console.log("Success", data.Items); data.Items.forEach(function(element, index, array) { console.log(element.Title.S + " (" + element.Subtitle.S + ")"); }); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node ddb_query.js

Diesen Beispielcode finden Sie hier auf GitHub.

Scannen einer TabelleErstellen Sie ein Node.js-Modul mit dem Dateinamen ddb_scan.js. Stellen Sie sicher, dass Sie das SDK,wie zuvor dargestellt, konfigurieren. Um auf DynamoDB zuzugreifen, erstellen Sie ein AWS.DynamoDB-Serviceobjekt. Erstellen Sie ein JSON-Objekt mit den erforderlichen Parametern für das Scannen derTabelle nach Elementen, das in diesem Beispiel den Namen der Tabelle, die Liste der Attributwerte, diefür jedes übereinstimmende Element zurückgegeben werden sollen, und einen Ausdruck zum Filtern desErgebnissatzes beinhaltet, um nach Elementen mit einem bestimmten Begriff zu suchen. Rufen Sie diescan-Methode des DynamoDB-Serviceobjekts auf.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the regionAWS.config.update({region: 'REGION'});

// Create DynamoDB service objectvar ddb = new AWS.DynamoDB({apiVersion: '2012-08-10'});

var params = { ExpressionAttributeValues: { ':s': {N: '2'}, ':e' : {N: '09'}, ':topic' : {S: 'PHRASE'} }, ProjectionExpression: 'Episode, Title, Subtitle', FilterExpression: 'contains (Subtitle, :topic)', TableName: 'EPISODES_TABLE'};

ddb.scan(params, function(err, data) { if (err) { console.log("Error", err); } else { //console.log("Success", data.Items); data.Items.forEach(function(element, index, array) { console.log(element.Title.S + " (" + element.Subtitle.S + ")"); }); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node ddb_scan.js

Diesen Beispielcode finden Sie hier auf GitHub.

108

Page 115: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwenden des DynamoDB-Dokument-Clients

Verwenden des DynamoDB-Dokument-Clients

Dieses Node.js-Codebeispiel zeigt:

• So greifen Sie auf eine DynamoDB-Tabelle mithilfe des Dokument-Clients zu.

Das SzenarioDer DynamoDB-Dokument-Client vereinfacht das Arbeiten mit Elementen durch Abstrahierender Vorstellung von Attributwerten. Diese Abstraktion versieht native JavaScript-Typen, die alsEingabeparameter bereitgestellt werden, mit Anmerkungen und wandelt kommentierte Antwortdaten innative JavaScript-Typen um.

Weitere Informationen über die DynamoDB-Dokument-Client-Klasse finden Sie unterAWS.DynamoDB.DocumentClient in der API-Referenz. Weitere Informationen zum Programmierenmit Amazon DynamoDB finden Sie unter Programmieren mit DynamoDB im Amazon DynamoDB-Entwicklerhandbuch.

In diesem Beispiel verwenden Sie eine Reihe von Node.js-Modulen zum Ausführen einfacher Operationenfür eine DynamoDB-Tabelle mithilfe des Dokument-Clients. Der Code verwendet das SDK für JavaScriptzum Abfragen und Scannen von Tabellen unter Verwendung dieser Methoden der DynamoDB-Dokument-Client-Klasse:

• get• put• update• query• delete

Erforderliche AufgabenZum Einrichten und Ausführen dieses Beispiels schließen Sie zunächst diese Aufgaben ab:

• Installieren Sie "Node.js". Weitere Informationen finden Sie auf der Node.js-Website.• Erstellen Sie eine freigegebene Konfigurationsdatei mit Ihren Anmeldeinformationen. Weitere

Informationen zum Bereitstellen einer Datei mit gemeinsam genutzten Anmeldeinformationenfinden Sie unter Laden der Anmeldeinformationen in Node.js aus der freigegebenenAnmeldeinformationsdatei (p. 33).

• Erstellen Sie eine DynamoDB-Tabelle, auf deren Elemente Sie zugreifen können. Weitere Informationenzum Erstellen einer DynamoDB-Tabelle mit dem SDK für JavaScript finden Sie unter Erstellen undVerwenden von Tabellen in DynamoDB (p. 97). Sie können auch die DynamoDB-Konsole zumErstellen einer Tabelle verwenden.

Abrufen eines Elements aus einer TabelleErstellen Sie ein Node.js-Modul mit dem Dateinamen ddbdoc_get.js. Stellen Sie sicher, dassSie das SDK, wie zuvor dargestellt, konfigurieren. Um auf DynamoDB zuzugreifen, erstellen Sie ein

109

Page 116: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwenden des DynamoDB-Dokument-Clients

AWS.DynamoDB.DocumentClient-Objekt. Erstellen Sie ein JSON-Objekt mit den erforderlichenParametern für das Abrufen eines Elements aus der Tabelle, das in diesem Beispiel den Namen derTabelle, den Namen des Hash-Schlüssels in dieser Tabelle und den Wert des Hash-Schlüssels für dasabzurufende Element beinhaltet. Rufen Sie die get-Methode des DynamoDB-Dokument-Clients auf.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create DynamoDB document clientvar docClient = new AWS.DynamoDB.DocumentClient({apiVersion: '2012-08-10'});

var params = { TableName: 'EPISODES_TABLE', Key: {'KEY_NAME': VALUE}};

docClient.get(params, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data.Item); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node ddbdoc_get.js

Diesen Beispielcode finden Sie hier auf GitHub.

Einfügen eines Elements in eine TabelleErstellen Sie ein Node.js-Modul mit dem Dateinamen ddbdoc_put.js. Stellen Sie sicher, dassSie das SDK, wie zuvor dargestellt, konfigurieren. Um auf DynamoDB zuzugreifen, erstellen Sie einAWS.DynamoDB.DocumentClient-Objekt. Erstellen Sie ein JSON-Objekt mit den erforderlichenParametern für das Schreiben eines Elements in die Tabelle. Dieses beinhaltet in diesem Beispiel denNamen der Tabelle und eine Beschreibung des hinzuzufügenden oder zu aktualisierenden Elements, dasden Hashkey und Wert sowie die Namen und Werte für Attribute beinhaltet, die für das Element festgelegtwerden sollen. Rufen Sie die put-Methode des DynamoDB-Dokument-Clients auf.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create DynamoDB document clientvar docClient = new AWS.DynamoDB.DocumentClient({apiVersion: '2012-08-10'});

var params = { TableName: 'TABLE', Item: { 'HASHKEY': VALUE, 'ATTRIBUTE_1': 'STRING_VALUE', 'ATTRIBUTE_2': VALUE_2 }};

docClient.put(params, function(err, data) {

110

Page 117: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwenden des DynamoDB-Dokument-Clients

if (err) { console.log("Error", err); } else { console.log("Success", data); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node ddbdoc_put.js

Diesen Beispielcode finden Sie hier auf GitHub.

Aktualisieren eines Elements in einer TabelleErstellen Sie ein Node.js-Modul mit dem Dateinamen ddbdoc_update.js. Stellen Sie sicher, dassSie das SDK, wie zuvor dargestellt, konfigurieren. Um auf DynamoDB zuzugreifen, erstellen Sie einAWS.DynamoDB.DocumentClient-Objekt. Erstellen Sie ein JSON-Objekt mit den erforderlichenParametern für das Schreiben eines Elements in die Tabelle, das in diesem Beispiel den Namen derTabelle, den Schlüssel des zu aktualisierenden Elements, eine Reihe von UpdateExpressionsbeinhaltet, die die Attribute des Elements definieren, das mit Token aktualisiert werden soll, denen SieWerte in den ExpressionAttributeValues-Parametern zuweisen. Rufen Sie die update-Methode desDynamoDB-Dokument-Clients auf.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the regionAWS.config.update({region: 'REGION'});

// Create DynamoDB document clientvar docClient = new AWS.DynamoDB.DocumentClient({apiVersion: '2012-08-10'});

// Create variables to hold numeric key valuesvar season = SEASON_NUMBER;var episode = EPISODES_NUMBER;

var params = { TableName: 'EPISODES_TABLE', Key: { 'Season' : season, 'Episode' : episode }, UpdateExpression: 'set Title = :t, Subtitle = :s', ExpressionAttributeValues: { ':t' : 'NEW_TITLE', ':s' : 'NEW_SUBTITLE' }};

docClient.update(params, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node ddbdoc_update.js

111

Page 118: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwenden des DynamoDB-Dokument-Clients

Diesen Beispielcode finden Sie hier auf GitHub.

Abfragen einer TabelleIn diesem Beispiel wird eine Tabelle abgefragt, die Informationen zu Episoden einer Videoserie enthält, unddie Episodentitel und -untertitel von Episoden der zweiten Staffel nach Episode 9 zurückgegeben, die einenangegebene Begriff im Untertitel enthalten.

Erstellen Sie ein Node.js-Modul mit dem Dateinamen ddbdoc_query.js. Stellen Sie sicher, dassSie das SDK, wie zuvor dargestellt, konfigurieren. Um auf DynamoDB zuzugreifen, erstellen Sie einAWS.DynamoDB.DocumentClient-Objekt. Erstellen Sie ein JSON-Objekt mit den erforderlichenParametern für das Abfragen der Tabelle, das in diesem Beispiel den Tabellennamen, die von der Abfragebenötigten ExpressionAttributeValues und einen KeyConditionExpression beinhaltet, derdiese Werte verwendet, um zu definieren, welche Elemente die Abfrage zurück gibt. Rufen Sie die query-Methode des DynamoDB-Dokument-Clients auf.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create DynamoDB document clientvar docClient = new AWS.DynamoDB.DocumentClient({apiVersion: '2012-08-10'});

var params = { ExpressionAttributeValues: { ':s': 2, ':e': 9, ':topic': 'PHRASE' }, KeyConditionExpression: 'Season = :s and Episode > :e', FilterExpression: 'contains (Subtitle, :topic)', TableName: 'EPISODES_TABLE'};

docClient.query(params, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data.Items); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node ddbdoc_query.js

Diesen Beispielcode finden Sie hier auf GitHub.

Löschen eines Elements aus einer TabelleErstellen Sie ein Node.js-Modul mit dem Dateinamen ddbdoc_delete.js. Stellen Sie sicher, dassSie das SDK, wie zuvor dargestellt, konfigurieren. Um auf DynamoDB zuzugreifen, erstellen Sie einAWS.DynamoDB.DocumentClient-Objekt. Erstellen Sie ein JSON-Objekt mit den erforderlichenParametern für das Löschen eines Elements in der Tabelle, das in diesem Beispiel den Namen der Tabellesowie den Namen und Wert des Hashkey des zu löschenden Elements beinhaltet. Rufen Sie die delete-Methode des DynamoDB-Dokument-Clients auf.

// Load the AWS SDK for Node.js

112

Page 119: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Amazon EC2 Beispiele

var AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create DynamoDB document clientvar docClient = new AWS.DynamoDB.DocumentClient({apiVersion: '2012-08-10'});

var params = { Key: { 'HASH_KEY': VALUE }, TableName: 'TABLE'};

docClient.delete(params, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node ddbdoc_delete.js

Diesen Beispielcode finden Sie hier auf GitHub.

Amazon EC2 BeispieleAmazon Elastic Compute Cloud (Amazon EC2) ist ein Webservice, der das Hosting virtueller Server in derCloud bereitstellt. Er wurde entwickelt, um webweites Cloud-Computing durch Bereitstellung skalierbarerRechenkapazität für Entwickler einfacher zu machen.

Die JavaScript-API für Amazon EC2 wird über die AWS.EC2-Client-Klasse bereitgestellt. WeitereInformationen zur Verwendung der Amazon EC2-Client-Klasse finden Sie unter Klasse: AWS.EC2 in derAPI-Referenz.

Themen• Erstellen einer Amazon EC2-Instance (p. 114)• Verwalten von Amazon EC2-Instances (p. 115)• Arbeiten mit Amazon EC2-Schlüsselpaaren (p. 120)• Verwenden von Regionen und Availability Zones mit Amazon EC2 (p. 122)• Arbeiten mit Sicherheitsgruppen in Amazon EC2 (p. 124)• Verwenden von Elastic IP-Adressen in Amazon EC2 (p. 127)

113

Page 120: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Erstellen einer Amazon EC2-Instance

Erstellen einer Amazon EC2-Instance

Dieses Node.js-Codebeispiel zeigt:

• So erstellen Sie eine Amazon EC2-Instance aus einem öffentlichen Amazon-Systemabbild (AMI).• So erstellen Sie Tags und weisen sie der neuen Amazon EC2-Instance zu

Informationen zum BeispielIn diesem Beispiel verwenden Sie ein Node.js-Modul zum Erstellen einer Amazon EC2-Instance undweisen dieser sowohl ein Schlüsselpaar als auch Tags zu. Der Code verwendet das SDK für JavaScript,um eine Instance zu erstellen und zu markieren, indem diese Methoden der Amazon EC2-Client-Klasseverwendet werden:

• runInstances

• createTags

Erforderliche AufgabenZum Einrichten und Ausführen dieses Beispiels schließen Sie zunächst diese Aufgaben ab.

• Installieren Sie "Node.js". Weitere Informationen finden Sie auf der Node.js-Website.• Erstellen Sie eine freigegebene Konfigurationsdatei mit Ihren Anmeldeinformationen. Weitere

Informationen zum Bereitstellen einer Datei mit gemeinsam genutzten Anmeldeinformationenfinden Sie unter Laden der Anmeldeinformationen in Node.js aus der freigegebenenAnmeldeinformationsdatei (p. 33).

• Erstellen eines Schlüsselpaares Details dazu finden Sie unter Arbeiten mit Amazon EC2-Schlüsselpaaren (p. 120). Sie verwenden den Namen des Schlüsselpaars in diesem Beispiel.

Erstellen und Markieren einer InstanceErstellen Sie ein Node.js-Modul mit dem Dateinamen ec2_createinstances.js. Stellen Sie sicher,dass Sie das SDK, wie zuvor dargestellt, konfigurieren.

Erstellen Sie ein Objekt, um die Parameter für die runInstances-Methode der AWS.EC2-Client-Klasse zu übergeben, einschließlich dem Namen des zuzuweisenden Schlüsselpaars und der ID desauszuführenden AMIs. Um die runInstances-Methode aufzurufen, erstellen Sie ein Promise für denAufruf eines Amazon EC2-Serviceobjekts und übergeben die Parameter. Verarbeiten Sie anschließend dieresponse im Promise-Callback.

Der Code fügt als nächstes einer neuen Instance ein Name-Tag hinzu, das die Amazon EC2-Konsoleerkennt und im Feld Name der Instance-Liste anzeigt. Sie können einer Instance bis zu 50 Tagshinzufügen, die alle in einem einzigen Aufruf der createTags-Methode hinzugefügt werden können.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');

114

Page 121: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwalten von Amazon EC2-Instances

// Load credentials and set region from JSON fileAWS.config.update({region: 'REGION'});

// Create EC2 service objectvar ec2 = new AWS.EC2({apiVersion: '2016-11-15'});

// AMI is amzn-ami-2011.09.1.x86_64-ebsvar instanceParams = { ImageId: 'AMI_ID', InstanceType: 't2.micro', KeyName: 'KEY_PAIR_NAME', MinCount: 1, MaxCount: 1};

// Create a promise on an EC2 service objectvar instancePromise = new AWS.EC2({apiVersion: '2016-11-15'}).runInstances(instanceParams).promise();

// Handle promise's fulfilled/rejected statesinstancePromise.then( function(data) { console.log(data); var instanceId = data.Instances[0].InstanceId; console.log("Created instance", instanceId); // Add tags to the instance tagParams = {Resources: [instanceId], Tags: [ { Key: 'Name', Value: 'SDK Sample' } ]}; // Create a promise on an EC2 service object var tagPromise = new AWS.EC2({apiVersion: '2016-11-15'}).createTags(tagParams).promise(); // Handle promise's fulfilled/rejected states tagPromise.then( function(data) { console.log("Instance tagged"); }).catch( function(err) { console.error(err, err.stack); }); }).catch( function(err) { console.error(err, err.stack); });

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node ec2_createinstances.js

Diesen Beispielcode finden Sie hier auf GitHub.

Verwalten von Amazon EC2-Instances

115

Page 122: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwalten von Amazon EC2-Instances

Dieses Node.js-Codebeispiel zeigt:

• So rufen Sie grundlegende Informationen über Ihre Amazon EC2-Instances ab.• So starten und beenden Sie die detaillierte Überwachung einer Amazon EC2-Instance.• So starten und beenden Sie eine Amazon EC2-Instance.• So starten Sie eine Amazon EC2-Instance neu.

Das SzenarioIn diesem Beispiel verwenden Sie eine Reihe von Node.js-Modulen zum Ausführen mehrerer einfacherInstance-Verwaltungsoperationen. Die Node.js-Module verwenden das SDK für JavaScript, um Instanceszu verwalten, indem diese Amazon EC2-Client-Klassenmethoden verwendet werden:

• describeInstances

• monitorInstances

• unmonitorInstances

• startInstances

• stopInstances

• rebootInstances

Weitere Informationen zum Lebenszyklus der Amazon EC2-Instances finden Sie unter Instance-Lebenszyklus im Amazon EC2-Benutzerhandbuch für Linux-Instances.

Erforderliche AufgabenZum Einrichten und Ausführen dieses Beispiels schließen Sie zunächst diese Aufgaben ab:

• Installieren Sie "Node.js". Weitere Informationen über die Installation von Node.js finden Sie auf derNode.js-Website.

• Erstellen Sie eine freigegebene Konfigurationsdatei mit Ihren Anmeldeinformationen. WeitereInformationen zum Bereitstellen einer Datei mit gemeinsam genutzten Anmeldeinformationenfinden Sie unter Laden der Anmeldeinformationen in Node.js aus der freigegebenenAnmeldeinformationsdatei (p. 33).

• Erstellen einer Amazon EC2-Instance Weitere Informationen zum Erstellen von Amazon EC2-Instancesfinden Sie unter Amazon EC2-Instances im Amazon EC2-Benutzerhandbuch für Linux-Instances oderAmazon EC2- Instances im Amazon EC2-Benutzerhandbuch für Windows-Instances.

Beschreiben Ihrer InstancesErstellen Sie ein Node.js-Modul mit dem Dateinamen ec2_describeinstances.js. Stellen Sie sicher,dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Um auf Amazon EC2 zuzugreifen, erstellen Sie einAWS.EC2-Serviceobjekt. Rufen Sie die describeInstances-Methode des Amazon EC2-Serviceobjektsauf, um eine detaillierte Beschreibung Ihrer Instances abzurufen.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create EC2 service objectvar ec2 = new AWS.EC2({apiVersion: '2016-11-15'});

116

Page 123: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwalten von Amazon EC2-Instances

var params = { DryRun: false};

// Call EC2 to retrieve policy for selected bucketec2.describeInstances(params, function(err, data) { if (err) { console.log("Error", err.stack); } else { console.log("Success", JSON.stringify(data)); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node ec2_describeinstances.js

Diesen Beispielcode finden Sie hier auf GitHub.

Verwalten der Instance-ÜberwachungErstellen Sie ein Node.js-Modul mit dem Dateinamen ec2_monitorinstances.js. Stellen Sie sicher,dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Um auf Amazon EC2 zuzugreifen, erstellen Sieein AWS.EC2-Serviceobjekt. Fügen Sie die Instance-IDs der Instances hinzu, für die Sie die Überwachungsteuern möchten.

Rufen Sie basierend auf dem Wert eines Befehlszeilenarguments (ON oder OFF) entweder diemonitorInstances-Methode des Amazon EC2-Serviceobjekts auf, um eine detaillierte Überwachung derangegebenen Instances zu starten, oder rufen Sie die unmonitorInstances-Methode auf. VerwendenSie den DryRun-Parameter, um zu testen, ob Sie über die Berechtigung zum Ändern der Instance-Überwachung verfügen, bevor Sie versuchen, die Überwachung dieser Instances zu ändern.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create EC2 service objectvar ec2 = new AWS.EC2({apiVersion: '2016-11-15'});

var params = { InstanceIds: ['INSTANCE_ID'], DryRun: true};

if (process.argv[2].toUpperCase() === "ON") { // Call EC2 to start monitoring the selected instances ec2.monitorInstances(params, function(err, data) { if (err && err.code === 'DryRunOperation') { params.DryRun = false; ec2.monitorInstances(params, function(err, data) { if (err) { console.log("Error", err); } else if (data) { console.log("Success", data.InstanceMonitorings); } }); } else { console.log("You don't have permission to change instance monitoring."); } });

117

Page 124: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwalten von Amazon EC2-Instances

} else if (process.argv[2].toUpperCase() === "OFF") { // Call EC2 to stop monitoring the selected instances ec2.unmonitorInstances(params, function(err, data) { if (err && err.code === 'DryRunOperation') { params.DryRun = false; ec2.unmonitorInstances(params, function(err, data) { if (err) { console.log("Error", err); } else if (data) { console.log("Success", data.InstanceMonitorings); } }); } else { console.log("You don't have permission to change instance monitoring."); } });}

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein und legen Sie ON zum Startender detaillierten Überwachung oder OFF zum Stoppen der Überwachung fest.

node ec2_monitorinstances.js ON

Diesen Beispielcode finden Sie hier auf GitHub.

Starten und Stoppen der InstancesErstellen Sie ein Node.js-Modul mit dem Dateinamen ec2_startstopinstances.js. Stellen Sie sicher,dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Um auf Amazon EC2 zuzugreifen, erstellen Sieein AWS.EC2-Serviceobjekt. Fügen Sie die Instance-IDs der Instances hinzu, die Sie starten oder stoppenmöchten.

Rufen Sie basierend auf dem Wert eines Befehlszeilenarguments (START oder STOP) entweder diestartInstances-Methode des Amazon EC2-Serviceobjekts auf, um die angegebenen Instances zustarten, oder die stopInstances-Methode, um sie zu stoppen. Verwenden Sie den DryRun-Parameter,um zu testen, ob Sie berechtigt sind, bevor Sie versuchen, die ausgewählten Instances zu starten oder zustoppen.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create EC2 service objectvar ec2 = new AWS.EC2({apiVersion: '2016-11-15'});

var params = { InstanceIds: [process.argv[3]], DryRun: true};

if (process.argv[2].toUpperCase() === "START") { // Call EC2 to start the selected instances ec2.startInstances(params, function(err, data) { if (err && err.code === 'DryRunOperation') { params.DryRun = false; ec2.startInstances(params, function(err, data) { if (err) { console.log("Error", err); } else if (data) { console.log("Success", data.StartingInstances);

118

Page 125: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwalten von Amazon EC2-Instances

} }); } else { console.log("You don't have permission to start instances."); } });} else if (process.argv[2].toUpperCase() === "STOP") { // Call EC2 to stop the selected instances ec2.stopInstances(params, function(err, data) { if (err && err.code === 'DryRunOperation') { params.DryRun = false; ec2.stopInstances(params, function(err, data) { if (err) { console.log("Error", err); } else if (data) { console.log("Success", data.StoppingInstances); } }); } else { console.log("You don't have permission to stop instances"); } });}

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein und legen Sie START fest, umdie Instances zu starten, oder STOP, um sie zu stoppen.

node ec2_startstopinstances.js START INSTANCE_ID

Diesen Beispielcode finden Sie hier auf GitHub.

Neustarten von InstancesErstellen Sie ein Node.js-Modul mit dem Dateinamen ec2_rebootinstances.js. Stellen Sie sicher,dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Um auf Amazon EC2 zuzugreifen, erstellen Sie einAmazon EC2-Serviceobjekt. Fügen Sie die Instance-IDs der Instances hinzu, die Sie neu starten möchten.Rufen Sie die rebootInstances-Methode des AWS.EC2-Serviceobjekts auf, um die angegebenenInstances neu zu starten. Verwenden Sie den DryRun-Parameter, um zu testen, ob Sie berechtigt sind,diese Instances neu zu starten, bevor Sie versuchen, sie neu zu starten.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create EC2 service objectvar ec2 = new AWS.EC2({apiVersion: '2016-11-15'});

var params = { InstanceIds: ['INSTANCE_ID'], DryRun: true};

// Call EC2 to reboot instancesec2.rebootInstances(params, function(err, data) { if (err && err.code === 'DryRunOperation') { params.DryRun = false; ec2.rebootInstances(params, function(err, data) { if (err) { console.log("Error", err); } else if (data) {

119

Page 126: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Arbeiten mit Amazon EC2-Schlüsselpaaren

console.log("Success", data); } }); } else { console.log("You don't have permission to reboot instances."); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node ec2_rebootinstances.js

Diesen Beispielcode finden Sie hier auf GitHub.

Arbeiten mit Amazon EC2-Schlüsselpaaren

Dieses Node.js-Codebeispiel zeigt:

• So rufen Sie grundlegende Informationen über Ihre Schlüsselpaare ab.• So erstellen Sie ein Schlüsselpaar, um auf eine Amazon EC2-Instance zuzugreifen.• So löschen Sie ein vorhandenes Schlüsselpaar.

Das SzenarioAmazon EC2 verwendet eine Kryptografie für öffentliche Schlüssel, um Anmeldeinformationen zu ver- undentschlüsseln. Bei der Kryptografie für öffentliche Schlüssel werden öffentliche Schlüssel eingesetzt, umDaten zu verschlüsseln. Der Empfänger entschlüsselt diese Daten dann mit einem privaten Schlüssel. Deröffentliche und der private Schlüssel werden als Schlüsselpaar bezeichnet.

In diesem Beispiel verwenden Sie eine Reihe von Node.js-Modulen zum Ausführen mehrerer AmazonEC2-Schlüsselpaar-Verwaltungsoperationen. Die Node.js-Module verwenden das SDK für JavaScript, umInstances zu verwalten, indem diese Methoden der Amazon EC2-Client-Klasse verwendet werden:

• createKeyPair

• deleteKeyPair

• describeKeyPairs

Weitere Informationen zu den Amazon EC2-Schlüsselpaaren finden Sie unter Amazon EC2-Schlüsselpaareim Amazon EC2-Benutzerhandbuch für Linux-Instances oder unter Amazon EC2-Schlüsselpaare undWindows-Instances im Amazon EC2-Benutzerhandbuch für Windows-Instances.

Erforderliche AufgabenZum Einrichten und Ausführen dieses Beispiels schließen Sie zunächst diese Aufgaben ab:

• Installieren Sie "Node.js". Weitere Informationen über die Installation von Node.js finden Sie auf derNode.js-Website.

120

Page 127: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Arbeiten mit Amazon EC2-Schlüsselpaaren

• Erstellen Sie eine freigegebene Konfigurationsdatei mit Ihren Anmeldeinformationen. WeitereInformationen zum Bereitstellen einer Datei mit gemeinsam genutzten Anmeldeinformationenfinden Sie unter Laden der Anmeldeinformationen in Node.js aus der freigegebenenAnmeldeinformationsdatei (p. 33).

Beschreiben Ihrer SchlüsselpaareErstellen Sie ein Node.js-Modul mit dem Dateinamen ec2_describekeypairs.js. Stellen Sie sicher,dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Um auf Amazon EC2 zuzugreifen, erstellen Sie einAWS.EC2-Serviceobjekt. Erstellen Sie ein leeres JSON-Objekt zum Speichern der Parameter, die von derdescribeKeyPairs-Methode zur Rückgabe von Beschreibungen für alle Ihre Schlüsselpaare benötigtwerden. Sie können auch ein Array von Namen von Schlüsselpaaren im KeyName-Teil der Parameter derJSON-Datei für die describeKeyPairs-Methode bereitstellen.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create EC2 service objectvar ec2 = new AWS.EC2({apiVersion: '2016-11-15'});

// Retrieve key pair descriptions; no params neededec2.describeKeyPairs(function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", JSON.stringify(data.KeyPairs)); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node ec2_describekeypairs.js

Diesen Beispielcode finden Sie hier auf GitHub.

Erstellen eines SchlüsselpaarsJedes Schlüsselpaar benötigt einen Namen. Amazon EC2 ordnet den öffentlichen Schlüssel demNamen zu, den Sie als Schlüsselnamen angeben. Erstellen Sie ein Node.js-Modul mit dem Dateinamenec2_createkeypair.js. Stellen Sie sicher, dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Umauf Amazon EC2 zuzugreifen, erstellen Sie ein AWS.EC2-Serviceobjekt. Erstellen Sie die JSON-Parameter,um den Namen des Schlüsselpaars anzugeben, und übergeben sie dann, um die createKeyPair -Methode aufzurufen.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create EC2 service objectvar ec2 = new AWS.EC2({apiVersion: '2016-11-15'});

var params = { KeyName: 'KEY_PAIR_NAME'};

121

Page 128: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwenden von Regionen und

Availability Zones mit Amazon EC2

// Create the key pairec2.createKeyPair(params, function(err, data) { if (err) { console.log("Error", err); } else { console.log(JSON.stringify(data)); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node ec2_createkeypair.js

Diesen Beispielcode finden Sie hier auf GitHub.

Löschen eines SchlüsselpaarsErstellen Sie ein Node.js-Modul mit dem Dateinamen ec2_deletekeypair.js. Stellen Sie sicher,dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Um auf Amazon EC2 zuzugreifen, erstellen Sieein AWS.EC2-Serviceobjekt. Erstellen Sie die JSON-Parameter, um den Namen des Schlüsselpaarsanzugeben, das Sie löschen möchten. Rufen Sie anschließend die Methode deleteKeyPair auf.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create EC2 service objectvar ec2 = new AWS.EC2({apiVersion: '2016-11-15'});

var params = { KeyName: 'KEY_PAIR_NAME'};

// Delete the key pairec2.deleteKeyPair(params, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Key Pair Deleted"); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node ec2_deletekeypair.js

Diesen Beispielcode finden Sie hier auf GitHub.

Verwenden von Regionen und Availability Zones mitAmazon EC2

122

Page 129: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwenden von Regionen und

Availability Zones mit Amazon EC2

Dieses Node.js-Codebeispiel zeigt:

• So rufen Sie Beschreibungen für Regionen und Availability Zones ab.

Das SzenarioAmazon EC2 wird an mehreren Standorten weltweit gehostet. Diese Standorte bestehen aus Regionen undAvailability Zones. Jede Region ist ein separater geografischer Bereich. Jede Region verfügt über mehrereisolierte Standorte, die als Availability Zones bezeichnet werden. Mit Amazon EC2 können Sie Instancesund Daten an mehreren Standorten anordnen.

In diesem Beispiel verwenden Sie eine Reihe von Node.js-Modulen zum Abrufen von Details überRegionen und Availability Zones. Die Node.js-Module verwenden das SDK für JavaScript, um Instances zuverwalten, indem die folgenden Methoden der Amazon EC2-Client-Klasse verwendet werden:

• describeAvailabilityZones

• describeRegions

Weitere Informationen zu Regionen und Availability Zones finden Sie unter Regionen und Availability Zonesim Amazon EC2-Benutzerhandbuch für Linux-Instances oder unter Regionen und Availability Zones imAmazon EC2-Benutzerhandbuch für Windows-Instances.

Erforderliche AufgabenZum Einrichten und Ausführen dieses Beispiels müssen Sie zunächst diese Aufgaben abschließen:

• Installieren Sie "Node.js". Weitere Informationen über die Installation von Node.js finden Sie auf derNode.js-Website.

• Erstellen Sie eine freigegebene Konfigurationsdatei mit Ihren Anmeldeinformationen. WeitereInformationen zum Bereitstellen einer Datei mit gemeinsam genutzten Anmeldeinformationenfinden Sie unter Laden der Anmeldeinformationen in Node.js aus der freigegebenenAnmeldeinformationsdatei (p. 33).

Beschreiben von Regionen und Availability ZonesErstellen Sie ein Node.js-Modul mit dem Dateinamen ec2_describeregionsandzones.js. Stellen Siesicher, dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Um auf Amazon EC2 zuzugreifen, erstellenSie ein AWS.EC2-Serviceobjekt. Erstellen Sie ein leeres JSON-Objekt, das als Parameter übergebenwerden soll, das alle verfügbaren Beschreibungen zurück gibt. Rufen Sie anschließend die MethodendescribeRegions und describeAvailabilityZones auf.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create EC2 service objectvar ec2 = new AWS.EC2({apiVersion: '2016-11-15'});

var params = {};

// Retrieves all regions/endpoints that work with EC2ec2.describeRegions(params, function(err, data) { if (err) { console.log("Error", err); } else {

123

Page 130: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Arbeiten mit Sicherheitsgruppen in Amazon EC2

console.log("Regions: ", data.Regions); }});

// Retrieves availability zones only for region of the ec2 service objectec2.describeAvailabilityZones(params, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Availability Zones: ", data.AvailabilityZones); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node ec2_describeregionsandzones.js

Diesen Beispielcode finden Sie hier auf GitHub.

Arbeiten mit Sicherheitsgruppen in Amazon EC2

Dieses Node.js-Codebeispiel zeigt:

• So rufen Sie grundlegende Informationen über Ihre Sicherheitsgruppen ab.• So erstellen Sie eine Sicherheitsgruppe für den Zugriff auf eine Amazon EC2-Instance.• So löschen Sie eine bestehende Sicherheitsgruppe.

Das SzenarioEine Amazon EC2-Sicherheitsgruppe fungiert als virtuelle Firewall, die den Datenverkehr für eine odermehrere Instances steuert. Sie fügen jeder Sicherheitsgruppe Regeln hinzu, um den Datenaustauschmit den verknüpften Instances zu gestatten. Diese Regeln können Sie jederzeit ändern, wobei die neuenRegeln automatisch auf alle Instances der Sicherheitsgruppe angewendet werden.

In diesem Beispiel verwenden Sie eine Reihe von Node.js-Modulen zum Ausführen mehrerer Amazon EC2-Operationen mit Sicherheitsgruppen. Die Node.js-Module verwenden das SDK für JavaScript, um Instanceszu verwalten, indem die folgenden Methoden der Amazon EC2-Client-Klasse verwendet werden:

• describeSecurityGroups

• authorizeSecurityGroupIngress

• createSecurityGroup

• describeVpcs

• deleteSecurityGroup

Weitere Informationen zu den Amazon EC2;-Sicherheitsgruppen finden Sie unter Amazon EC2-Sicherheitsgruppen für Linux-Instances im Amazon EC2-Benutzerhandbuch für Linux-Instances oder unterAmazon EC2-Sicherheitsgruppen für Windows-Instances im Amazon EC2-Benutzerhandbuch für Windows-Instances.

124

Page 131: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Arbeiten mit Sicherheitsgruppen in Amazon EC2

Erforderliche AufgabenZum Einrichten und Ausführen dieses Beispiels schließen Sie zunächst diese Aufgaben ab:

• Installieren Sie "Node.js". Weitere Informationen über die Installation von Node.js finden Sie auf derNode.js-Website.

• Erstellen Sie eine freigegebene Konfigurationsdatei mit Ihren Anmeldeinformationen. WeitereInformationen zum Bereitstellen einer Datei mit gemeinsam genutzten Anmeldeinformationenfinden Sie unter Laden der Anmeldeinformationen in Node.js aus der freigegebenenAnmeldeinformationsdatei (p. 33).

Beschreiben Ihrer SicherheitsgruppenErstellen Sie ein Node.js-Modul mit dem Dateinamen ec2_describesecuritygroups.js. Stellen Siesicher, dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Um auf Amazon EC2 zuzugreifen, erstellenSie ein AWS.EC2-Serviceobjekt. Erstellen Sie ein JSON-Objekt, das als Parameter übergeben werden soll,einschließlich der Gruppen-IDs für die Sicherheitsgruppen, die Sie beschreiben möchten. Rufen Sie danndie describeSecurityGroups-Methode des Amazon EC2-Serviceobjekts auf.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create EC2 service objectvar ec2 = new AWS.EC2({apiVersion: '2016-11-15'});

var params = { GroupIds: ['SECURITY_GROUP_ID']};

// Retrieve security group descriptionsec2.describeSecurityGroups(params, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", JSON.stringify(data.SecurityGroups)); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node ec2_describesecuritygroups.js

Diesen Beispielcode finden Sie hier auf GitHub.

Erstellen von Regeln und einer SicherheitsgruppeErstellen Sie ein Node.js-Modul mit dem Dateinamen ec2_createsecuritygroup.js. Stellen Siesicher, dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Um auf Amazon EC2 zuzugreifen, erstellenSie ein AWS.EC2-Serviceobjekt. Erstellen Sie ein JSON-Objekt für die Parameter, die den Namen derSicherheitsgruppe, eine Beschreibung und die ID für die VPC festlegen. Übergeben Sie die Parameter andie createSecurityGroup-Methode.

Nachdem Sie die Sicherheitsgruppe erfolgreich erstellt haben, können Sie Regeln zum Zulassen deseingehenden Datenverkehrs definieren. Erstellen Sie ein JSON-Objekt für Parameter, die das IP-Protokollund eingehende Ports angeben, auf die die Amazon EC2-Instance Datenverkehr empfängt. Übergeben Siedie Parameter an die authorizeSecurityGroupIngress-Methode.

125

Page 132: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Arbeiten mit Sicherheitsgruppen in Amazon EC2

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Load credentials and set region from JSON fileAWS.config.update({region: 'REGION'});

// Create EC2 service objectvar ec2 = new AWS.EC2({apiVersion: '2016-11-15'});

// Variable to hold a ID of a VPCvar vpc = null;

// Retrieve the ID of a VPCec2.describeVpcs(function(err, data) { if (err) { console.log("Cannot retrieve a VPC", err); } else { vpc = data.Vpcs[0].VpcId; var paramsSecurityGroup = { Description: 'DESCRIPTION', GroupName: 'SECURITY_GROUP_NAME', VpcId: vpc }; // Create the instance ec2.createSecurityGroup(paramsSecurityGroup, function(err, data) { if (err) { console.log("Error", err); } else { var SecurityGroupId = data.GroupId; console.log("Success", SecurityGroupId); var paramsIngress = { GroupId: 'SECURITY_GROUP_ID', IpPermissions:[ { IpProtocol: "tcp", FromPort: 80, ToPort: 80, IpRanges: [{"CidrIp":"0.0.0.0/0"}] }, { IpProtocol: "tcp", FromPort: 22, ToPort: 22, IpRanges: [{"CidrIp":"0.0.0.0/0"}] } ] }; ec2.authorizeSecurityGroupIngress(paramsIngress, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Ingress Successfully Set", data); } }); } }); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node ec2_createsecuritygroup.js

Diesen Beispielcode finden Sie hier auf GitHub.

126

Page 133: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwenden von Elastic IP-Adressen in Amazon EC2

Löschen einer SicherheitsgruppeErstellen Sie ein Node.js-Modul mit dem Dateinamen ec2_deletesecuritygroup.js. Stellen Siesicher, dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Um auf Amazon EC2 zuzugreifen, erstellenSie ein AWS.EC2-Serviceobjekt. Erstellen Sie die JSON-Parameter, um den Namen der Sicherheitsgruppeanzugeben, die Sie löschen möchten. Rufen Sie anschließend die Methode deleteSecurityGroup auf.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create EC2 service objectvar ec2 = new AWS.EC2({apiVersion: '2016-11-15'});

var params = { GroupId: 'SECURITY_GROUP_ID'};

// Delete the security groupec2.deleteSecurityGroup(params, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Security Group Deleted"); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node ec2_deletesecuritygroup.js

Diesen Beispielcode finden Sie hier auf GitHub.

Verwenden von Elastic IP-Adressen in Amazon EC2

Dieses Node.js-Codebeispiel zeigt:

• So fragen Sie Beschreibungen Ihrer Elastic IP-Adressen ab.• So ordnen Sie eine Elastic IP-Adresse zu und geben sie frei.• So ordnen Sie eine Elastic IP-Adresse einer Amazon EC2-Instance zu.

Das SzenarioEine Elastic IP-Adresse ist eine statische IP-Adresse, die für dynamisches Cloud Computing konzipiert ist.Eine Elastic IP-Adresse ist mit Ihrem AWS-Konto verknüpft. Es ist eine öffentliche IP-Adresse, die aus demInternet erreichbar ist. Wenn Ihre Instance keine öffentliche IP-Adresse hat, können Sie eine Elastic IP-Adresse mit der Instance verknüpfen, damit diese mit dem Internet kommunizieren kann.

127

Page 134: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwenden von Elastic IP-Adressen in Amazon EC2

In diesem Beispiel verwenden Sie eine Reihe von Node.js-Modulen zum Ausführen mehrerer Amazon EC2-Operationen mit Elastic IP-Adressen. Die Node.js-Module verwenden das SDK für JavaScript, um ElasticIP-Adressen zu verwalten, indem diese Methoden der Amazon EC2-Client-Klasse verwendet werden:

• describeAddresses

• allocateAddress

• associateAddress

• releaseAddress

Weitere Informationen zu Elastic IP-Adressen in Amazon EC2 finden Sie unter Elastic IP-Adressen imAmazon EC2-Benutzerhandbuch für Linux-Instances oder unter Elastic IP-Adressen im Amazon EC2-Benutzerhandbuch für Windows-Instances.

Erforderliche AufgabenZum Einrichten und Ausführen dieses Beispiels schließen Sie zunächst diese Aufgaben ab:

• Installieren Sie "Node.js". Weitere Informationen über die Installation von Node.js finden Sie auf derNode.js-Website.

• Erstellen Sie eine freigegebene Konfigurationsdatei mit Ihren Anmeldeinformationen. WeitereInformationen zum Bereitstellen einer Datei mit gemeinsam genutzten Anmeldeinformationenfinden Sie unter Laden der Anmeldeinformationen in Node.js aus der freigegebenenAnmeldeinformationsdatei (p. 33).

• Erstellen einer Amazon EC2-Instance Weitere Informationen zum Erstellen von Amazon EC2-Instancesfinden Sie unter Amazon EC2-Instances im Amazon EC2-Benutzerhandbuch für Linux-Instances oderAmazon EC2- Instances im Amazon EC2-Benutzerhandbuch für Windows-Instances.

Beschreiben von Elastic IP-AdressenErstellen Sie ein Node.js-Modul mit dem Dateinamen ec2_describeaddresses.js. Stellen Sie sicher,dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Um auf Amazon EC2 zuzugreifen, erstellen Sie einAWS.EC2-Serviceobjekt. Erstellen Sie ein JSON-Objekt, das als Parameter übergeben werden soll, dasdie Adressen filtert, die von denen in Ihrer VPC zurückgegeben werden. Um die Beschreibungen aller IhrerElastic IP-Adressen abzurufen, lassen Sie einen Filter von der Parameter-JSON weg. Rufen Sie dann diedescribeAddresses-Methode des Amazon EC2-Serviceobjekts auf.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create EC2 service objectvar ec2 = new AWS.EC2({apiVersion: '2016-11-15'});

var params = { Filters: [ {Name: 'domain', Values: ['vpc']} ]};

// Retrieve Elastic IP address descriptionsec2.describeAddresses(params, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", JSON.stringify(data.Addresses)); }

128

Page 135: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwenden von Elastic IP-Adressen in Amazon EC2

});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node ec2_describeaddresses.js

Diesen Beispielcode finden Sie hier auf GitHub.

Zuweisen und Verknüpfen einer Elastic IP-Adresse mit einerAmazon EC2-InstanceErstellen Sie ein Node.js-Modul mit dem Dateinamen ec2_allocateaddress.js. Stellen Sie sicher,dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Um auf Amazon EC2 zuzugreifen, erstellen Sie einAWS.EC2-Serviceobjekt. Erstellen Sie ein JSON-Objekt für die Parameter, die zum Zuweisen einer ElasticIP-Adresse verwendet werden, mit dem in diesem Fall angegeben wird, dass es sich bei der Domain umeine VPC handelt. Rufen Sie die allocateAddress-Methode des Amazon EC2-Serviceobjekts auf.

Bei erfolgreichem Aufruf verfügt der data-Parameter der Callback-Funktion über eine AllocationId-Eigenschaft, die die zugewiesene Elastic IP-Adresse identifiziert.

Erstellen Sie ein JSON-Objekt für die Parameter, die zum Verknüpfen einer Elastic IP-Adresse mit einerAmazon EC2-Instance verwendet werden, einschließlich der AllocationId aus der neu zugewiesenenAdresse und der InstanceId der Amazon EC2-Instance. Rufen Sie dann die associateAddresses-Methode des Amazon EC2-Serviceobjekts auf.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create EC2 service objectvar ec2 = new AWS.EC2({apiVersion: '2016-11-15'});

var paramsAllocateAddress = { Domain: 'vpc'};

// Allocate the Elastic IP addressec2.allocateAddress(paramsAllocateAddress, function(err, data) { if (err) { console.log("Address Not Allocated", err); } else { console.log("Address allocated:", data.AllocationId); var paramsAssociateAddress = { AllocationId: data.AllocationId, InstanceId: 'INSTANCE_ID' }; // Associate the new Elastic IP address with an EC2 instance ec2.associateAddress(paramsAssociateAddress, function(err, data) { if (err) { console.log("Address Not Associated", err); } else { console.log("Address associated:", data.AssociationId); } }); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

129

Page 136: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2MediaConvert Beispiele

node ec2_allocateaddress.js

Diesen Beispielcode finden Sie hier auf GitHub.

Freigeben einer Elastic IP-AdresseErstellen Sie ein Node.js-Modul mit dem Dateinamen ec2_releaseaddress.js. Stellen Sie sicher,dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Um auf Amazon EC2 zuzugreifen, erstellen Sie einAWS.EC2-Serviceobjekt. Erstellen Sie ein JSON-Objekt für die Parameter, die zum Freigeben einer ElasticIP-Adresse verwendet werden, die in diesem Fall die AllocationId für die Elastic IP-Adresse angeben.Das Freigeben einer Elastic IP-Adresse hebt auch deren Verknüpfung mit einer Amazon EC2-Instance auf.Rufen Sie die releaseAddress-Methode des Amazon EC2-Serviceobjekts auf.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create EC2 service objectvar ec2 = new AWS.EC2({apiVersion: '2016-11-15'});

var paramsReleaseAddress = { AllocationId: 'ALLOCATION_ID'};

// Disassociate the Elastic IP address from EC2 instanceec2.releaseAddress(paramsReleaseAddress, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Address released"); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node ec2_releaseaddress.js

Diesen Beispielcode finden Sie hier auf GitHub.

AWS Elemental MediaConvert BeispieleAWS Elemental MediaConvert ist ein dateibasierter Transcodierungsservice für Videos, der überAusstrahlungsfunktionen verfügt. Sie können ihn verwenden, um Komponenten für das Ausstrahlen und dieBereitstellung von Video-On-Demand (VOD) im Internet zu erstellen. Weitere Informationen hierzu findenSie unter AWS Elemental MediaConvert-Benutzerhandbuch.

Die JavaScript-API für MediaConvert wird über die AWS.MediaConvert-Client-Klasse bereitgestellt.Weitere Informationen finden Sie unter Klasse: AWS.MediaConvert in der API-Referenz.

130

Page 137: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Abrufen des kontospezifischen Endpunkts

Themen• Abrufen des kontospezifischen Endpunkts für MediaConvert (p. 131)• Erstellen und Verwalten von Transcodierungsaufträgen in MediaConvert (p. 132)• Verwenden von Auftragsvorlagen in MediaConvert (p. 137)

Abrufen des kontospezifischen Endpunkts fürMediaConvert

Dieses Node.js-Codebeispiel zeigt:

• So rufen Sie Ihren kontospezifischen Endpunkt von MediaConvert ab.

Das SzenarioIn diesem Beispiel verwenden Sie ein Node.js-Modul, um MediaConvert aufzurufen und Ihrenkontospezifischen Endpunkt abzurufen. Sie können die Endpunkt-URL vom Standardendpunkt desServices abrufen und benötigen dann Ihren kontospezifischen Endpunkt noch nicht. Der Code verwendetdas SDK für JavaScript, um diesen Endpunkt abzurufen, indem diese Methode der MediaConvert-Client-Klasse verwendet wird:

• describeEndpoints

Erforderliche AufgabenZum Einrichten und Ausführen dieses Beispiels schließen Sie zunächst diese Aufgaben ab:

• Installieren Sie "Node.js". Weitere Informationen finden Sie auf der Node.js-Website.• Erstellen Sie eine freigegebene Konfigurationsdatei mit Ihren Anmeldeinformationen. Weitere

Informationen zum Bereitstellen einer Datei mit gemeinsam genutzten Anmeldeinformationenfinden Sie unter Laden der Anmeldeinformationen in Node.js aus der freigegebenenAnmeldeinformationsdatei (p. 33).

• Erstellen Sie eine IAM-Rolle, die MediaConvert Zugriff auf Ihre Eingabedateien und die Amazon S3-Buckets gewährt, in denen die Ausgabedateien gespeichert sind. Weitere Informationen finden Sie unterEinrichten von IAM-Berechtigungen im AWS Elemental MediaConvert-Benutzerhandbuch.

Abrufen Ihrer Endpunkt-URLErstellen Sie ein Node.js-Modul mit dem Dateinamen emc_getendpoint.js. Stellen Sie sicher, dass Siedas SDK, wie zuvor dargestellt, konfigurieren.

Erstellen Sie ein Objekt, um die leeren Anfrageparameter für die describeEndpoints-Methode derAWS.MediaConvert-Client-Klasse zu übergeben. Um die describeEndpoints-Methode aufzurufen,erstellen Sie ein Promise für den Aufruf eines MediaConvert-Serviceobjekts und übergeben die Parameter.Verarbeiten Sie die Antwort im Promise-Rückruf.

131

Page 138: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Erstellen und Verwalten von Aufträgen

// Load the SDK for JavaScriptvar AWS = require('aws-sdk');// Set the Region AWS.config.update({region: 'us-west-2'});

// Create empty request parametersvar params = { MaxResults: 0,};

// Create a promise on a MediaConvert objectvar endpointPromise = new AWS.MediaConvert({apiVersion: '2017-08-29'}).describeEndpoints(params).promise();

endpointPromise.then( function(data) { console.log("Your MediaConvert endpoint is ", data.Endpoints); }, function(err) { console.log("Error", err); });

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node emc_getendpoint.js

Diesen Beispielcode finden Sie hier auf GitHub.

Erstellen und Verwalten vonTranscodierungsaufträgen in MediaConvert

Dieses Node.js-Codebeispiel zeigt:

• So geben Sie den kontospezifischen Endpunkt an, der mit MediaConvert verwendet werden soll.• So erstellen Sie Transcodierungsaufträge in MediaConvert.• So stornieren Sie einen Trancodierungsauftrag.• So rufen Sie die JSON für einen abgeschlossenen Transcodierungsauftrag ab.• So rufen Sie ein JSON-Array für bis zu 20 der zuletzt erstellten Aufträge ab.

Das SzenarioIn diesem Beispiel verwenden Sie ein Node.js-Modul zum Aufrufen von MediaConvert, umTranscodierungsaufträge zu erstellen und zu verwalten. Der Code verwendet dazu das SDK für JavaScript,indem diese Methoden der MediaConvert-Client-Klasse verwendet werden:

• createJob

• cancelJob

132

Page 139: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Erstellen und Verwalten von Aufträgen

• getJob

• listJobs

Erforderliche AufgabenZum Einrichten und Ausführen dieses Beispiels schließen Sie zunächst diese Aufgaben ab:

• Installieren Sie "Node.js". Weitere Informationen finden Sie auf der Node.js-Website.• Erstellen Sie eine freigegebene Konfigurationsdatei mit Ihren Anmeldeinformationen. Weitere

Informationen zum Bereitstellen einer Datei mit gemeinsam genutzten Anmeldeinformationenfinden Sie unter Laden der Anmeldeinformationen in Node.js aus der freigegebenenAnmeldeinformationsdatei (p. 33).

• Erstellen und konfigurieren Sie Amazon S3-Buckets, die Speicher für Eingabe- und Ausgabedateien vonAufträgen bereitstellen. Weitere Informationen finden Sie unter Speicherplatz für Dateien erstellen imAWS Elemental MediaConvert-Benutzerhandbuch.

• Laden Sie das Eingabevideo in den Amazon S3-Bucket hoch, den Sie für den Eingabespeicherbereitgestellt haben. Eine Liste der unterstützten Eingabevideo-Codecs und -Container finden Sie unterUnterstützte Eingabe-Codecs und -Container im AWS Elemental MediaConvert-Benutzerhandbuch.

• Erstellen Sie eine IAM-Rolle, die MediaConvert Zugriff auf Ihre Eingabedateien und die Amazon S3-Buckets gewährt, in denen die Ausgabedateien gespeichert sind. Weitere Informationen finden Sie unterEinrichten von IAM-Berechtigungen im AWS Elemental MediaConvert-Benutzerhandbuch.

Konfigurieren des SDKsKonfigurieren Sie das SDK für JavaScript, indem Sie ein globales Konfigurationsobjekt erstellen unddann die Region für Ihren Code setzen. In diesem Beispiel ist die Region auf us-west-2 festgelegt. DaMediaConvert benutzerdefinierte Endpunkte für die einzelnen Konten verwendet, müssen Sie auch dieAWS.MediaConvert-Client-Klasse konfigurieren, um Ihren kontospezifischen Endpunkt zu verwenden.Setzen Sie zu diesem Zweck den endpoint-Parameter auf AWS.config.mediaconvert.

// Load the SDK for JavaScriptvar AWS = require('aws-sdk');// Set the Region AWS.config.update({region: 'us-west-2'});// Set the custom endpoint for your accountAWS.config.mediaconvert = {endpoint : 'ACCOUNT_ENDPOINT'};

Definieren von einfachen TranscodierungsaufträgenErstellen Sie ein Node.js-Modul mit dem Dateinamen emc_createjob.js. Stellen Sie sicher,dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Erstellen Sie die JSON für die Definition derTranscodierungsauftragsparameter.

Diese Parameter sind sehr detailliert. Sie können in der AWS Elemental MediaConvert-Konsole die JSON-Auftragsparameter erzeugen, indem Sie Ihre Auftragseinstellungen in der Konsole und anschließendunten im Bereich Auftrag Auftrags-JSON anzeigen auswählen. Dieses Beispiel enthält die JSON für eineneinfachen Auftrag.

var params = { "Queue": "JOB_QUEUE_ARN", "UserMetadata": { "Customer": "Amazon" }, "Role": "IAM_ROLE_ARN",

133

Page 140: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Erstellen und Verwalten von Aufträgen

"Settings": { "OutputGroups": [ { "Name": "File Group", "OutputGroupSettings": { "Type": "FILE_GROUP_SETTINGS", "FileGroupSettings": { "Destination": "s3://OUTPUT_BUCKET_NAME/" } }, "Outputs": [ { "VideoDescription": { "ScalingBehavior": "DEFAULT", "TimecodeInsertion": "DISABLED", "AntiAlias": "ENABLED", "Sharpness": 50, "CodecSettings": { "Codec": "H_264", "H264Settings": { "InterlaceMode": "PROGRESSIVE", "NumberReferenceFrames": 3, "Syntax": "DEFAULT", "Softness": 0, "GopClosedCadence": 1, "GopSize": 90, "Slices": 1, "GopBReference": "DISABLED", "SlowPal": "DISABLED", "SpatialAdaptiveQuantization": "ENABLED", "TemporalAdaptiveQuantization": "ENABLED", "FlickerAdaptiveQuantization": "DISABLED", "EntropyEncoding": "CABAC", "Bitrate": 5000000, "FramerateControl": "SPECIFIED", "RateControlMode": "CBR", "CodecProfile": "MAIN", "Telecine": "NONE", "MinIInterval": 0, "AdaptiveQuantization": "HIGH", "CodecLevel": "AUTO", "FieldEncoding": "PAFF", "SceneChangeDetect": "ENABLED", "QualityTuningLevel": "SINGLE_PASS", "FramerateConversionAlgorithm": "DUPLICATE_DROP", "UnregisteredSeiTimecode": "DISABLED", "GopSizeUnits": "FRAMES", "ParControl": "SPECIFIED", "NumberBFramesBetweenReferenceFrames": 2, "RepeatPps": "DISABLED", "FramerateNumerator": 30, "FramerateDenominator": 1, "ParNumerator": 1, "ParDenominator": 1 } }, "AfdSignaling": "NONE", "DropFrameTimecode": "ENABLED", "RespondToAfd": "NONE", "ColorMetadata": "INSERT" }, "AudioDescriptions": [ { "AudioTypeControl": "FOLLOW_INPUT", "CodecSettings": { "Codec": "AAC",

134

Page 141: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Erstellen und Verwalten von Aufträgen

"AacSettings": { "AudioDescriptionBroadcasterMix": "NORMAL", "RateControlMode": "CBR", "CodecProfile": "LC", "CodingMode": "CODING_MODE_2_0", "RawFormat": "NONE", "SampleRate": 48000, "Specification": "MPEG4", "Bitrate": 64000 } }, "LanguageCodeControl": "FOLLOW_INPUT", "AudioSourceName": "Audio Selector 1" } ], "ContainerSettings": { "Container": "MP4", "Mp4Settings": { "CslgAtom": "INCLUDE", "FreeSpaceBox": "EXCLUDE", "MoovPlacement": "PROGRESSIVE_DOWNLOAD" } }, "NameModifier": "_1" } ] } ], "AdAvailOffset": 0, "Inputs": [ { "AudioSelectors": { "Audio Selector 1": { "Offset": 0, "DefaultSelection": "NOT_DEFAULT", "ProgramSelection": 1, "SelectorType": "TRACK", "Tracks": [ 1 ] } }, "VideoSelector": { "ColorSpace": "FOLLOW" }, "FilterEnable": "AUTO", "PsiControl": "USE_PSI", "FilterStrength": 0, "DeblockFilter": "DISABLED", "DenoiseFilter": "DISABLED", "TimecodeSource": "EMBEDDED", "FileInput": "s3://INPUT_BUCKET_AND_FILE_NAME" } ], "TimecodeConfig": { "Source": "EMBEDDED" } }};

Erstellen eines TranscodierungsauftragsNachdem Sie die Auftragsparameter-JSON erstellt haben, rufen Sie die createJob-Methode auf, indemSie ein Promise für den Aufruf eines AWS.MediaConvert-Serviceobjekts erstellen, das die Parameter

135

Page 142: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Erstellen und Verwalten von Aufträgen

übergibt. Verarbeiten Sie anschließend die response im Promise-Callback. Die ID des erstellten Auftragswird in den data der Antwort zurückgegeben.

// Create a promise on a MediaConvert objectvar endpointPromise = new AWS.MediaConvert({apiVersion: '2017-08-29'}).createJob(params).promise();

// Handle promise's fulfilled/rejected statusendpointPromise.then( function(data) { console.log("Job created! ", data); }, function(err) { console.log("Error", err); });

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node emc_createjob.js

Diesen Beispielcode finden Sie hier auf GitHub.

Stornieren eines TranscodierungsauftragsErstellen Sie ein Node.js-Modul mit dem Dateinamen emc_canceljob.js. Stellen Sie sicher, dass Siedas SDK, wie zuvor dargestellt, konfigurieren. Erstellen Sie die JSON, die die ID des zu stornierendenAuftrags enthält. Rufen Sie dann die cancelJob-Methode auf, indem Sie ein Promise für den Aufruf einesAWS.MediaConvert-Serviceobjekts erstellen, das die Parameter übergibt. Verarbeiten Sie die Antwort imPromise-Rückruf.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the Region AWS.config.update({region: 'us-west-2'});// Set MediaConvert to customer endpointAWS.config.mediaconvert = {endpoint : 'ACCOUNT_ENDPOINT'};

var params = { Id: 'JOB_ID' /* required */};

// Create a promise on a MediaConvert objectvar endpointPromise = new AWS.MediaConvert({apiVersion: '2017-08-29'}).cancelJob(params).promise();

// Handle promise's fulfilled/rejected statusendpointPromise.then( function(data) { console.log("Job " + params.Id + " is canceled"); }, function(err) { console.log("Error", err); });

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

136

Page 143: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwenden von Auftragsvorlagen

node ec2_canceljob.js

Diesen Beispielcode finden Sie hier auf GitHub.

Auflisten der letzten TranscodierungsaufträgeErstellen Sie ein Node.js-Modul mit dem Dateinamen emc_listjobs.js. Stellen Sie sicher, dass Sie dasSDK, wie zuvor dargestellt, konfigurieren.

Erstellen Sie die Parameter-JSON einschließlich der Werte, um festzulegen, ob die Liste in ASCENDINGoder DESCENDING Reihenfolge sortiert wird. Außerdem legen Sie hier den ARN der zu prüfendenAuftragswarteschlange sowie den Status der einzubeziehenden Aufträge fest. Rufen Sie dann dielistJobs-Methode auf, indem Sie ein Promise für den Aufruf eines AWS.MediaConvert-Serviceobjektserstellen, das die Parameter übergibt. Verarbeiten Sie die Antwort im Promise-Rückruf.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the Region AWS.config.update({region: 'us-west-2'});// Set the customer endpointAWS.config.mediaconvert = {endpoint : 'ACCOUNT_ENDPOINT'};

var params = { MaxResults: 10, Order: 'ASCENDING', Queue: 'QUEUE_ARN', Status: 'SUBMITTED'};

// Create a promise on a MediaConvert objectvar endpointPromise = new AWS.MediaConvert({apiVersion: '2017-08-29'}).listJobs(params).promise();

// Handle promise's fulfilled/rejected statusendpointPromise.then( function(data) { console.log("Jobs: ", data); }, function(err) { console.log("Error", err); });

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node emc_listjobs.js

Diesen Beispielcode finden Sie hier auf GitHub.

Verwenden von Auftragsvorlagen in MediaConvert

137

Page 144: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwenden von Auftragsvorlagen

Dieses Node.js-Codebeispiel zeigt:

• So erstellen Sie MediaConvert-Auftragsvorlagen.• So verwenden Sie eine Auftragsvorlage zum Erstellen eines Transcodierungsauftrags.• So listen Sie alle Ihre Auftragsvorlagen auf.• So löschen Sie Auftragsvorlagen.

Das SzenarioDie zum Erstellen eines Transcodierungsauftrags in MediaConvert erforderliche JSON ist detailliert undenthält eine große Anzahl von Einstellungen. Sie können die Auftragserstellung erheblich vereinfachen,indem Sie zweifelsfrei funktionierende Einstellungen in einer Auftragsvorlage speichern, die zum Erstellennachfolgender Aufträge verwendet werden kann. In diesem Beispiel verwenden Sie ein Node.js-Modulzum Aufrufen von MediaConvert, um Auftragsvorlagen zu erstellen, zu verwenden und zu verwalten. DerCode verwendet dazu das SDK für JavaScript, indem diese Methoden der MediaConvert-Client-Klasseverwendet werden:

• createJobTemplate

• createJob

• deleteJobTemplate

• listJobTemplates

Erforderliche AufgabenZum Einrichten und Ausführen dieses Beispiels schließen Sie zunächst diese Aufgaben ab:

• Installieren Sie "Node.js". Weitere Informationen finden Sie auf der Node.js-Website.• Erstellen Sie eine freigegebene Konfigurationsdatei mit Ihren Anmeldeinformationen. Weitere

Informationen zum Bereitstellen einer Datei mit gemeinsam genutzten Anmeldeinformationenfinden Sie unter Laden der Anmeldeinformationen in Node.js aus der freigegebenenAnmeldeinformationsdatei (p. 33).

• Erstellen Sie eine IAM-Rolle, die MediaConvert Zugriff auf Ihre Eingabedateien und die Amazon S3-Buckets gewährt, in denen die Ausgabedateien gespeichert sind. Weitere Informationen finden Sie unterEinrichten von IAM-Berechtigungen im AWS Elemental MediaConvert-Benutzerhandbuch.

Erstellen einer AuftragsvorlageErstellen Sie ein Node.js-Modul mit dem Dateinamen emc_create_jobtemplate.js. Stellen Sie sicher,dass Sie das SDK, wie zuvor dargestellt, konfigurieren.

Geben Sie die Parameter-JSON für die Vorlagenerstellung an. Sie können die meisten JSON-Parameter aus einem vorherigen erfolgreichen Job verwenden, um die Settings-Werte in der Vorlageanzugeben. In diesem Beispiel werden die Aufgabeneinstellungen aus Erstellen und Verwalten vonTranscodierungsaufträgen in MediaConvert (p. 132) verwendet.

Rufen Sie die createJobTemplate-Methode auf, indem Sie ein Promise für den Aufruf einesAWS.MediaConvert-Serviceobjekts erstellen und die Parameter übergeben. Verarbeiten Sieanschließend die Antwort im Promise-Callback.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');

138

Page 145: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwenden von Auftragsvorlagen

// Set the Region AWS.config.update({region: 'us-west-2'});// Set the custom endpoint for your accountAWS.config.mediaconvert = {endpoint : 'ACCOUNT_ENDPOINT'};

var params = { Category: 'YouTube Jobs', Description: 'Final production transcode', Name: 'DemoTemplate', Queue: 'JOB_QUEUE_ARN', "Settings": { "OutputGroups": [ { "Name": "File Group", "OutputGroupSettings": { "Type": "FILE_GROUP_SETTINGS", "FileGroupSettings": { "Destination": "s3://BUCKET_NAME/" } }, "Outputs": [ { "VideoDescription": { "ScalingBehavior": "DEFAULT", "TimecodeInsertion": "DISABLED", "AntiAlias": "ENABLED", "Sharpness": 50, "CodecSettings": { "Codec": "H_264", "H264Settings": { "InterlaceMode": "PROGRESSIVE", "NumberReferenceFrames": 3, "Syntax": "DEFAULT", "Softness": 0, "GopClosedCadence": 1, "GopSize": 90, "Slices": 1, "GopBReference": "DISABLED", "SlowPal": "DISABLED", "SpatialAdaptiveQuantization": "ENABLED", "TemporalAdaptiveQuantization": "ENABLED", "FlickerAdaptiveQuantization": "DISABLED", "EntropyEncoding": "CABAC", "Bitrate": 5000000, "FramerateControl": "SPECIFIED", "RateControlMode": "CBR", "CodecProfile": "MAIN", "Telecine": "NONE", "MinIInterval": 0, "AdaptiveQuantization": "HIGH", "CodecLevel": "AUTO", "FieldEncoding": "PAFF", "SceneChangeDetect": "ENABLED", "QualityTuningLevel": "SINGLE_PASS", "FramerateConversionAlgorithm": "DUPLICATE_DROP", "UnregisteredSeiTimecode": "DISABLED", "GopSizeUnits": "FRAMES", "ParControl": "SPECIFIED", "NumberBFramesBetweenReferenceFrames": 2, "RepeatPps": "DISABLED", "FramerateNumerator": 30, "FramerateDenominator": 1, "ParNumerator": 1, "ParDenominator": 1 } },

139

Page 146: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwenden von Auftragsvorlagen

"AfdSignaling": "NONE", "DropFrameTimecode": "ENABLED", "RespondToAfd": "NONE", "ColorMetadata": "INSERT" }, "AudioDescriptions": [ { "AudioTypeControl": "FOLLOW_INPUT", "CodecSettings": { "Codec": "AAC", "AacSettings": { "AudioDescriptionBroadcasterMix": "NORMAL", "RateControlMode": "CBR", "CodecProfile": "LC", "CodingMode": "CODING_MODE_2_0", "RawFormat": "NONE", "SampleRate": 48000, "Specification": "MPEG4", "Bitrate": 64000 } }, "LanguageCodeControl": "FOLLOW_INPUT", "AudioSourceName": "Audio Selector 1" } ], "ContainerSettings": { "Container": "MP4", "Mp4Settings": { "CslgAtom": "INCLUDE", "FreeSpaceBox": "EXCLUDE", "MoovPlacement": "PROGRESSIVE_DOWNLOAD" } }, "NameModifier": "_1" } ] } ], "AdAvailOffset": 0, "Inputs": [ { "AudioSelectors": { "Audio Selector 1": { "Offset": 0, "DefaultSelection": "NOT_DEFAULT", "ProgramSelection": 1, "SelectorType": "TRACK", "Tracks": [ 1 ] } }, "VideoSelector": { "ColorSpace": "FOLLOW" }, "FilterEnable": "AUTO", "PsiControl": "USE_PSI", "FilterStrength": 0, "DeblockFilter": "DISABLED", "DenoiseFilter": "DISABLED", "TimecodeSource": "EMBEDDED", } ], "TimecodeConfig": { "Source": "EMBEDDED" }

140

Page 147: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwenden von Auftragsvorlagen

}};

// Create a promise on a MediaConvert objectvar templatePromise = new AWS.MediaConvert({apiVersion: '2017-08-29'}).createJobTemplate(params).promise();

// Handle promise's fulfilled/rejected statustemplatePromise.then( function(data) { console.log("Success!", data); }, function(err) { console.log("Error", err); });

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node emc_create_jobtemplate.js

Diesen Beispielcode finden Sie hier auf GitHub.

Erstellen eines Transcodierungsauftrags aus einerAuftragsvorlageErstellen Sie ein Node.js-Modul mit dem Dateinamen emc_template_createjob.js. Stellen Sie sicher,dass Sie das SDK, wie zuvor dargestellt, konfigurieren.

Erstellen Sie die Auftragserstellungsparameter-JSON, einschließlich dem Namen der zu verwendendenAuftragsvorlage und der zu verwendenden Settings, die spezifisch für den Auftrag sind, den Sieerstellen. Rufen Sie dann die createJobs-Methode auf, indem Sie ein Promise für den Aufruf einesAWS.MediaConvert-Serviceobjekts erstellen, das die Parameter übergibt. Verarbeiten Sie die Antwort imPromise-Rückruf.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the Region AWS.config.update({region: 'us-west-2'});// Set the custom endpoint for your accountAWS.config.mediaconvert = {endpoint : 'ACCOUNT_ENDPOINT'};

var params = { "Queue": "QUEUE_ARN", "JobTemplate": "TEMPLATE_NAME", "Role": "ROLE_ARN", "Settings": { "Inputs": [ { "AudioSelectors": { "Audio Selector 1": { "Offset": 0, "DefaultSelection": "NOT_DEFAULT", "ProgramSelection": 1, "SelectorType": "TRACK", "Tracks": [ 1 ] } },

141

Page 148: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwenden von Auftragsvorlagen

"VideoSelector": { "ColorSpace": "FOLLOW" }, "FilterEnable": "AUTO", "PsiControl": "USE_PSI", "FilterStrength": 0, "DeblockFilter": "DISABLED", "DenoiseFilter": "DISABLED", "TimecodeSource": "EMBEDDED", "FileInput": "s3://BUCKET_NAME/FILE_NAME" } ] }};

// Create a promise on a MediaConvert objectvar templateJobPromise = new AWS.MediaConvert({apiVersion: '2017-08-29'}).createJob(params).promise();

// Handle promise's fulfilled/rejected statustemplateJobPromise.then( function(data) { console.log("Success! ", data); }, function(err) { console.log("Error", err); });

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node emc_template_createjob.js

Diesen Beispielcode finden Sie hier auf GitHub.

Auflisten Ihrer JobvorlagenErstellen Sie ein Node.js-Modul mit dem Dateinamen emc_listtemplates.js. Stellen Sie sicher, dassSie das SDK, wie zuvor dargestellt, konfigurieren.

Erstellen Sie ein Objekt, um die Anfrageparameter für die listTemplates-Methode derAWS.MediaConvert-Client-Klasse zu übergeben. Schließen Sie Werte ein, um zu bestimmen,welche Vorlagen gelistet werden sollen (NAME, CREATION DATE, SYSTEM), wie viele und derenSortierreihenfolge. Um die listTemplates-Methode aufzurufen, erstellen Sie ein Promise für den Aufrufeines MediaConvert-Serviceobjekts und übergeben die Parameter. Verarbeiten Sie anschließend dieAntwort im Promise-Callback.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the Region AWS.config.update({region: 'us-west-2'});// Set the customer endpointAWS.config.mediaconvert = {endpoint : 'ACCOUNT_ENDPOINT'};

var params = { ListBy: 'NAME', MaxResults: 10, Order: 'ASCENDING',};

// Create a promise on a MediaConvert object

142

Page 149: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwenden von Auftragsvorlagen

var listTemplatesPromise = new AWS.MediaConvert({apiVersion: '2017-08-29'}).listJobTemplates(params).promise();

// Handle promise's fulfilled/rejected statuslistTemplatesPromise.then( function(data) { console.log("Success ", data); }, function(err) { console.log("Error", err); });

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node emc_listtemplates.js

Diesen Beispielcode finden Sie hier auf GitHub.

Löschen einer AuftragsvorlageErstellen Sie ein Node.js-Modul mit dem Dateinamen emc_deletetemplate.js. Stellen Sie sicher, dassSie das SDK, wie zuvor dargestellt, konfigurieren.

Erstellen Sie ein Objekt, um den Namen der Auftragsvorlage, die Sie löschen möchten, als Parameterfür die deleteJobTemplate-Methode der AWS.MediaConvert-Client-Klasse zu übergeben. Um diedeleteJobTemplate-Methode aufzurufen, erstellen Sie ein Promise für den Aufruf eines MediaConvert-Serviceobjekts und übergeben die Parameter. Verarbeiten Sie die Antwort im Promise-Rückruf.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the Region AWS.config.update({region: 'us-west-2'});// Set the customer endpointAWS.config.mediaconvert = {endpoint : 'ACCOUNT_ENDPOINT'};

var params = { Name: 'TEMPLATE_NAME'};

// Create a promise on a MediaConvert objectvar deleteTemplatePromise = new AWS.MediaConvert({apiVersion: '2017-08-29'}).deleteJobTemplate(params).promise();

// Handle promise's fulfilled/rejected statusdeleteTemplatePromise.then( function(data) { console.log("Success ", data); }, function(err) { console.log("Error", err); });

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node emc_deletetemplate.js

Diesen Beispielcode finden Sie hier auf GitHub.

143

Page 150: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Amazon S3 Glacier Beispiele

Amazon S3 Glacier BeispieleAmazon S3 Glacier ist ein sicherer Cloud-Speicherservice für die Datenarchivierung und langfristigeSicherung. Der Service ist für Daten optimiert, auf die selten zugegriffen wird und für die eine Abrufdauervon mehreren Stunden geeignet ist.

Die JavaScript-API für Amazon S3 Glacier wird über die AWS.Glacier-Client-Klasse bereitgestellt.Weitere Informationen zur Verwendung der S3 Glacier-Client-Klasse finden Sie unter Klasse: AWS.Glacierin der API-Referenz.

Themen• Erstellen eines S3 Glacier-Tresors (p. 144)• Hochladen eines Archivs in S3 Glacier (p. 145)• Ausführen eines mehrteiligen Uploads in S3 Glacier (p. 146)

Erstellen eines S3 Glacier-Tresors

Dieses Node.js-Codebeispiel zeigt:

• So erstellen Sie einen Tresor mithilfe der createVault-Methode des Amazon S3 Glacier-Serviceobjekts.

Erforderliche AufgabenZum Einrichten und Ausführen dieses Beispiels müssen Sie zunächst diese Aufgaben abschließen:

• Installieren Sie "Node.js". Weitere Informationen über die Installation von Node.js finden Sie auf derNode.js-Website.

• Erstellen Sie eine freigegebene Konfigurationsdatei mit Ihren Anmeldeinformationen. WeitereInformationen zum Bereitstellen einer Datei mit gemeinsam genutzten Anmeldeinformationenfinden Sie unter Laden der Anmeldeinformationen in Node.js aus der freigegebenenAnmeldeinformationsdatei (p. 33).

Den Tresor erstellen// Load the SDK for JavaScriptvar AWS = require('aws-sdk');

144

Page 151: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Hochladen eines Archivs in S3 Glacier

// Set the region AWS.config.update({region: 'REGION'});

// Create a new service objectvar glacier = new AWS.Glacier({apiVersion: '2012-06-01'});// Call Glacier to create the vaultglacier.createVault({vaultName: 'YOUR_VAULT_NAME'}, function(err) { if (!err) { console.log("Created vault!") }});

Hochladen eines Archivs in S3 Glacier

Dieses Node.js-Codebeispiel zeigt:

• So laden Sie ein Archiv in Amazon S3 Glacier mit der uploadArchive-Methode des S3 Glacier-Serviceobjekts hoch.

Das folgende Beispiel lädt ein einzelnes Buffer-Objekt als ein gesamtes Archiv unter Verwendung deruploadArchive-Methode des S3 Glacier-Serviceobjekts hoch.

In diesem Beispiel wird davon ausgegangen, dass Sie bereits einen Tresor mit dem NamenYOUR_VAULT_NAME erstellt haben. Das SDK berechnet automatisch die Struktur-Hash-Prüfsummefür die hochgeladenen Daten. Sie können dies jedoch außer Kraft setzen, indem Sie Ihren eigenenPrüfsummenparameter übergeben:

Erforderliche AufgabenZum Einrichten und Ausführen dieses Beispiels müssen Sie zunächst diese Aufgaben abschließen:

• Installieren Sie "Node.js". Weitere Informationen über die Installation von Node.js finden Sie auf derNode.js-Website.

• Erstellen Sie eine freigegebene Konfigurationsdatei mit Ihren Anmeldeinformationen. WeitereInformationen zum Bereitstellen einer Datei mit gemeinsam genutzten Anmeldeinformationenfinden Sie unter Laden der Anmeldeinformationen in Node.js aus der freigegebenenAnmeldeinformationsdatei (p. 33).

Das Archiv hochladen// Load the SDK for JavaScriptvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'}); // Create a new service object and buffervar glacier = new AWS.Glacier({apiVersion: '2012-06-01'}),buffer = new Buffer(2.5 * 1024 * 1024); // 2.5MB buffer

var params = {vaultName: 'YOUR_VAULT_NAME', body: buffer};// Call Glacier to upload the archive.

145

Page 152: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Ausführen eines mehrteiligen Uploads in S3 Glacier

glacier.uploadArchive(params, function(err, data) { if (err) { console.log("Error uploading archive!", err); } else { console.log("Archive ID", data.archiveId); }});

Ausführen eines mehrteiligen Uploads in S3 GlacierDas folgende Beispiel erstellt einen mehrteiligen Upload von 1 MB-Blöcken eines Buffer-Objekts unterVerwendung der initiateMultipartUpload-Methode des Amazon S3 Glacier-Serviceobjekts.

In diesem Beispiel wird davon ausgegangen, dass Sie bereits einen Tresor mit dem NamenYOUR_VAULT_NAME erstellt haben. Ein vollständiger SHA-256-Struktur-Hash wird manuell mit dercomputeChecksums-Methode berechnet.

// Create a new service object and some supporting variablesvar glacier = new AWS.Glacier({apiVersion: '2012-06-01'}), vaultName = 'YOUR_VAULT_NAME', buffer = new Buffer(2.5 * 1024 * 1024), // 2.5MB buffer partSize = 1024 * 1024, // 1MB chunks, numPartsLeft = Math.ceil(buffer.length / partSize), startTime = new Date(), params = {vaultName: vaultName, partSize: partSize.toString()};

// Compute the complete SHA-256 tree hash so we can pass it// to completeMultipartUpload request at the endvar treeHash = glacier.computeChecksums(buffer).treeHash;

// Initiate the multipart uploadconsole.log('Initiating upload to', vaultName);// Call Glacier to initiate the upload.glacier.initiateMultipartUpload(params, function (mpErr, multipart) { if (mpErr) { console.log('Error!', mpErr.stack); return; } console.log("Got upload ID", multipart.uploadId);

// Grab each partSize chunk and upload it as a part for (var i = 0; i < buffer.length; i += partSize) { var end = Math.min(i + partSize, buffer.length), partParams = { vaultName: vaultName, uploadId: multipart.uploadId, range: 'bytes ' + i + '-' + (end-1) + '/*', body: buffer.slice(i, end) };

// Send a single part console.log('Uploading part', i, '=', partParams.range); glacier.uploadMultipartPart(partParams, function(multiErr, mData) { if (multiErr) return; console.log("Completed part", this.request.params.range); if (--numPartsLeft > 0) return; // complete only when all parts uploaded

var doneParams = { vaultName: vaultName, uploadId: multipart.uploadId, archiveSize: buffer.length.toString(), checksum: treeHash // the computed tree hash };

console.log("Completing upload..."); glacier.completeMultipartUpload(doneParams, function(err, data) {

146

Page 153: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Beispiele für AWS IAM

if (err) { console.log("An error occurred while uploading the archive"); console.log(err); } else { var delta = (new Date() - startTime) / 1000; console.log('Completed upload in', delta, 'seconds'); console.log('Archive ID:', data.archiveId); console.log('Checksum: ', data.checksum); } }); }); }});

Beispiele für AWS IAMMit AWS Identity and Access Management (IAM) können Kunden von Amazon Web Services (AWS)sowohl Benutzer als auch Benutzerberechtigungen in AWS verwalten. Der Service richtet sich anUnternehmen mit mehreren Benutzern oder Systemen in der Cloud, die AWS-Produkte einsetzen. MitIAM können Sie Benutzer und Anmeldeinformationen (wie Zugriffsschlüssel und Berechtigungen) zentralverwalten, die festlegen, auf welche AWS-Ressourcen Benutzer zugreifen dürfen.

Die JavaScript-API für IAM wird über die AWS.IAM-Client-Klasse bereitgestellt. Weitere Informationen zurVerwendung der IAM-Client-Klasse finden Sie unter Class: AWS.IAM in der API-Referenz.

Themen• Verwalten von IAM-Benutzern (p. 147)• Arbeiten mit IAM-Richtlinien (p. 151)• Verwalten von IAM-Zugriffsschlüsseln (p. 155)• Arbeiten mit IAM-Serverzertifikaten (p. 159)• Verwalten von IAM-Konto-Alias (p. 162)

Verwalten von IAM-Benutzern

Dieses Node.js-Codebeispiel zeigt:

• das Abrufen einer Liste der IAM-Benutzer.• das Erstellen und Löschen von Benutzern.• das Aktualisieren eines Benutzernamens.

147

Page 154: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwalten von IAM-Benutzern

Das SzenarioIn diesem Beispiel werden mehrere Node.js-Module verwendet, um Benutzer in IAM zu erstellen undzu verwalten. Die Node.js-Module verwenden das SDK für JavaScript zum Erstellen, Löschen undAktualisieren von Benutzern mithilfe dieser Methoden der AWS.IAM-Client-Klasse:

• createUser

• listUsers

• updateUser

• getUser

• deleteUser

Weitere Informationen über IAM-Benutzer finden Sie unter IAM-Benutzer im IAM-Benutzerhandbuch.

Erforderliche AufgabenZum Einrichten und Ausführen dieses Beispiels müssen Sie zunächst diese Aufgaben abschließen:

• Installieren Sie "Node.js". Weitere Informationen über die Installation von Node.js finden Sie auf derNode.js-Website.

• Erstellen Sie eine freigegebene Konfigurationsdatei mit Ihren Anmeldeinformationen. WeitereInformationen zum Bereitstellen einer Datei mit gemeinsam genutzten Anmeldeinformationenfinden Sie unter Laden der Anmeldeinformationen in Node.js aus der freigegebenenAnmeldeinformationsdatei (p. 33).

Erstellen eines BenutzersErstellen Sie ein Node.js-Modul mit dem Dateinamen iam_createuser.js. Stellen Sie sicher, dassSie das SDK, wie zuvor dargestellt, konfigurieren. Um auf IAM zuzugreifen, erstellen Sie ein AWS.IAM-Serviceobjekt. Erstellen Sie ein JSON-Objekt mit den erforderlichen Parametern, einschließlich desBenutzernamens, den Sie für den neuen Benutzer als Befehlszeilenparameter verwenden möchten.

Rufen Sie die getUser-Methode des AWS.IAM-Serviceobjekts auf, um festzustellen, ob der Benutzernamebereits vorhanden ist. Wenn der Benutzername gegenwärtig nicht vorhanden ist, rufen Sie diecreateUser-Methode auf, um ihn zu erstellen. Falls der Name bereits vorhanden ist, schreiben Sie eineentsprechende Nachricht an die Konsole.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create the IAM service objectvar iam = new AWS.IAM({apiVersion: '2010-05-08'});

var params = { UserName: process.argv[2]};

iam.getUser(params, function(err, data) { if (err && err.code === 'NoSuchEntity') { iam.createUser(params, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data); }

148

Page 155: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwalten von IAM-Benutzern

}); } else { console.log("User " + process.argv[2] + " already exists", data.User.UserId); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node iam_createuser.js USER_NAME

Diesen Beispielcode finden Sie hier auf GitHub.

Auflisten von Benutzern in Ihrem KontoErstellen Sie ein Node.js-Modul mit dem Dateinamen iam_listusers.js. Stellen Sie sicher, dassSie das SDK, wie zuvor dargestellt, konfigurieren. Um auf IAM zuzugreifen, erstellen Sie ein AWS.IAM-Serviceobjekt. Erstellen Sie ein JSON-Objekt, das die erforderlichen Parameter zum Auflisten IhrerBenutzer enthält. Begrenzen Sie die zurückgegebene Anzahl, indem Sie den MaxItems-Parameter auf 10setzen. Rufen Sie die listUsers-Methode des AWS.IAM-Serviceobjekts auf. Schreiben Sie den Namenund das Erstellungsdatum des ersten Benutzers an die Konsole.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create the IAM service objectvar iam = new AWS.IAM({apiVersion: '2010-05-08'});

var params = { MaxItems: 10};

iam.listUsers(params, function(err, data) { if (err) { console.log("Error", err); } else { var users = data.Users || []; users.forEach(function(user) { console.log("User " + user.UserName + " created", user.CreateDate); }); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node iam_listusers.js

Diesen Beispielcode finden Sie hier auf GitHub.

Aktualisieren eines BenutzernamensErstellen Sie ein Node.js-Modul mit dem Dateinamen iam_updateuser.js. Stellen Sie sicher,dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Um auf IAM zuzugreifen, erstellen Sie einAWS.IAM-Serviceobjekt. Erstellen Sie ein JSON-Objekt mit den erforderlichen Parametern, umIhre Benutzer aufzulisten. Geben Sie sowohl die aktuellen als auch die neuen Benutzernamen alsBefehlszeilenparameter an. Rufen Sie die updateUser-Methode des AWS.IAM-Serviceobjekts auf.

// Load the AWS SDK for Node.js

149

Page 156: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwalten von IAM-Benutzern

var AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create the IAM service objectvar iam = new AWS.IAM({apiVersion: '2010-05-08'});

var params = { UserName: process.argv[2], NewUserName: process.argv[3]};

iam.updateUser(params, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data); }});

Um dieses Beispiel auszuführen, geben Sie die folgenden Informationen in die Befehlszeile ein, definierenSie dabei den aktuellen Benutzerenamen gefolgt vom neuen Benutzernamen.

node iam_updateuser.js ORIGINAL_USERNAME NEW_USERNAME

Diesen Beispielcode finden Sie hier auf GitHub.

Löschen eines BenutzersErstellen Sie ein Node.js-Modul mit dem Dateinamen iam_deleteuser.js. Stellen Sie sicher, dassSie das SDK, wie zuvor dargestellt, konfigurieren. Um auf IAM zuzugreifen, erstellen Sie ein AWS.IAM-Serviceobjekt. Erstellen Sie ein JSON-Objekt mit den erforderlichen Parametern, einschließlich desBenutzernamens, den Sie als Befehlszeilenparameter löschen möchten.

Rufen Sie die getUser-Methode des AWS.IAM-Serviceobjekts auf, um festzustellen, ob der Benutzernamebereits vorhanden ist. Falls der Benutzername derzeit nicht vorhanden ist, schreiben Sie eineentsprechende Nachricht an die Konsole. Wenn der Benutzer vorhanden ist, rufen Sie die deleteUser-Methode auf, um ihn zu löschen.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create the IAM service objectvar iam = new AWS.IAM({apiVersion: '2010-05-08'});

var params = { UserName: process.argv[2]};

iam.getUser(params, function(err, data) { if (err && err.code === 'NoSuchEntity') { console.log("User " + process.argv[2] + " does not exist."); } else { iam.deleteUser(params, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data); } });

150

Page 157: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Arbeiten mit IAM-Richtlinien

}});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node iam_deleteuser.js USER_NAME

Diesen Beispielcode finden Sie hier auf GitHub.

Arbeiten mit IAM-Richtlinien

Dieses Node.js-Codebeispiel zeigt:

• das Erstellen und Löschen von IAM-Richtlinien.• das Anfügen und Trennen von IAM-Richtlinien an bzw. von Rollen.

Das SzenarioSie können einem Benutzer Berechtigungen erteilen, indem Sie eine Richtlinie erstellen, d. h., einDokument, in dem die Aktionen aufgeführt sind, die ein Benutzer ausführen kann, sowie die Ressourcen,auf die sich diese Aktionen auswirken können. Alle Aktionen oder Ressourcen, die nicht explizit erlaubtsind, werden standardmäßig verweigert. Richtlinien können erstellt und an Benutzer, Benutzergruppen, vonBenutzern übernommene Rollen und Ressourcen angehängt werden.

In diesem Beispiel werden mehrere Node.js-Module verwendet, um Richtlinien in IAM zu verwalten. DieNode.js-Module verwenden das SDK für JavaScript zum Erstellen und Löschen von Richtlinien sowie zumAnfügen und Trennen von Rollenrichtlinien mit diesen Methoden der AWS.IAM-Client-Klasse:

• createPolicy

• getPolicy

• listAttachedRolePolicies

• attachRolePolicy

• detachRolePolicy

Weitere Informationen zu IAM-Benutzern finden Sie unter Übersicht über die Zugriffsverwaltung:Berechtigungen und Richtlinien im IAM-Benutzerhandbuch.

Erforderliche AufgabenZum Einrichten und Ausführen dieses Beispiels müssen Sie zunächst diese Aufgaben abschließen:

• Installieren Sie "Node.js". Weitere Informationen über die Installation von Node.js finden Sie auf derNode.js-Website.

• Erstellen Sie eine freigegebene Konfigurationsdatei mit Ihren Anmeldeinformationen. WeitereInformationen zum Bereitstellen einer Datei mit gemeinsam genutzten Anmeldeinformationenfinden Sie unter Laden der Anmeldeinformationen in Node.js aus der freigegebenenAnmeldeinformationsdatei (p. 33).

151

Page 158: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Arbeiten mit IAM-Richtlinien

• Erstellen Sie eine IAM-Rolle, der Sie Richtlinien anfügen können. Weitere Informationen zum Erstellenvon Rollen finden Sie unter Erstellen von IAM-Rollen im IAM-Benutzerhandbuch.

Erstellen einer IAM-RichtlinieErstellen Sie ein Node.js-Modul mit dem Dateinamen iam_createpolicy.js. Stellen Sie sicher, dassSie das SDK, wie zuvor dargestellt, konfigurieren. Um auf IAM zuzugreifen, erstellen Sie ein AWS.IAM-Serviceobjekt. Erstellen Sie zwei JSON-Objekte, eines mit dem Richtliniendokument, das Sie erstellenmöchten, und das andere mit den erforderlichen Parametern, die zum Erstellen der Richtlinie erforderlichsind. Hierzu gehören die Richtlinien-JSON und der Name, den Sie der Richtlinie geben möchten. StellenSie sicher, dass Sie das JSON-Objekt der Richtlinie in den Parametern in eine Zeichenfolge umwandeln.Rufen Sie die createPolicy-Methode des AWS.IAM-Serviceobjekts auf.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create the IAM service objectvar iam = new AWS.IAM({apiVersion: '2010-05-08'});

var myManagedPolicy = { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "logs:CreateLogGroup", "Resource": "RESOURCE_ARN" }, { "Effect": "Allow", "Action": [ "dynamodb:DeleteItem", "dynamodb:GetItem", "dynamodb:PutItem", "dynamodb:Scan", "dynamodb:UpdateItem" ], "Resource": "RESOURCE_ARN" } ]};

var params = { PolicyDocument: JSON.stringify(myManagedPolicy), PolicyName: 'myDynamoDBPolicy',};

iam.createPolicy(params, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node iam_createpolicy.js

Diesen Beispielcode finden Sie hier auf GitHub.

152

Page 159: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Arbeiten mit IAM-Richtlinien

Abrufen einer IAM-RichtlinieErstellen Sie ein Node.js-Modul mit dem Dateinamen iam_getpolicy.js. Stellen Sie sicher, dassSie das SDK, wie zuvor dargestellt, konfigurieren. Um auf IAM zuzugreifen, erstellen Sie ein AWS.IAM-Serviceobjekt. Erstellen Sie ein JSON-Objekt mit den erforderlichen Parametern, um eine Richtlinieabzurufen. Dabei handelt es sich um den ARN der Richtlinie, die Sie abrufen möchten. Rufen Sie diegetPolicy-Methode des AWS.IAM-Serviceobjekts auf. Schreiben Sie die Richtlinienbeschreibung an dieKonsole.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create the IAM service objectvar iam = new AWS.IAM({apiVersion: '2010-05-08'});

var params = { PolicyArn: 'arn:aws:iam::aws:policy/AWSLambdaExecute'};

iam.getPolicy(params, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data.Policy.Description); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node iam_getpolicy.js

Diesen Beispielcode finden Sie hier auf GitHub.

Anfügen einer verwalteten RollenrichtlinieErstellen Sie ein Node.js-Modul mit dem Dateinamen iam_attachrolepolicy.js. Stellen Sie sicher,dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Um auf IAM zuzugreifen, erstellen Sie einAWS.IAM-Serviceobjekt. Erstellen Sie ein JSON-Objekt mit den erforderlichen Parametern, um eine Listeder verwalteten IAM-Richtlinien aufzurufen, die einer Rolle zugewiesen sind. Dieses Objekt besteht ausdem Namen der Rolle. Geben Sie den Rollennamen als Befehlszeilen-Parameter ein. Rufen Sie dielistAttachedRolePolicies-Methode des AWS.IAM-Objekts auf. Diese gibt ein Array von verwaltetenRichtlinien an die Callback-Funktion zurück.

Überprüfen Sie die Array-Mitglieder, um festzustellen, ob die Richtlinie, die Sie der Rolle anfügen möchten,bereits zugeordnet ist. Wenn die Richtlinie nicht verknüpft ist, rufen Sie die attachRolePolicy-Methodeauf, um die Richtlinie anzufügen.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create the IAM service objectvar iam = new AWS.IAM({apiVersion: '2010-05-08'});

var paramsRoleList = { RoleName: process.argv[2]

153

Page 160: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Arbeiten mit IAM-Richtlinien

};

iam.listAttachedRolePolicies(paramsRoleList, function(err, data) { if (err) { console.log("Error", err); } else { var myRolePolicies = data.AttachedPolicies; myRolePolicies.forEach(function (val, index, array) { if (myRolePolicies[index].PolicyName === 'AmazonDynamoDBFullAccess') { console.log("AmazonDynamoDBFullAccess is already attached to this role.") process.exit(); } }); var params = { PolicyArn: 'arn:aws:iam::aws:policy/AmazonDynamoDBFullAccess', RoleName: process.argv[2] }; iam.attachRolePolicy(params, function(err, data) { if (err) { console.log("Unable to attach policy to role", err); } else { console.log("Role attached successfully"); } }); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node iam_attachrolepolicy.js IAM_ROLE_NAME

Trennen einer verwalteten RollenrichtlinieErstellen Sie ein Node.js-Modul mit dem Dateinamen iam_detachrolepolicy.js. Stellen Sie sicher,dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Um auf IAM zuzugreifen, erstellen Sie einAWS.IAM-Serviceobjekt. Erstellen Sie ein JSON-Objekt mit den erforderlichen Parametern, um eine Listeder verwalteten IAM-Richtlinien aufzurufen, die einer Rolle zugewiesen sind. Dieses Objekt besteht ausdem Namen der Rolle. Geben Sie den Rollennamen als Befehlszeilen-Parameter ein. Rufen Sie dielistAttachedRolePolicies-Methode des AWS.IAM-Objekts auf. Diese gibt ein Array von verwaltetenRichtlinien an die Callback-Funktion zurück.

Überprüfen Sie die Array-Mitglieder, um festzustellen, ob die Richtlinie, die Sie von der Rolle trennenmöchten, angefügt ist. Wenn die Richtlinie angefügt ist, rufen Sie die detachRolePolicy-Methode auf,um die Richtlinie zu trennen.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create the IAM service objectvar iam = new AWS.IAM({apiVersion: '2010-05-08'});

var paramsRoleList = { RoleName: process.argv[2]};

iam.listAttachedRolePolicies(paramsRoleList, function(err, data) { if (err) { console.log("Error", err); } else {

154

Page 161: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwalten von IAM-Zugriffsschlüsseln

var myRolePolicies = data.AttachedPolicies; myRolePolicies.forEach(function (val, index, array) { if (myRolePolicies[index].PolicyName === 'AmazonDynamoDBFullAccess') { var params = { PolicyArn: 'arn:aws:iam::aws:policy/AmazonDynamoDBFullAccess', RoleName: process.argv[2] }; iam.detachRolePolicy(params, function(err, data) { if (err) { console.log("Unable to detach policy from role", err); } else { console.log("Policy detached from role successfully"); process.exit(); } }); } }); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node iam_detachrolepolicy.js IAM_ROLE_NAME

Verwalten von IAM-Zugriffsschlüsseln

Dieses Node.js-Codebeispiel zeigt:

• das Verwalten der Zugriffsschlüssel Ihrer Benutzer.

Das SzenarioBenutzer benötigen ihre eigenen Zugriffsschlüssel, um AWS aus dem SDK für JavaScriptprogrammgesteuert aufzurufen. Um diese Anforderung zu erfüllen, können Sie Zugriffsschlüssel(Zugriffsschlüssel-IDs und geheime Zugriffsschlüssel) für IAM-Benutzer erstellen, ändern, anzeigen oderrotieren. Wenn Sie einen Zugriffsschlüssel erstellen, ist der Status standardmäßig Active, was bedeutet,dass der Benutzer den Zugriffsschlüssel für API-Aufrufe verwenden kann.

In diesem Beispiel werden mehrere Node.js-Module verwendet, um Zugriffsschlüssel in IAM zu verwalten.Die Node.js-Module verwenden das SDK für JavaScript, um IAM-Zugriffsschlüssel mithilfe dieser Methodender AWS.IAM-Client-Klasse zu verwalten:

• createAccessKey• listAccessKeys• getAccessKeyLastUsed• updateAccessKey• deleteAccessKey

Weitere Informationen zum Erstellen von IAM-Zugriffsschlüsseln finden Sie unter Zugriffsschlüsseln imIAM-Benutzerhandbuch.

155

Page 162: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwalten von IAM-Zugriffsschlüsseln

Erforderliche AufgabenZum Einrichten und Ausführen dieses Beispiels müssen Sie zunächst diese Aufgaben abschließen:

• Installieren Sie "Node.js". Weitere Informationen über die Installation von Node.js finden Sie auf derNode.js-Website.

• Erstellen Sie eine freigegebene Konfigurationsdatei mit Ihren Anmeldeinformationen. WeitereInformationen zum Bereitstellen einer Datei mit gemeinsam genutzten Anmeldeinformationenfinden Sie unter Laden der Anmeldeinformationen in Node.js aus der freigegebenenAnmeldeinformationsdatei (p. 33).

Erstellen von Zugriffsschlüsseln für einen BenutzerErstellen Sie ein Node.js-Modul mit dem Dateinamen iam_createaccesskeys.js. Stellen Siesicher, dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Um auf IAM zuzugreifen, erstellenSie ein AWS.IAM-Serviceobjekt. Erstellen Sie ein JSON-Objekt mit den erforderlichen Parameternfür die Erstellung neuer Zugriffsschlüssel, einschließlich dem IAM-Benutzernamen. Rufen Sie diecreateAccessKey-Methode des AWS.IAM-Serviceobjekts auf.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create the IAM service objectvar iam = new AWS.IAM({apiVersion: '2010-05-08'});

iam.createAccessKey({UserName: 'IAM_USER_NAME'}, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data.AccessKey); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein. Stellen Sie sicher, diezurückgegebenen Daten an eine Textdatei weiterzuleiten, um den geheimen Schlüssel nicht zu verlieren,da dieser nur einmal bereitgestellt werden kann.

node iam_createaccesskeys.js > newuserkeys.txt

Diesen Beispielcode finden Sie hier auf GitHub.

Auflisten der Zugriffsschlüssel eines BenutzersErstellen Sie ein Node.js-Modul mit dem Dateinamen iam_listaccesskeys.js. Stellen Sie sicher, dassSie das SDK, wie zuvor dargestellt, konfigurieren. Um auf IAM zuzugreifen, erstellen Sie ein AWS.IAM-Serviceobjekt. Erstellen Sie ein JSON-Objekt, welches die Parameter enthält, die für die Abfrage derZugriffsschlüssel des Benutzers erforderlich sind. Dazu gehören der Name des IAM-Benutzers undoptional die maximale Anzahl der Zugriffsschlüsselpaare, die aufgelistet werden sollen. Rufen Sie dielistAccessKeys-Methode des AWS.IAM-Serviceobjekts auf.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

156

Page 163: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwalten von IAM-Zugriffsschlüsseln

// Create the IAM service objectvar iam = new AWS.IAM({apiVersion: '2010-05-08'});

var params = { MaxItems: 5, UserName: 'IAM_USER_NAME'};

iam.listAccessKeys(params, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node iam_listaccesskeys.js

Diesen Beispielcode finden Sie hier auf GitHub.

Abrufen der letzten Verwendung des ZugriffsschlüsselsErstellen Sie ein Node.js-Modul mit dem Dateinamen iam_accesskeylastused.js. Stellen Siesicher, dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Um auf IAM zuzugreifen, erstellen Sieein AWS.IAM-Serviceobjekt. Erstellen Sie ein JSON-Objekt mit den erforderlichen Parametern, um neueZugriffsschlüssel zu erstellen. Dies ist die Zugriffsschlüssel-ID, für die Sie die Informationen über die letzteVerwendung möchten. Rufen Sie die getAccessKeyLastUsed-Methode des AWS.IAM-Serviceobjektsauf.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create the IAM service objectvar iam = new AWS.IAM({apiVersion: '2010-05-08'});

iam.getAccessKeyLastUsed({AccessKeyId: 'ACCESS_KEY_ID'}, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data.AccessKeyLastUsed); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node iam_accesskeylastused.js

Diesen Beispielcode finden Sie hier auf GitHub.

Aktualisieren des ZugriffsschlüsselstatusErstellen Sie ein Node.js-Modul mit dem Dateinamen iam_updateaccesskey.js. Stellen Sie sicher,dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Um auf IAM zuzugreifen, erstellen Sie einAWS.IAM-Serviceobjekt. Erstellen Sie ein JSON-Objekt mit den erforderlichen Parametern, um den Statusder Zugriffsschlüssel zu aktualisieren. Dazu gehören die Zugriffsschlüssel-ID und der aktualisierte Status.

157

Page 164: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwalten von IAM-Zugriffsschlüsseln

Der Status kann sowohl Active oder Inactive sein. Rufen Sie die updateAccessKey-Methode desAWS.IAM-Serviceobjekts auf.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create the IAM service objectvar iam = new AWS.IAM({apiVersion: '2010-05-08'});

var params = { AccessKeyId: 'ACCESS_KEY_ID', Status: 'Active', UserName: 'USER_NAME'};

iam.updateAccessKey(params, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node iam_updateaccesskey.js

Diesen Beispielcode finden Sie hier auf GitHub.

Löschen von ZugriffsschlüsselnErstellen Sie ein Node.js-Modul mit dem Dateinamen iam_deleteaccesskey.js. Stellen Siesicher, dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Um auf IAM zuzugreifen, erstellen Sieein AWS.IAM-Serviceobjekt. Erstellen Sie ein JSON-Objekt mit den erforderlichen Parametern, umZugriffsschlüssel zu löschen. Dazu gehören die Zugriffsschlüssel-ID und der Name des Benutzers. RufenSie die deleteAccessKey-Methode des AWS.IAM-Serviceobjekts auf.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create the IAM service objectvar iam = new AWS.IAM({apiVersion: '2010-05-08'});

var params = { AccessKeyId: 'ACCESS_KEY_ID', UserName: 'USER_NAME'};

iam.deleteAccessKey(params, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

158

Page 165: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Arbeiten mit IAM-Serverzertifikaten

node iam_deleteaccesskey.js

Diesen Beispielcode finden Sie hier auf GitHub.

Arbeiten mit IAM-Serverzertifikaten

Dieses Node.js-Codebeispiel zeigt:

• die Handhabung grundlegender Aufgaben für das Verwalten von Serverzertifikaten für HTTPS-Verbindungen.

Das SzenarioZum Aktivieren von HTTPS-Verbindungen zu Ihrer Website oder Anwendung in AWS benötigen Sie einSSL/TLS-Serverzertifikat. Wenn Sie für Ihre Website oder Anwendung in AWS ein Zertifikat verwendenmöchten, das Sie von einem externen Anbieter erhalten haben, müssen Sie das Zertifikat in IAM hochladenoder in AWS Certificate Manager importieren.

In diesem Beispiel wird eine Reihe von Node.js-Modulen verwendet, um Serverzertifikate in IAM zuhandhaben. Die Node.js-Module verwenden das SDK für JavaScript, um Serverzertifikate mithilfe dieserMethoden der AWS.IAM-Client-Klasse zu verwalten:

• listServerCertificates• getServerCertificate• updateServerCertificate• deleteServerCertificate

Weitere Informationen zu Serverzertifikaten finden Sie im Abschnitt zum Arbeiten mit Serverzertifikaten imIAM-Benutzerhandbuch.

Erforderliche AufgabenZum Einrichten und Ausführen dieses Beispiels müssen Sie zunächst diese Aufgaben abschließen:

• Installieren Sie "Node.js". Weitere Informationen über die Installation von Node.js finden Sie auf derNode.js-Website.

• Erstellen Sie eine freigegebene Konfigurationsdatei mit Ihren Anmeldeinformationen. WeitereInformationen zum Bereitstellen einer Datei mit gemeinsam genutzten Anmeldeinformationenfinden Sie unter Laden der Anmeldeinformationen in Node.js aus der freigegebenenAnmeldeinformationsdatei (p. 33).

Auflisten Ihrer ServerzertifikateErstellen Sie ein Node.js-Modul mit dem Dateinamen iam_listservercerts.js. Stellen Siesicher, dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Um auf IAM zuzugreifen, erstellen Sieein AWS.IAM-Serviceobjekt. Rufen Sie die listServerCertificates-Methode des AWS.IAM-Serviceobjekts auf.

159

Page 166: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Arbeiten mit IAM-Serverzertifikaten

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create the IAM service objectvar iam = new AWS.IAM({apiVersion: '2010-05-08'});

iam.listServerCertificates({}, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node iam_listservercerts.js

Diesen Beispielcode finden Sie hier auf GitHub.

Abrufen eines ServerzertifikatsErstellen Sie ein Node.js-Modul mit dem Dateinamen iam_getservercert.js. Stellen Sie sicher,dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Um auf IAM zuzugreifen, erstellen Sie einAWS.IAM-Serviceobjekt. Erstellen Sie ein JSON-Objekt mit den erforderlichen Parametern, umein Zertifikat zu erhalten. Dazu gehört der Name des gewünschten Serverzertifikats. Rufen Sie diegetServerCertificates-Methode des AWS.IAM-Serviceobjekts auf.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create the IAM service objectvar iam = new AWS.IAM({apiVersion: '2010-05-08'});

iam.getServerCertificate({ServerCertificateName: 'CERTIFICATE_NAME'}, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node iam_getservercert.js

Diesen Beispielcode finden Sie hier auf GitHub.

Aktualisieren eines ServerzertifikatsErstellen Sie ein Node.js-Modul mit dem Dateinamen iam_updateservercert.js. Stellen Siesicher, dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Um auf IAM zuzugreifen, erstellen Sieein AWS.IAM-Serviceobjekt. Erstellen Sie ein JSON-Objekt mit den erforderlichen Parametern zumAktualisieren eines Zertifikats, bestehend aus dem Namen des vorhandenen Serverzertifikats sowie dem

160

Page 167: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Arbeiten mit IAM-Serverzertifikaten

Namen des neuen Zertifikats. Rufen Sie die updateServerCertificate-Methode des AWS.IAM-Serviceobjekts auf.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create the IAM service objectvar iam = new AWS.IAM({apiVersion: '2010-05-08'});

var params = { ServerCertificateName: 'CERTIFICATE_NAME', NewServerCertificateName: 'NEW_CERTIFICATE_NAME'};

iam.updateServerCertificate(params, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node iam_updateservercert.js

Diesen Beispielcode finden Sie hier auf GitHub.

Löschen eines ServerzertifikatsErstellen Sie ein Node.js-Modul mit dem Dateinamen iam_deleteservercert.js. Stellen Siesicher, dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Um auf IAM zuzugreifen, erstellen Sieein AWS.IAM-Serviceobjekt. Erstellen Sie ein JSON-Objekt mit den erforderlichen Parametern, um einServerzertifikat zu löschen. Dazu gehört der Name des Zertifikats, das Sie löschen möchten. Rufen Sie diedeleteServerCertificates-Methode des AWS.IAM-Serviceobjekts auf.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create the IAM service objectvar iam = new AWS.IAM({apiVersion: '2010-05-08'});

iam.deleteServerCertificate({ServerCertificateName: 'CERTIFICATE_NAME'}, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node iam_deleteservercert.js

Diesen Beispielcode finden Sie hier auf GitHub.

161

Page 168: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwalten von IAM-Konto-Alias

Verwalten von IAM-Konto-Alias

Dieses Node.js-Codebeispiel zeigt:

• das Verwalten der Alias für Ihre AWS-Konto-ID.

Das SzenarioWenn die URL Ihrer Anmeldeseite den Namen Ihres Unternehmens oder andere benutzerfreundlicheKennungen anstelle Ihrer AWS-Konto-ID enthalten soll, können Sie einen Alias für Ihre AWS-Konto-ID erstellen. Wenn Sie einen AWS-Konto-Alias erstellen, wird der Alias in die URL Ihrer Anmeldeseiteintegriert.

In diesem Beispiel wird eine Reihe von Node.js-Modulen verwendet, um IAM-Konto-Alias zu erstellen undzu verwalten. Die Node.js-Module verwenden SDK für JavaScript, um Alias mithilfe dieser Methoden derAWS.IAM-Client-Klasse zu verwalten:

• createAccountAlias• listAccountAliases• deleteAccountAlias

Weitere Informationen über IAM-Konto-Alias finden Sie im Abschnitt Ihre AWS-Konto-ID und derdazugehörige Alias im IAM-Benutzerhandbuch.

Erforderliche AufgabenZum Einrichten und Ausführen dieses Beispiels müssen Sie zunächst diese Aufgaben abschließen:

• Installieren Sie "Node.js". Weitere Informationen über die Installation von Node.js finden Sie auf derNode.js-Website.

• Erstellen Sie eine freigegebene Konfigurationsdatei mit Ihren Anmeldeinformationen. WeitereInformationen zum Bereitstellen einer Datei mit gemeinsam genutzten Anmeldeinformationenfinden Sie unter Laden der Anmeldeinformationen in Node.js aus der freigegebenenAnmeldeinformationsdatei (p. 33).

Erstellen eines Konto-AliasErstellen Sie ein Node.js-Modul mit dem Dateinamen iam_createaccountalias.js. Stellen Siesicher, dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Um auf IAM zuzugreifen, erstellenSie ein AWS.IAM-Serviceobjekt. Erstellen Sie ein JSON-Objekt mit den erforderlichen Parameternzum Erstellen eines Konto-Alias, einschließlich dem Alias, den Sie erstellen möchten. Rufen Sie diecreateAccountAlias-Methode des AWS.IAM-Serviceobjekts auf.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

162

Page 169: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwalten von IAM-Konto-Alias

// Create the IAM service objectvar iam = new AWS.IAM({apiVersion: '2010-05-08'});

iam.createAccountAlias({AccountAlias: process.argv[2]}, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node iam_createaccountalias.js ALIAS

Diesen Beispielcode finden Sie hier auf GitHub.

Auflisten von Konto-AliasErstellen Sie ein Node.js-Modul mit dem Dateinamen iam_listaccountaliases.js. Stellen Siesicher, dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Um auf IAM zuzugreifen, erstellen Sie einAWS.IAM-Serviceobjekt. Erstellen Sie ein JSON-Objekt mit den erforderlichen Parametern zum Auflistenvon Konto-Alias, einschließlich der maximalen Anzahl der zurückzugebenden Elemente. Rufen Sie dielistAccountAliases-Methode des AWS.IAM-Serviceobjekts auf.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create the IAM service objectvar iam = new AWS.IAM({apiVersion: '2010-05-08'});

iam.listAccountAliases({MaxItems: 10}, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node iam_listaccountaliases.js

Diesen Beispiel-Code finden Sie hier auf GitHub.

Löschen eines Konto-AliasErstellen Sie ein Node.js-Modul mit dem Dateinamen iam_deleteaccountalias.js. Stellen Siesicher, dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Um auf IAM zuzugreifen, erstellenSie ein AWS.IAM-Serviceobjekt. Erstellen Sie ein JSON-Objekt mit den erforderlichen Parameternzum Löschen eines Konto-Alias, einschließlich dem Alias, den Sie löschen möchten. Rufen Sie diedeleteAccountAlias-Methode des AWS.IAM-Serviceobjekts auf.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region

163

Page 170: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Amazon Kinesis Beispiel

AWS.config.update({region: 'REGION'});

// Create the IAM service objectvar iam = new AWS.IAM({apiVersion: '2010-05-08'});

iam.deleteAccountAlias({AccountAlias: process.argv[2]}, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node iam_deleteaccountalias.js ALIAS

Diesen Beispielcode finden Sie hier auf GitHub.

Amazon Kinesis BeispielAmazon Kinesis ist eine Plattform für das Streamen von Daten in AWS. Sie bietet leistungsfähigeServices für das einfache Laden und Analysieren von Streaming-Daten und ermöglicht den Aufbaubenutzerdefinierter Streaming-Data-Anwendungen für spezielle Anforderungen.

Die JavaScript-API für Kinesis wird über die AWS.Kinesis-Client-Klasse bereitgestellt. WeitereInformationen zur Verwendung der Kinesis-Client-Klasse finden Sie unter Class: AWS.Kinesis in der API-Referenz.

Themen• Erfassen des Scroll-Verlaufs auf einer Webseite mit Amazon Kinesis (p. 164)

Erfassen des Scroll-Verlaufs auf einer Webseite mitAmazon Kinesis

Dieses Beispiel eines Browser-Skripts zeigt:

• Erfassen des Scroll-Verlaufs auf einer Webseite mit Amazon Kinesis. Dies dient als Beispiel dafür, wiedie Nutzungskennzahlen der Streaming-Seite für die spätere Analyse eingesetzt werden können.

164

Page 171: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Erfassen des Scroll-Verlaufs auf

einer Webseite mit Amazon Kinesis

Das SzenarioIn diesem Beispiel simuliert eine einfache HTML-Seite den Inhalt einer Blogseite. Während der Leserdurch den simulierten Blogbeitrag scrollt, verwendet das Browser-Skript das SDK für JavaScript, umdie Scroll-Distanz der Seite zu erfassen und diese Daten an Kinesis zu senden. Hierzu verwendetes die putRecords -Methode der Kinesis-Client-Klasse. Die von Amazon Kinesis Data Streamserfassten Streaming-Daten können anschließend von Amazon EC2-Instances erfasst und in mehrerenDatenspeichern, beispielsweise Amazon DynamoDB und Amazon Redshift, verarbeitet werden.

Erforderliche AufgabenZum Einrichten und Ausführen dieses Beispiels müssen Sie zunächst diese Aufgaben abschließen:

• Erstellen Sie einen Kinesis-Stream. Sie müssen den Ressourcen-ARN des Streams in einem Browser-Skript einschließen. Weitere Informationen zum Erstellen von Amazon Kinesis Data Streams finden Sieunter Verwalten von Kinesis-Streams im Amazon Kinesis Data Streams-Entwicklerhandbuch.

• Erstellen Sie einen Amazon Cognito-Identitäten-Pool, bei dem der Zugriff für nicht authentifizierteIdentitäten aktiviert ist. Sie müssen die Identitäten-Pool-ID im Code einschließen, umAnmeldeinformationen für das Browser-Skript zu erhalten. Für weitere Informationen über AmazonCognito-Identitäten-Pools finden Sie im Abschnitt zu den Identitäten-Pools im Amazon Cognito-Entwicklerhandbuch.

• Erstellen Sie eine IAM-Rolle, deren Richtlinie die Berechtigung zum Senden von Daten an einen Kinesis-Stream erteilt. Weitere Informationen zum Erstellen einer IAM-Rolle finden Sie im Abschnitt zum Erstelleneiner Rolle zum Delegieren von Berechtigungen an einen AWS-Service im IAM-Benutzerhandbuch.

Verwenden Sie die folgende Rollenrichtlinie beim Erstellen der IAM-Rolle.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "mobileanalytics:PutEvents", "cognito-sync:*" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "kinesis:Put*" ], "Resource": [ "STREAM_RESOURCE_ARN" ] }

165

Page 172: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Erfassen des Scroll-Verlaufs auf

einer Webseite mit Amazon Kinesis

]}

Die BlogseiteDie HTML für die Blogseite besteht hauptsächlich aus einer Reihe von Absätzen in einem <div>-Element.Die scrollbare Höhe von <div> wird dazu verwendet, um zu berechnen, wie weit ein Leser während desLesens durch den Inhalt gescrollt hat. Der HTML-Code enthält auch zwei <script>-Elemente. Einesdieser Elemente fügt der Seite das SDK für JavaScript und das andere das Browser-Skript hinzu. DiesesSkript erfasst den Scroll-Verlauf auf der Seite und meldet ihn Kinesis.

<!DOCTYPE html><html> <head> <title>AWS SDK for JavaScript - Amazon Kinesis Application</title> </head> <body> <div id="BlogContent" style="width: 60%; height: 800px; overflow: auto;margin: auto; text-align: center;"> <div> <p> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nulla eget nisl bibendum feugiat. Fusce rhoncus felis at ultricies luctus. Vivamus fermentum cursus sem at interdum. Proin vel lobortis nulla. Aenean rutrum odio in tellus semper rhoncus. Nam eu felis ac augue dapibus laoreet vel in erat. Vivamus vitae mollis turpis. Integer sagittis dictum odio. Duis nec sapien diam. In imperdiet sem nec ante laoreet, vehicula facilisis sem placerat. Duis ut metus egestas, ullamcorper neque et, accumsan quam. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. </p> <!-- Additional paragraphs in the blog page appear here --> </div> </div> <script src="https://sdk.amazonaws.com/js/aws-sdk-2.283.1.min.js"></script> <script src="kinesis-example.js"></script> </body></html>

Konfigurieren des SDKsRufen Sie die erforderlichen Anmeldedaten zum Konfigurieren des SDK ab, indem Sie dieCognitoIdentityCredentials-Methode aufrufen und die Identitäten-Pool-ID für Amazon Cognitobereitstellen. Erstellen Sie nach Erhalt der Anmeldedaten das Kinesis-Serviceobjekt in der Callback-Funktion.

Der folgende Codeausschnitt veranschaulicht diesen Schritt. (Das vollständige Beispiel finden Sie unterErfassen des Scroll-Verlaufs-Codes der Webseite (p. 168).)

// Configure Credentials to use CognitoAWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'IDENTITY_POOL_ID'});

AWS.config.region = 'REGION';// We're going to partition Amazon Kinesis records based on an identity.// We need to get credentials first, then attach our event listeners.AWS.config.credentials.get(function(err) { // attach event listener if (err) { alert('Error retrieving credentials.'); console.error(err);

166

Page 173: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Erfassen des Scroll-Verlaufs auf

einer Webseite mit Amazon Kinesis

return; } // create Amazon Kinesis service object var kinesis = new AWS.Kinesis({ apiVersion: '2013-12-02' });

Erstellen von Scroll-VerläufenDer Scroll-Verlauf wird mithilfe der Eigenschaften scrollHeight und scrollTop des <div>-Elementsberechnet, welches den Inhalt des Blogbeitrags enthält. Jeder Scroll-Datensatz wird in einer Ereignis-Listener-Funktion für das scroll-Ereignis erstellt und anschließend einem Array von Datensätzenhinzugefügt, das regelmäßig an Kinesis übermittelt wird.

Der folgende Codeausschnitt veranschaulicht diesen Schritt. (Das vollständige Beispiel finden Sie unterErfassen des Scroll-Verlaufs-Codes der Webseite (p. 168).)

// Get the ID of the Web page element. var blogContent = document.getElementById('BlogContent');

// Get Scrollable height var scrollableHeight = blogContent.clientHeight;

var recordData = []; var TID = null; blogContent.addEventListener('scroll', function(event) { clearTimeout(TID); // Prevent creating a record while a user is actively scrolling TID = setTimeout(function() { // calculate percentage var scrollableElement = event.target; var scrollHeight = scrollableElement.scrollHeight; var scrollTop = scrollableElement.scrollTop;

var scrollTopPercentage = Math.round((scrollTop / scrollHeight) * 100); var scrollBottomPercentage = Math.round(((scrollTop + scrollableHeight) / scrollHeight) * 100);

// Create the Amazon Kinesis record var record = { Data: JSON.stringify({ blog: window.location.href, scrollTopPercentage: scrollTopPercentage, scrollBottomPercentage: scrollBottomPercentage, time: new Date() }), PartitionKey: 'partition-' + AWS.config.credentials.identityId }; recordData.push(record); }, 100); });

Senden von Datensätzen an KinesisBefinden sich in diesem Array Datensätze, werden diese ausstehenden Datensätze einmal pro Sekunde anKinesis gesendet.

Der folgende Codeausschnitt veranschaulicht diesen Schritt. (Das vollständige Beispiel finden Sie unterErfassen des Scroll-Verlaufs-Codes der Webseite (p. 168).)

// upload data to Amazon Kinesis every second if data exists

167

Page 174: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Erfassen des Scroll-Verlaufs auf

einer Webseite mit Amazon Kinesis

setInterval(function() { if (!recordData.length) { return; } // upload data to Amazon Kinesis kinesis.putRecords({ Records: recordData, StreamName: 'NAME_OF_STREAM' }, function(err, data) { if (err) { console.error(err); } }); // clear record data recordData = []; }, 1000);});

Erfassen des Scroll-Verlaufs-Codes der WebseiteHier finden Sie den Browser-Skript-Code für Kinesis, über den das Beispiel für den Scroll-Verlauf derWebseite erfasst wurde.

// Configure Credentials to use CognitoAWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'IDENTITY_POOL_ID'});

AWS.config.region = 'REGION';// We're going to partition Amazon Kinesis records based on an identity.// We need to get credentials first, then attach our event listeners.AWS.config.credentials.get(function(err) { // attach event listener if (err) { alert('Error retrieving credentials.'); console.error(err); return; } // create Amazon Kinesis service object var kinesis = new AWS.Kinesis({ apiVersion: '2013-12-02' });

// Get the ID of the Web page element. var blogContent = document.getElementById('BlogContent');

// Get Scrollable height var scrollableHeight = blogContent.clientHeight;

var recordData = []; var TID = null; blogContent.addEventListener('scroll', function(event) { clearTimeout(TID); // Prevent creating a record while a user is actively scrolling TID = setTimeout(function() { // calculate percentage var scrollableElement = event.target; var scrollHeight = scrollableElement.scrollHeight; var scrollTop = scrollableElement.scrollTop;

var scrollTopPercentage = Math.round((scrollTop / scrollHeight) * 100); var scrollBottomPercentage = Math.round(((scrollTop + scrollableHeight) / scrollHeight) * 100);

168

Page 175: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2AWS Lambda Beispiele

// Create the Amazon Kinesis record var record = { Data: JSON.stringify({ blog: window.location.href, scrollTopPercentage: scrollTopPercentage, scrollBottomPercentage: scrollBottomPercentage, time: new Date() }), PartitionKey: 'partition-' + AWS.config.credentials.identityId }; recordData.push(record); }, 100); });

// upload data to Amazon Kinesis every second if data exists setInterval(function() { if (!recordData.length) { return; } // upload data to Amazon Kinesis kinesis.putRecords({ Records: recordData, StreamName: 'NAME_OF_STREAM' }, function(err, data) { if (err) { console.error(err); } }); // clear record data recordData = []; }, 1000);});

AWS Lambda BeispieleUnter Tutorial: Erstellen und Verwenden von Lambda-Funktionen (p. 253) finden Sie Schritt-für-Schritt-Anweisungen zum Erstellen und Verwenden einer Lambda-Funktion.

Amazon S3 BeispieleAmazon Simple Storage Service (Amazon S3) ist ein Webservice, der einen hochskalierbaren Cloud-Speicher bietet. Amazon S3 stellt einen einfach zu bedienenden Objektspeicher mit einer einfachen Web-Service-Schnittstelle zum Speichern und Abrufen beliebiger Datenmengen von überall im Web bereit.

Die JavaScript-API für Amazon S3 wird über die AWS.S3-Client-Klasse bereitgestellt. WeitereInformationen über die Verwendung der Amazon S3-Client-Klasse finden Sie unter Class: AWS.S3 in theAPI-Referenz.

Themen

169

Page 176: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Amazon S3-Browser-Beispiele

• Amazon S3-Browser-Beispiele (p. 170)• Amazon S3-Node.js-Beispiele (p. 189)

Amazon S3-Browser-BeispieleDie folgenden Themen zeigen zwei Beispiele dafür, wie AWS SDK für JavaScript im Browser zurInteraktion mit Amazon S3-Buckets verwendet werden kann.

• Das erste verdeutlicht ein einfaches Szenario, in dem die vorhandenen Fotos von einem beliebigen (nichtauthentifizierten) Benutzer in einem Amazon S3-Bucket angezeigt werden können.

• Das zweite verdeutlicht ein komplexeres Szenario, in dem Benutzer im Bucket Operationen mit Fotosdurchführen dürfen, z. B. hochladen, löschen usw.

Themen• Anzeigen von Fotos aus einem Browser in einem Amazon S3-Bucket (p. 170)• Hochladen von Fotos auf Amazon S3 von einem Browser aus (p. 178)

Anzeigen von Fotos aus einem Browser in einem Amazon S3-Bucket

Dieses Beispiel eines Browser-Skriptcodes veranschaulicht:

• So erstellen Sie ein Fotoalbum in einem Amazon Simple Storage Service (Amazon S3)-Bucket undgestatten nicht authentifizierten Benutzern, die Fotos anzuzeigen.

Das SzenarioIn diesem Beispiel bietet eine einfache HTML-Seite eine Browser-basierte Anwendung zum Anzeigender Fotos in einem Fotoalbum. Das Fotoalbum befindet sich in einem Amazon S3-Bucket, in dem Fotoshochgeladen werden.

Das Browser-Skript verwendet das SDK für JavaScript, um mit einem Amazon S3-Bucket zu interagieren.Das Skript verwendet die listObjects-Methode der Amazon S3-Client-Klasse, damit Sie die Fotoalbenanzeigen können.

Aufgaben, die vorher ausgeführt werden müssenZum Einrichten und Ausführen dieses Beispiels schließen Sie zunächst diese Aufgaben ab.

170

Page 177: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Amazon S3-Browser-Beispiele

Note

In diesem Beispiel müssen Sie dieselbe AWS-Region für den Amazon S3-Bucket und denAmazon Cognito-Identitäten-Pool verwenden.

Erstellen des Buckets

Erstellen Sie in der Amazon S3-Konsole einen Amazon S3-Bucket, in dem Sie Alben und Fotos speichernkönnen. Weitere Informationen zur Verwendung der Konsole zum Erstellen eines S3-Buckets finden Sieunter Erstellen von Buckets im Konsolenbenutzerhandbuch für Amazon Simple Storage Service.

Wenn Sie den S3-Bucket erstellen, führen Sie unbedingt die folgenden Schritte aus:

• Notieren Sie sich den Bucket-Namen, damit Sie ihn in der nachfolgenden erforderlichen Aufgabe„Konfigurieren von Rollenberechtigungen“ verwenden können.

• Wählen Sie eine AWS-Region, um den Bucket darin zu erstellen. Dies muss die gleiche Region sein, dieSie zum Erstellen eines Amazon Cognito-Identitäten-Pools der nachfolgenden erforderlichen Aufgabe„Erstellen eines Identitäten-Pools“ verwenden.

• Löschen Sie im Assistenten Create Bucket (Bucket erstellen) auf der Seite ÖffentlicheZugriffseinstellungen... in der Gruppe Manage public access control lists (ACLs) (Kontrolllisten füröffentlichen Zugriff (ACLs) verwalten) diese Kontrollkästchen: Block new public ACLs and uploadingpublic objects (Neue öffentliche ACLs und öffentliche Objekte hochladen) sowie Remove public accessgranted through public ACLs (Durch öffentliche ACLs gewährten öffentlichen Zugriff entfernen).

Weitere Informationen zum Überprüfen und Konfigurieren von Bucket-Berechtigungen finden Sie unterEinrichten von Zugriffsberechtigungen für Buckets und Objekts im Konsolenbenutzerhandbuch fürAmazon Simple Storage Service.

Erstellen eines Identitäten-Pools

Erstellen Sie in der Amazon Cognito-Konsole einen Amazon Cognito-Identitäten-Pool. Einzelheiten dazufinden Sie unter the section called “Schritt 1: Erstellen eines Amazon Cognito-Identitäten-Pools” (p. 4) imThema Erste Schritte in einem Browser Script.

Wenn Sie den Identitäten-Pool erstellen:

• Notieren Sie sich den Namen des Identitäten-Pools sowie den Rollennamen für die nicht authentifizierteIdentität.

• Wählen Sie auf der Seite Sample Code (Beispiel-Code) „JavaScript“ aus der Liste Platform aus. Kopierenoder notieren Sie anschließend den Beispiel-Code.

Note

Sie müssen die Option „JavaScript“ aus der Liste Platform auswählen, damit Ihr Codefunktioniert.

Konfigurieren der Rollenberechtigungen

Wenn Sie das Anzeigen von Alben und Fotos zulassen möchten, müssen Sie einer IAM-Rolle desIdentitäten-Pools, den Sie soeben erstellt haben, Berechtigungen hinzufügen. Beginnen Sie mit derErstellung einer Richtlinie wie folgt.

1. Öffnen Sie die IAM-Konsole.2. Wählen Sie im Navigationsbereich linken Policies (Richtlinien) und dann Create Policy (Richtlinie

erstellen) aus.3. Geben Sie auf der Registerkarte JSON die folgende JSON-Definition ein. Ersetzen Sie dabei aber

BUCKET_NAME durch den Namen des Buckets.

171

Page 178: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Amazon S3-Browser-Beispiele

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::BUCKET_NAME" ] } ]}

4. Wählen Sie die Schaltfläche Review policy (Richtlinie überprüfen) aus, benennen Sie die Richtlinieund stellen Sie (falls gewünscht) eine Beschreibung bereit. Wählen Sie anschließend die SchaltflächeCreate policy (Richtlinie erstellen) aus.

Notieren Sie sich unbedingt den Namen, sodass Sie ihn später der IAM-Rolle zuweisen können

Nachdem die Richtlinie erstellt wurde, navigieren Sie zurück zur IAM-Konsole. Suchen Sie die IAM-Rollefür die nicht authentifizierte Identität, die Amazon Cognito in der vorherigen Aufgabe „Erstellen einesIdentitäten-Pools“ erstellt hat. Fügen Sie dieser Identität mit der soeben erstellten Richtlinie Berechtigungenhinzu.

Obwohl der Workflow für diese Aufgabe generell dem von the section called “Schritt 2: Hinzufügen einerRichtlinie an die erstellte IAM-Rolle” (p. 5) im Thema Erste Schritte in einem Browser Script entspricht, sinddennoch einige Unterschiede zu beachten:

• Verwenden Sie die neue soeben erstellte Richtlinie, keine Richtlinie für Amazon Polly.• Öffnen auf der Seite Attach Permissions (Berechtigungen zuweisen) die Liste Filter policies (Richtlinien

filtern), um die neue Richtlinie schnell zu finden, und wählen Sie Customer managed (Vom Kundenverwaltet) aus.

Weitere Informationen zum Erstellen einer IAM-Rolle finden Sie unter Erstellen einer Rolle zum Delegierenvon Berechtigungen an einen AWS-Service im IAM-Benutzerhandbuch.

Konfigurieren von CORS

Bevor das Browser-Skript auf den Amazon S3-Bucket zugreifen kann, müssen Sie zunächst wie folgtdessen CORS-Konfiguration (p. 51) einrichten.

<?xml version="1.0" encoding="UTF-8"?><CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <CORSRule> <AllowedOrigin>*</AllowedOrigin> <AllowedMethod>GET</AllowedMethod> <AllowedMethod>HEAD</AllowedMethod> <AllowedHeader>*</AllowedHeader> </CORSRule></CORSConfiguration>

Erstellen von Alben und Hochladen von Fotos

Da die Benutzer in diesem Beispiel nur die Fotos anzeigen können, die bereits sich bereits im Bucketbefinden, müssen Sie einige Alben im Bucket erstellen und Fotos zu ihnen hochladen.

172

Page 179: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Amazon S3-Browser-Beispiele

Note

Die Dateinamen für dieses Beispiel müssen mit einem einzelnen Unterstrich ("_") beginnen.Dieses Zeichen ist für die spätere Filterung wichtig. Stellen Sie außerdem sicher, dass dieUrheberrechte der Eigentümer des Fotos beachtet werden.

1. Öffnen Sie in der Amazon S3-Konsole den zuvor erstellten Bucket.2. Wählen Sie auf der Registerkarte Overview (Übersicht) die Schaltfläche Create folder (Ordner erstellen)

aus, um Ordner zu erstellen. Nennen Sie die Ordner in diesem Beispiel „album1“, „album2“ und„album3“.

3. Wählen Sie für album1 und dann album2 den Ordner aus laden Sie anschließend die Fotos wie folgthoch:a. Wählen Sie die Schaltfläche Upload (Hochladen) aus.b. Ziehen Sie die zu verwendenden Fotodateien oder wählen Sie sie aus, und klicken Sie auf Next

(Weiter).c. Wählen Sie unter Manage public permissions (Öffentliche Berechtigungen verwalten) die Option

Grant public read access to this object(s) (Diesen Objekten öffentlichen Lesezugriff gewähren) aus.d. Wählen Sie die Schaltfläche Hochladen (in der linken unteren Ecke) aus.

4. Lassen Sie album3 leer.

Definieren der Webseite

Der HTML-Code für das Foto-Anzeigeprogramm besteht aus einem <div>-Element, in dem das Browser-Skript die Anzeigeschnittstelle erstellt. Das erste <script>-Element fügt das SDK dem Browser-Skripthinzu. Der zweite <script>-Element fügt die externe JavaScript-Datei hinzu, die den Browser-Skript-Codeenthält.

In diesem Beispiel hat die Datei den Namen PhotoViewer.js. Sie befindet sich im selben Ordner wie dieHTML-Datei. Die aktuelle SDK_VERSION_NUMBER finden Sie in der API-Referenz für SDK für JavaScriptbei https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/index.html.

<!DOCTYPE html><html> <head> <!-- **DO THIS**: --> <!-- Replace SDK_VERSION_NUMBER with the current SDK version number --> <script src="https://sdk.amazonaws.com/js/aws-sdk-SDK_VERSION_NUMBER.js"></script> <script src="./PhotoViewer.js"></script> <script>listAlbums();</script> </head> <body> <h1>Photo Album Viewer</h1> <div id="viewer" /> </body></html>

Konfigurieren des SDKs

Sie erhalten die erforderlichen Anmeldeinformationen zum Konfigurieren des SDK, indem Sie dieCognitoIdentityCredentials-Methode aufrufen. Sie müssen die Amazon Cognito-Identitäten-Pool-IDbereitstellen. Erstellen Sie als nächstes ein AWS.S3-Serviceobjekt.

// **DO THIS**:// Replace BUCKET_NAME with the bucket name.//

173

Page 180: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Amazon S3-Browser-Beispiele

var albumBucketName = 'BUCKET_NAME';

// **DO THIS**:// Replace this block of code with the sample code located at:// Cognito -- Manage Identity Pools -- [identity_pool_name] -- Sample Code -- JavaScript//// Initialize the Amazon Cognito credentials providerAWS.config.region = 'REGION'; // RegionAWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'IDENTITY_POOL_ID',});

// Create a new service objectvar s3 = new AWS.S3({ apiVersion: '2006-03-01', params: {Bucket: albumBucketName}});

// A utility function to create HTML.function getHtml(template) { return template.join('\n');}

Der Rest des Codes in diesem Beispiel definiert die folgenden Funktionen zum Sammeln und Präsentierender Informationen über die Alben und Fotos im Bucket.

• listAlbums

• viewAlbum

Auflisten von Alben im BucketWenn Sie alle vorhandenen Alben im Bucket aufführen möchten, ruft die listAlbums-Funktion derAnwendung die listObjects-Methode des AWS.S3-Service-Objekts auf. Die Funktion verwendet dieCommonPrefixes-Eigenschaft, damit der Aufruf nur Objekte zurückgibt, die als Alben verwendet werden(d. h. die Ordner).

Der Rest der Funktion übernimmt die Liste der Alben aus dem Amazon S3-Bucket und generiert denerforderlichen HTML-Code, um die Albumliste auf der Webseite anzuzeigen.

// List the photo albums that exist in the bucket.function listAlbums() { s3.listObjects({Delimiter: '/'}, function(err, data) { if (err) { return alert('There was an error listing your albums: ' + err.message); } else { var albums = data.CommonPrefixes.map(function(commonPrefix) { var prefix = commonPrefix.Prefix; var albumName = decodeURIComponent(prefix.replace('/', '')); return getHtml([ '<li>', '<button style="margin:5px;" onclick="viewAlbum(\'' + albumName + '\')">', albumName, '</button>', '</li>' ]); }); var message = albums.length ? getHtml([ '<p>Click on an album name to view it.</p>', ]) : '<p>You do not have any albums. Please Create album.'; var htmlTemplate = [

174

Page 181: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Amazon S3-Browser-Beispiele

'<h2>Albums</h2>', message, '<ul>', getHtml(albums), '</ul>', ] document.getElementById('viewer').innerHTML = getHtml(htmlTemplate); } });}

Anzeigen eines AlbumsUm den Inhalt eines Albums im Amazon S3-Bucket anzuzeigen, ruft die viewAlbum-Funktion derAnwendung den Namen eines Albums ab und erstellt für dieses Album den Amazon S3-Schlüssel. ImAnschluss daran ruft die Funktion die listObjects-Methode des AWS.S3-Serviceobjekts auf, um eineListe aller Objekte (Fotos) im Album zu erhalten.

Der Rest der Funktion übernimmt die Liste der Objekte, die sich im Album befinden, und generiert denerforderlichen HTML-Code für die Darstellung der Fotos auf der Webseite.

// Show the photos that exist in an album.function viewAlbum(albumName) { var albumPhotosKey = encodeURIComponent(albumName) + '/'; s3.listObjects({Prefix: albumPhotosKey}, function(err, data) { if (err) { return alert('There was an error viewing your album: ' + err.message); } // 'this' references the AWS.Response instance that represents the response var href = this.request.httpRequest.endpoint.href; var bucketUrl = href + albumBucketName + '/';

var photos = data.Contents.map(function(photo) { var photoKey = photo.Key; var photoUrl = bucketUrl + encodeURIComponent(photoKey); return getHtml([ '<span>', '<div>', '<br/>', '<img style="width:128px;height:128px;" src="' + photoUrl + '"/>', '</div>', '<div>', '<span>', photoKey.replace(albumPhotosKey, ''), '</span>', '</div>', '</span>', ]); }); var message = photos.length ? '<p>The following photos are present.</p>' : '<p>There are no photos in this album.</p>'; var htmlTemplate = [ '<div>', '<button onclick="listAlbums()">', 'Back To Albums', '</button>', '</div>', '<h2>', 'Album: ' + albumName, '</h2>', message, '<div>', getHtml(photos),

175

Page 182: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Amazon S3-Browser-Beispiele

'</div>', '<h2>', 'End of Album: ' + albumName, '</h2>', '<div>', '<button onclick="listAlbums()">', 'Back To Albums', '</button>', '</div>', ] document.getElementById('viewer').innerHTML = getHtml(htmlTemplate); document.getElementsByTagName('img')[0].setAttribute('style', 'display:none;'); });}

Anzeigen von Fotos in einem Amazon S3-Bucket: Vollständiger Code

Dieser Abschnitt enthält den vollständigen HTML- und JavaScript-Code für das Beispiel, in dem Fotos ineinem Amazon S3-Bucket angezeigt werden können. Weitere Details und Voraussetzungen finden Sie imübergeordneten Abschnitt (p. 170).

Der HTML-Code für das Beispiel:

<!DOCTYPE html><html> <head> <!-- **DO THIS**: --> <!-- Replace SDK_VERSION_NUMBER with the current SDK version number --> <script src="https://sdk.amazonaws.com/js/aws-sdk-SDK_VERSION_NUMBER.js"></script> <script src="./PhotoViewer.js"></script> <script>listAlbums();</script> </head> <body> <h1>Photo Album Viewer</h1> <div id="viewer" /> </body></html>

Diesen Beispiel-Code finden Sie hier auf GitHub.

Der Browser-Skript-Code für das Beispiel:

//// Data constructs and initialization.//

// **DO THIS**:// Replace BUCKET_NAME with the bucket name.//var albumBucketName = 'BUCKET_NAME';

// **DO THIS**:// Replace this block of code with the sample code located at:// Cognito -- Manage Identity Pools -- [identity_pool_name] -- Sample Code -- JavaScript//// Initialize the Amazon Cognito credentials providerAWS.config.region = 'REGION'; // RegionAWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'IDENTITY_POOL_ID',});

// Create a new service object

176

Page 183: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Amazon S3-Browser-Beispiele

var s3 = new AWS.S3({ apiVersion: '2006-03-01', params: {Bucket: albumBucketName}});

// A utility function to create HTML.function getHtml(template) { return template.join('\n');}

//// Functions//

// List the photo albums that exist in the bucket.function listAlbums() { s3.listObjects({Delimiter: '/'}, function(err, data) { if (err) { return alert('There was an error listing your albums: ' + err.message); } else { var albums = data.CommonPrefixes.map(function(commonPrefix) { var prefix = commonPrefix.Prefix; var albumName = decodeURIComponent(prefix.replace('/', '')); return getHtml([ '<li>', '<button style="margin:5px;" onclick="viewAlbum(\'' + albumName + '\')">', albumName, '</button>', '</li>' ]); }); var message = albums.length ? getHtml([ '<p>Click on an album name to view it.</p>', ]) : '<p>You do not have any albums. Please Create album.'; var htmlTemplate = [ '<h2>Albums</h2>', message, '<ul>', getHtml(albums), '</ul>', ] document.getElementById('viewer').innerHTML = getHtml(htmlTemplate); } });}

// Show the photos that exist in an album.function viewAlbum(albumName) { var albumPhotosKey = encodeURIComponent(albumName) + '/'; s3.listObjects({Prefix: albumPhotosKey}, function(err, data) { if (err) { return alert('There was an error viewing your album: ' + err.message); } // 'this' references the AWS.Response instance that represents the response var href = this.request.httpRequest.endpoint.href; var bucketUrl = href + albumBucketName + '/';

var photos = data.Contents.map(function(photo) { var photoKey = photo.Key; var photoUrl = bucketUrl + encodeURIComponent(photoKey); return getHtml([ '<span>', '<div>',

177

Page 184: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Amazon S3-Browser-Beispiele

'<br/>', '<img style="width:128px;height:128px;" src="' + photoUrl + '"/>', '</div>', '<div>', '<span>', photoKey.replace(albumPhotosKey, ''), '</span>', '</div>', '</span>', ]); }); var message = photos.length ? '<p>The following photos are present.</p>' : '<p>There are no photos in this album.</p>'; var htmlTemplate = [ '<div>', '<button onclick="listAlbums()">', 'Back To Albums', '</button>', '</div>', '<h2>', 'Album: ' + albumName, '</h2>', message, '<div>', getHtml(photos), '</div>', '<h2>', 'End of Album: ' + albumName, '</h2>', '<div>', '<button onclick="listAlbums()">', 'Back To Albums', '</button>', '</div>', ] document.getElementById('viewer').innerHTML = getHtml(htmlTemplate); document.getElementsByTagName('img')[0].setAttribute('style', 'display:none;'); });}

Diesen Beispiel-Code finden Sie hier auf GitHub.

Hochladen von Fotos auf Amazon S3 von einem Browser aus

Dieses Beispiel eines Browser-Skriptcodes veranschaulicht:

• So erstellen Sie eine Browser-Anwendung, mit der Benutzer Fotoalben in einem Amazon S3-Bucketerstellen und Fotos in die Alben hochladen können.

Das SzenarioIn diesem Beispiel stellt eine einfache HTML-Seite eine browserbasierte Anwendung für die Erstellungvon Fotoalben in einem Amazon S3-Bucket bereit, in die Sie Fotos hochladen können. In der Anwendungkönnen Sie Fotos und Alben löschen, die von Ihnen hinzugefügt wurden.

178

Page 185: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Amazon S3-Browser-Beispiele

Das Browser-Skript verwendet das SDK für JavaScript, um mit einem Amazon S3-Bucket zu interagieren.Verwenden Sie die folgenden Methoden der Amazon S3-Client-Klasse, um die Fotoalbumanwendung zuaktivieren:

• listObjects

• headObject

• putObject

• upload

• deleteObject

• deleteObjects

Erforderliche Aufgaben

Zum Einrichten und Ausführen dieses Beispiels müssen Sie zunächst diese Aufgaben abschließen:

• Erstellen Sie in der Amazon S3-Konsole einen Amazon S3-Bucket, in dem Sie die Fotos des Albumsspeichern werden. Weitere Informationen zum Erstellen eines Buckets in der Konsole finden Sie unterErstellen eines Buckets im Konsolenbenutzerhandbuch für Amazon Simple Storage Service. Stellen Siesicher, dass Sie über Berechtigungen zum Lesen und Schreiben für Objekte verfügen.

• Erstellen Sie in der Amazon Cognito-Konsole unter Verwendung von Verbundidentitäten einenAmazon Cognito-Identitäten-Pool auf den auch nicht authentifizierte Benutzer Zugriff haben undzwar in derselben Region, in der sich der Amazon S3-Bucket befindet. Sie müssen die Identitätspool-ID in den Code einfügen, um Anmeldeinformationen für das Browser-Skript zu erhalten. WeitereInformationen zu Amazon Cognito-Verbundidentitäten finden Sie unter Amazon Cognito-Identitätspools(Verbundidentitäten) im Amazon Cognito-Entwicklerhandbuch.

• Suchen Sie in der IAM-Konsole die IAM-Rolle, die von Amazon Cognito für nicht authentifizierte Benutzererstellt wurde. Fügen Sie die folgende Richtlinie zum Erteilen von Lese- und Schreibberechtigungenfür einen Amazon S3-Bucket hinzu. Weitere Informationen zum Erstellen einer IAM-Rolle finden Sie imAbschnitt zum Erstellen einer Rolle zum Delegieren von Berechtigungen an einen AWS-Service im IAM-Benutzerhandbuch.

Verwenden Sie diese Rollenrichtlinie für die IAM-Rolle, die von Amazon Cognito für nicht authentifizierteBenutzer erstellt wurde.

Warning

Wenn Sie Zugriff für nicht authentifizierte Benutzer aktivieren, gewähren Sie allen Benutzerauf der ganzen Welt Schreibzugriff auf den Bucket und alle Objekte im Bucket. DiesesSicherheitsniveau dient in diesem Beispiel dazu, den Schwerpunkt auf den primären Zielen desBeispiels zu belassen. In vielen Realsituationen wird dringend eine höhere Sicherheit, z. B. dieVerwendung authentifizierter Benutzern und Objektbesitz, empfohlen.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow",

179

Page 186: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Amazon S3-Browser-Beispiele

"Action": [ "s3:DeleteObject", "s3:GetObject", "s3:ListBucket", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::BUCKET_NAME/*" ] } ]}

Konfigurieren von CORS

Bevor das Browser-Skript auf den Amazon S3-Bucket zugreifen kann, müssen Sie zunächst dessenCORS-Konfiguration (p. 51) wie folgt einrichten.

<?xml version="1.0" encoding="UTF-8"?><CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <CORSRule> <AllowedOrigin>*</AllowedOrigin> <AllowedMethod>POST</AllowedMethod> <AllowedMethod>GET</AllowedMethod> <AllowedMethod>PUT</AllowedMethod> <AllowedMethod>DELETE</AllowedMethod> <AllowedMethod>HEAD</AllowedMethod> <AllowedHeader>*</AllowedHeader> <ExposeHeader>ETag</ExposeHeader> </CORSRule></CORSConfiguration>

Die Webseite

Der HTML-Code für die Anwendung zum Hochladen von Fotos besteht aus einem <div>-Element, in demdas Browser-Skript die Upload-Benutzeroberfläche erstellt. Das erste <script>-Element fügt das SDKdem Browser-Skript hinzu. Der zweite <script>-Element fügt die externe JavaScript-Datei hinzu, die denBrowser-Skriptcode enthält.

<!DOCTYPE html><html> <head> <!-- **DO THIS**: --> <!-- Replace SDK_VERSION_NUMBER with the current SDK version number --> <script src="https://sdk.amazonaws.com/js/aws-sdk-SDK_VERSION_NUMBER.js"></script> <script src="./app.js"></script> <script> function getHtml(template) { return template.join('\n'); } listAlbums(); </script> </head> <body> <h1>My Photo Albums App</h1> <div id="app"></div> </body></html>

180

Page 187: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Amazon S3-Browser-Beispiele

Konfigurieren des SDKs

Rufen Sie die erforderlichen Anmeldedaten zum Konfigurieren des SDK ab, indem Sie dieCognitoIdentityCredentials-Methode aufrufen und die Identitäten-Pool-ID für Amazon Cognitobereitstellen. Erstellen Sie als nächstes ein AWS.S3-Client-Serviceobjekt.

var albumBucketName = "BUCKET_NAME";var bucketRegion = "REGION";var IdentityPoolId = "IDENTITY_POOL_ID";

AWS.config.update({ region: bucketRegion, credentials: new AWS.CognitoIdentityCredentials({ IdentityPoolId: IdentityPoolId })});

var s3 = new AWS.S3({ apiVersion: "2006-03-01", params: { Bucket: albumBucketName }});

Fast der gesamte restliche Code in diesem Beispiel ist in einer Reihe von Funktionen organisiert, dieInformationen über die Alben im Bucket sammeln und darstellen, in das Album hochgeladene Fotos ladenund anzeigen sowie Fotos und Alben löschen. Diese Funktionen sind:

• listAlbums

• createAlbum

• viewAlbum

• addPhoto

• deleteAlbum

• deletePhoto

Auflisten von Alben im Bucket

Die Anwendung erstellt Alben im Amazon S3-Bucket als Objekte, deren Schlüssel mit einem Schrägstrichbeginnen, um anzuzeigen, dass das Objekt als Ordner fungiert. Um alle vorhandenen Alben im Bucketaufzulisten, ruft die listAlbums-Funktion der Anwendung die listObjects-Methode des AWS.S3-Serviceobjekts auf und verwendet gleichzeitig commonPrefix, damit der Aufruf nur Objekte wiedergibt, dieals Alben verwendet werden.

Der Rest der Funktion übernimmt die Liste der Alben aus dem Amazon S3-Bucket und generiert denerforderlichen HTML-Code, um die Albumliste auf der Webseite anzuzeigen. Darüber hinaus ermöglicht dieFunktion das Löschen und Öffnen einzelner Alben.

function listAlbums() { s3.listObjects({ Delimiter: "/" }, function(err, data) { if (err) { return alert("There was an error listing your albums: " + err.message); } else { var albums = data.CommonPrefixes.map(function(commonPrefix) { var prefix = commonPrefix.Prefix; var albumName = decodeURIComponent(prefix.replace("/", "")); return getHtml([ "<li>", "<span onclick=\"deleteAlbum('" + albumName + "')\">X</span>", "<span onclick=\"viewAlbum('" + albumName + "')\">",

181

Page 188: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Amazon S3-Browser-Beispiele

albumName, "</span>", "</li>" ]); }); var message = albums.length ? getHtml([ "<p>Click on an album name to view it.</p>", "<p>Click on the X to delete the album.</p>" ]) : "<p>You do not have any albums. Please Create album."; var htmlTemplate = [ "<h2>Albums</h2>", message, "<ul>", getHtml(albums), "</ul>", "<button onclick=\"createAlbum(prompt('Enter Album Name:'))\">", "Create New Album", "</button>" ]; document.getElementById("app").innerHTML = getHtml(htmlTemplate); } });}

Erstellen eines Albums im Bucket

Um ein Album im Amazon S3-Bucket zu erstellen, validiert die createAlbum-Funktion der Anwendungzuerst die Bezeichnung des neuen Albums, um sicherzustellen, dass sie geeignete Zeichen umfasst.Die Funktion erstellt anschließend einen Amazon S3-Objektschlüssel, der an die headObject-Methodedes Amazon S3-Serviceobjekts übergeben wird. Diese Methode gibt die Metadaten des angegebenenSchlüssels zurück, d. h., wenn Daten zurückgegeben werden, ist bereits ein Objekt mit diesem Schlüsselvorhanden.

Wenn das Album nicht bereits vorhanden ist, ruft die Funktion die putObject-Methode des AWS.S3-Serviceobjekts auf, um das Album zu erstellen. Anschließend ruft sie die viewAlbum-Funktion ab, um dasneue leere Album anzuzeigen.

function createAlbum(albumName) { albumName = albumName.trim(); if (!albumName) { return alert("Album names must contain at least one non-space character."); } if (albumName.indexOf("/") !== -1) { return alert("Album names cannot contain slashes."); } var albumKey = encodeURIComponent(albumName) + "/"; s3.headObject({ Key: albumKey }, function(err, data) { if (!err) { return alert("Album already exists."); } if (err.code !== "NotFound") { return alert("There was an error creating your album: " + err.message); } s3.putObject({ Key: albumKey }, function(err, data) { if (err) { return alert("There was an error creating your album: " + err.message); } alert("Successfully created album."); viewAlbum(albumName); }); });

182

Page 189: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Amazon S3-Browser-Beispiele

}

Anzeigen eines Albums

Um den Inhalt eines Albums im Amazon S3-Bucket anzuzeigen, ruft die viewAlbum-Funktion derAnwendung den Namen eines Albums ab und erstellt für dieses Album den Amazon S3-Schlüssel. ImAnschluss daran ruft die Funktion die listObjects-Methode des AWS.S3-Serviceobjekts ab, um eineListe aller Objekte (Fotos) im Album zu erhalten.

Der Rest der Funktion übernimmt die Liste der Objekte (Fotos) aus dem Album und generiert denerforderlichen HTML-Code, um die Fotos auf der Webseite anzuzeigen. Außerdem ermöglicht die Funktiondas Löschen einzelner Fotos sowie die Navigation zurück zur Albumliste.

function viewAlbum(albumName) { var albumPhotosKey = encodeURIComponent(albumName) + "//"; s3.listObjects({ Prefix: albumPhotosKey }, function(err, data) { if (err) { return alert("There was an error viewing your album: " + err.message); } // 'this' references the AWS.Response instance that represents the response var href = this.request.httpRequest.endpoint.href; var bucketUrl = href + albumBucketName + "/";

var photos = data.Contents.map(function(photo) { var photoKey = photo.Key; var photoUrl = bucketUrl + encodeURIComponent(photoKey); return getHtml([ "<span>", "<div>", '<img style="width:128px;height:128px;" src="' + photoUrl + '"/>', "</div>", "<div>", "<span onclick=\"deletePhoto('" + albumName + "','" + photoKey + "')\">", "X", "</span>", "<span>", photoKey.replace(albumPhotosKey, ""), "</span>", "</div>", "</span>" ]); }); var message = photos.length ? "<p>Click on the X to delete the photo</p>" : "<p>You do not have any photos in this album. Please add photos.</p>"; var htmlTemplate = [ "<h2>", "Album: " + albumName, "</h2>", message, "<div>", getHtml(photos), "</div>", '<input id="photoupload" type="file" accept="image/*">', '<button id="addphoto" onclick="addPhoto(\'' + albumName + "')\">", "Add Photo", "</button>", '<button onclick="listAlbums()">', "Back To Albums",

183

Page 190: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Amazon S3-Browser-Beispiele

"</button>" ]; document.getElementById("app").innerHTML = getHtml(htmlTemplate); });}

Hinzufügen von Fotos zu einem Album

Um ein Foto in ein Album im Amazon S3-Bucket hochzuladen, verwendet die addPhoto-Funktion derAnwendung ein Dateiauswahlelement der Webseite, um eine Datei zum Hochladen zu identifizierenSie erstellt dann einen Schlüssel zum Hochladen des Fotos aus dem aktuellen Albumnamen und demDateinamen.

Die Funktion ruft die upload-Methode des Amazon S3-Serviceobjekts auf, um das Foto hochzuladen.Der ACL-Parameter wird auf public-read gesetzt, sodass die Anwendung die Fotos in einem Album zurAnzeige durch ihre URL im Bucket abrufen kann. Nach dem Hochladen des Fotos, zeigt die Funktion dasAlbum erneut an, damit das hochgeladene Foto erscheint.

function addPhoto(albumName) { var files = document.getElementById("photoupload").files; if (!files.length) { return alert("Please choose a file to upload first."); } var file = files[0]; var fileName = file.name; var albumPhotosKey = encodeURIComponent(albumName) + "//";

var photoKey = albumPhotosKey + fileName;

// Use S3 ManagedUpload class as it supports multipart uploads var upload = new AWS.S3.ManagedUpload({ params: { Bucket: albumBucketName, Key: photoKey, Body: file, ACL: "public-read" } });

var promise = upload.promise();

promise.then( function(data) { alert("Successfully uploaded photo."); viewAlbum(albumName); }, function(err) { return alert("There was an error uploading your photo: ", err.message); } );}

Löschen eines Fotos

Um ein Foto aus einem Album im Amazon S3-Bucket zu löschen, ruft die deletePhoto-Funktion derAnwendung die deleteObject-Methode des Amazon S3-Serviceobjekts ab. Dies löscht das Foto, dasanhand des photoKey-Werts an die Funktion übergeben wurde.

function deletePhoto(albumName, photoKey) { s3.deleteObject({ Key: photoKey }, function(err, data) { if (err) {

184

Page 191: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Amazon S3-Browser-Beispiele

return alert("There was an error deleting your photo: ", err.message); } alert("Successfully deleted photo."); viewAlbum(albumName); });}

Löschen eines AlbumsUm ein Album im Amazon S3-Bucket zu löschen, ruft die deleteAlbum-Funktion der Anwendung diedeleteObjects-Methode des Amazon S3-Serviceobjekts ab.

function deleteAlbum(albumName) { var albumKey = encodeURIComponent(albumName) + "/"; s3.listObjects({ Prefix: albumKey }, function(err, data) { if (err) { return alert("There was an error deleting your album: ", err.message); } var objects = data.Contents.map(function(object) { return { Key: object.Key }; }); s3.deleteObjects( { Delete: { Objects: objects, Quiet: true } }, function(err, data) { if (err) { return alert("There was an error deleting your album: ", err.message); } alert("Successfully deleted album."); listAlbums(); } ); });}

Hochladen von Fotos Amazon S3: Vollständiger CodeDieser Abschnitt enthält den vollständigen HTML- und JavaScript-Code für das Beispiel, in dem Fotosin ein Amazon S3-Fotoalbum hochgeladen werden. Weitere Details und Voraussetzungen finden Sie imübergeordneten Abschnitt (p. 178).

Der HTML-Code für das Beispiel:

<!DOCTYPE html><html> <head> <!-- **DO THIS**: --> <!-- Replace SDK_VERSION_NUMBER with the current SDK version number --> <script src="https://sdk.amazonaws.com/js/aws-sdk-SDK_VERSION_NUMBER.js"></script> <script src="./app.js"></script> <script> function getHtml(template) { return template.join('\n'); } listAlbums(); </script> </head> <body> <h1>My Photo Albums App</h1> <div id="app"></div> </body>

185

Page 192: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Amazon S3-Browser-Beispiele

</html>

Diesen Beispiel-Code finden Sie hier auf GitHub.

Der Browser-Skript-Code für das Beispiel:

var albumBucketName = "BUCKET_NAME";var bucketRegion = "REGION";var IdentityPoolId = "IDENTITY_POOL_ID";

AWS.config.update({ region: bucketRegion, credentials: new AWS.CognitoIdentityCredentials({ IdentityPoolId: IdentityPoolId })});

var s3 = new AWS.S3({ apiVersion: "2006-03-01", params: { Bucket: albumBucketName }});

function listAlbums() { s3.listObjects({ Delimiter: "/" }, function(err, data) { if (err) { return alert("There was an error listing your albums: " + err.message); } else { var albums = data.CommonPrefixes.map(function(commonPrefix) { var prefix = commonPrefix.Prefix; var albumName = decodeURIComponent(prefix.replace("/", "")); return getHtml([ "<li>", "<span onclick=\"deleteAlbum('" + albumName + "')\">X</span>", "<span onclick=\"viewAlbum('" + albumName + "')\">", albumName, "</span>", "</li>" ]); }); var message = albums.length ? getHtml([ "<p>Click on an album name to view it.</p>", "<p>Click on the X to delete the album.</p>" ]) : "<p>You do not have any albums. Please Create album."; var htmlTemplate = [ "<h2>Albums</h2>", message, "<ul>", getHtml(albums), "</ul>", "<button onclick=\"createAlbum(prompt('Enter Album Name:'))\">", "Create New Album", "</button>" ]; document.getElementById("app").innerHTML = getHtml(htmlTemplate); } });}

function createAlbum(albumName) { albumName = albumName.trim(); if (!albumName) { return alert("Album names must contain at least one non-space character."); }

186

Page 193: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Amazon S3-Browser-Beispiele

if (albumName.indexOf("/") !== -1) { return alert("Album names cannot contain slashes."); } var albumKey = encodeURIComponent(albumName) + "/"; s3.headObject({ Key: albumKey }, function(err, data) { if (!err) { return alert("Album already exists."); } if (err.code !== "NotFound") { return alert("There was an error creating your album: " + err.message); } s3.putObject({ Key: albumKey }, function(err, data) { if (err) { return alert("There was an error creating your album: " + err.message); } alert("Successfully created album."); viewAlbum(albumName); }); });}

function viewAlbum(albumName) { var albumPhotosKey = encodeURIComponent(albumName) + "//"; s3.listObjects({ Prefix: albumPhotosKey }, function(err, data) { if (err) { return alert("There was an error viewing your album: " + err.message); } // 'this' references the AWS.Response instance that represents the response var href = this.request.httpRequest.endpoint.href; var bucketUrl = href + albumBucketName + "/";

var photos = data.Contents.map(function(photo) { var photoKey = photo.Key; var photoUrl = bucketUrl + encodeURIComponent(photoKey); return getHtml([ "<span>", "<div>", '<img style="width:128px;height:128px;" src="' + photoUrl + '"/>', "</div>", "<div>", "<span onclick=\"deletePhoto('" + albumName + "','" + photoKey + "')\">", "X", "</span>", "<span>", photoKey.replace(albumPhotosKey, ""), "</span>", "</div>", "</span>" ]); }); var message = photos.length ? "<p>Click on the X to delete the photo</p>" : "<p>You do not have any photos in this album. Please add photos.</p>"; var htmlTemplate = [ "<h2>", "Album: " + albumName, "</h2>", message, "<div>", getHtml(photos), "</div>", '<input id="photoupload" type="file" accept="image/*">',

187

Page 194: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Amazon S3-Browser-Beispiele

'<button id="addphoto" onclick="addPhoto(\'' + albumName + "')\">", "Add Photo", "</button>", '<button onclick="listAlbums()">', "Back To Albums", "</button>" ]; document.getElementById("app").innerHTML = getHtml(htmlTemplate); });}

function addPhoto(albumName) { var files = document.getElementById("photoupload").files; if (!files.length) { return alert("Please choose a file to upload first."); } var file = files[0]; var fileName = file.name; var albumPhotosKey = encodeURIComponent(albumName) + "//";

var photoKey = albumPhotosKey + fileName;

// Use S3 ManagedUpload class as it supports multipart uploads var upload = new AWS.S3.ManagedUpload({ params: { Bucket: albumBucketName, Key: photoKey, Body: file, ACL: "public-read" } });

var promise = upload.promise();

promise.then( function(data) { alert("Successfully uploaded photo."); viewAlbum(albumName); }, function(err) { return alert("There was an error uploading your photo: ", err.message); } );}

function deletePhoto(albumName, photoKey) { s3.deleteObject({ Key: photoKey }, function(err, data) { if (err) { return alert("There was an error deleting your photo: ", err.message); } alert("Successfully deleted photo."); viewAlbum(albumName); });}

function deleteAlbum(albumName) { var albumKey = encodeURIComponent(albumName) + "/"; s3.listObjects({ Prefix: albumKey }, function(err, data) { if (err) { return alert("There was an error deleting your album: ", err.message); } var objects = data.Contents.map(function(object) { return { Key: object.Key }; }); s3.deleteObjects( {

188

Page 195: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Amazon S3-Node.js-Beispiele

Delete: { Objects: objects, Quiet: true } }, function(err, data) { if (err) { return alert("There was an error deleting your album: ", err.message); } alert("Successfully deleted album."); listAlbums(); } ); });}

Diesen Beispiel-Code finden Sie hier auf GitHub.

Amazon S3-Node.js-BeispieleIn den folgenden Themen wird in Beispielen verdeutlicht, wie AWS SDK für JavaScript mithilfe von Node.jszur Interaktion mit Amazon S3-Buckets verwendet werden kann.

Themen• Erstellen und Verwenden von Amazon S3-Buckets (p. 189)• Konfigurieren von Amazon S3-Buckets (p. 193)• Verwalten von Amazon S3-Zugriffsberechtigungen für Buckets (p. 196)• Arbeiten mit Richtlinien für Amazon S3-Buckets (p. 197)• Verwenden eines Amazon S3-Buckets als statischen Web-Host (p. 200)

Erstellen und Verwenden von Amazon S3-Buckets

Dieses Node.js-Codebeispiel zeigt:

• das Anfordern und Anzeigen einer Liste von Amazon S3-Buckets in Ihrem Konto.• das Erstellen eines Amazon S3-Buckets.• das Hochladen eines Objekts in einen bestimmten Bucket.

Das Szenario

In diesem Beispiel werden mehrere Node.js-Module dazu verwendet, um eine Liste vorhandener AmazonS3-Buckets zu erhalten, einen Bucket zu erstellen und eine Datei in einen bestimmten Bucket hochzuladen.Diese Node.js-Module verwenden das SDK für JavaScript zum Abrufen von Informationen und Hochladenvon Dateien in einen Amazon S3-Bucket mithilfe dieser Methoden der Amazon S3-Client-Klasse:

• listBuckets

• createBucket

• listObjects

• upload

• deleteBucket

189

Page 196: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Amazon S3-Node.js-Beispiele

Erforderliche AufgabenZum Einrichten und Ausführen dieses Beispiels müssen Sie zunächst diese Aufgaben abschließen:

• Installieren Sie "Node.js". Weitere Informationen über die Installation von Node.js finden Sie auf derNode.js-Website.

• Erstellen Sie eine freigegebene Konfigurationsdatei mit Ihren Anmeldeinformationen. WeitereInformationen zum Bereitstellen einer Datei mit gemeinsam genutzten Anmeldeinformationenfinden Sie unter Laden der Anmeldeinformationen in Node.js aus der freigegebenenAnmeldeinformationsdatei (p. 33).

Konfigurieren des SDKsKonfigurieren Sie das SDK für JavaScript, indem Sie ein globales Konfigurationsobjekt und dann dieRegion für Ihren Code festlegen. In diesem Beispiel ist die Region auf us-west-2 festgelegt.

// Load the SDK für JavaScriptvar AWS = require('aws-sdk');// Set the Region AWS.config.update({region: 'us-west-2'});

Anzeigen einer Liste von Amazon S3-BucketsErstellen Sie ein Node.js-Modul mit dem Dateinamen s3_listbuckets.js. Stellen Sie sicher, dass Siedas SDK wie zuvor dargestellt konfigurieren. Um auf Amazon Simple Storage Service zuzugreifen, erstellenSie ein AWS.S3-Serviceobjekt. Rufen Sie die listBuckets-Methode des Amazon S3-Serviceobjektsauf, um eine Liste Ihrer Buckets zu erhalten. Der data-Parameter der Callback-Funktion verfügt über eineBuckets-Eigenschaft, die ein Array von Zuordnungen zur Darstellung der Buckets enthält. Zeigen Sie dieBucket-Liste an, indem Sie sie in der Konsole protokollieren.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create S3 service objects3 = new AWS.S3({apiVersion: '2006-03-01'});

// Call S3 to list the bucketss3.listBuckets(function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data.Buckets); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node s3_listbuckets.js

Diesen Beispiel-Code finden Sie hier auf GitHub.

Erstellen eines Amazon S3-BucketsErstellen Sie ein Node.js-Modul mit dem Dateinamen s3_createbucket.js. Stellen Sie sicher, dass Siedas SDK wie zuvor dargestellt konfigurieren. Erstellen Sie ein AWS.S3-Serviceobjekt. Das Modul ruft eineinzelnes Befehlszeilen-Argument ab, um einen Namen für den neuen Bucket anzugeben.

190

Page 197: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Amazon S3-Node.js-Beispiele

Fügen Sie eine Variable hinzu, die die Parameter umfasst, die zum Aufrufen der createBucket-Methodedes Amazon S3 Serviceobjekts verwendet werden. Dies schließt auch den Namen des neu erstelltenBuckets ein. Die Callback-Funktion protokolliert den Speicherort des neuen Buckets in der Konsole,nachdem dieser erfolgreich von Amazon S3 erstellt wurde.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create S3 service objects3 = new AWS.S3({apiVersion: '2006-03-01'});

// Create the parameters for calling createBucketvar bucketParams = { Bucket : process.argv[2], ACL : 'public-read'};

// call S3 to create the buckets3.createBucket(bucketParams, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data.Location); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node s3_createbucket.js BUCKET_NAME

Diesen Beispiel-Code finden Sie hier auf GitHub.

Hochladen einer Datei in einen Amazon S3-Bucket

Erstellen Sie ein Node.js-Modul mit dem Dateinamen s3_upload.js. Stellen Sie sicher, dass Sie dasSDK wie zuvor dargestellt konfigurieren. Erstellen Sie ein AWS.S3-Serviceobjekt. Das Modul umfasst zweiBefehlszeilenargumente, das erste gibt den Ziel-Bucket und das zweite die Datei an, die hochgeladenwerden soll.

Erstellen Sie eine Variable mit den erforderlichen Parametern, um die upload-Methode des Amazon S3-Serviceobjekts aufzurufen. Geben Sie den Namen des Ziel-Buckets im Bucket-Parameter an. Der Key-Parameter wird auf den Namen der ausgewählten Datei festgelegt. Diesen erhalten Sie mithilfe des Node.jspath-Moduls. Der Body-Parameter wird auf den Inhalt der ausgewählten Datei festgelegt. Diesen erhaltenSie mithilfe von createReadStream aus dem Node.js fs-Modul.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create S3 service objects3 = new AWS.S3({apiVersion: '2006-03-01'});

// call S3 to retrieve upload file to specified bucketvar uploadParams = {Bucket: process.argv[2], Key: '', Body: ''};var file = process.argv[3];

// Configure the file stream and obtain the upload parameters

191

Page 198: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Amazon S3-Node.js-Beispiele

var fs = require('fs');var fileStream = fs.createReadStream(file);fileStream.on('error', function(err) { console.log('File Error', err);});uploadParams.Body = fileStream;var path = require('path');uploadParams.Key = path.basename(file);

// call S3 to retrieve upload file to specified buckets3.upload (uploadParams, function (err, data) { if (err) { console.log("Error", err); } if (data) { console.log("Upload Success", data.Location); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node s3_upload.js BUCKET_NAME FILE_NAME

Diesen Beispiel-Code finden Sie hier auf GitHub.

Auflisten von Objekten in einem Amazon S3-Bucket

Erstellen Sie ein Node.js-Modul mit dem Dateinamen s3_listobjects.js. Stellen Sie sicher, dass Siedas SDK wie zuvor dargestellt konfigurieren. Erstellen Sie ein AWS.S3-Serviceobjekt.

Fügen Sie eine Variable hinzu, die die Parameter umfasst, die zum Aufrufen der listObjects-Methodedes Amazon S3-Serviceobjekts verwendet werden. Dies schließt auch den Namen zu lesenden Bucketsein. Die Callback-Funktion protokolliert eine Liste mit Objekten (Dateien) oder eine Fehlermeldung.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create S3 service objects3 = new AWS.S3({apiVersion: '2006-03-01'});

// Create the parameters for calling listObjectsvar bucketParams = { Bucket : 'BUCKET_NAME',};

// Call S3 to obtain a list of the objects in the buckets3.listObjects(bucketParams, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node s3_listobjects.js

Diesen Beispiel-Code finden Sie hier auf GitHub.

192

Page 199: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Amazon S3-Node.js-Beispiele

Löschen eines Amazon S3-BucketsErstellen Sie ein Node.js-Modul mit dem Dateinamen s3_deletebucket.js. Stellen Sie sicher, dass Siedas SDK wie zuvor dargestellt konfigurieren. Erstellen Sie ein AWS.S3-Serviceobjekt.

Fügen Sie eine Variable hinzu, die die Parameter umfasst, die zum Aufrufen der createBucket-Methodedes Amazon S3 Serviceobjekts verwendet werden. Dies schließt auch den Namen zu löschenden Bucketsein. Der Bucket muss leer sein, damit er gelöscht werden kann. Die Callback-Funktion protokolliert eineErfolgs- oder Fehlermeldung.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the regionAWS.config.update({region: 'REGION'});

// Create S3 service objects3 = new AWS.S3({apiVersion: '2006-03-01'});

// Create params for S3.deleteBucketvar bucketParams = { Bucket : 'BUCKET_NAME'};

// Call S3 to delete the buckets3.deleteBucket(bucketParams, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node s3_deletebucket.js

Diesen Beispiel-Code finden Sie hier auf GitHub.

Konfigurieren von Amazon S3-Buckets

Dieses Node.js-Codebeispiel zeigt:

• das Konfigurieren der Berechtigungen für das Cross-Origin Resource Sharing (CORS) für einen Bucket.

Das SzenarioIn diesem Beispiel werden mehrere Node.js-Module verwendet, um Ihre Amazon S3-Buckets aufzulistenund die CORS- und Bucket-Protokollierung zu konfigurieren. Die Node.js-Module verwenden das SDK fürJavaScript zur Konfiguration eines ausgewählten Amazon S3-Buckets. Dabei kommen diese Methoden derAmazon S3-Client-Klasse zum Einsatz:

• getBucketCors

193

Page 200: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Amazon S3-Node.js-Beispiele

• putBucketCors

Weitere Informationen zur Verwendung der CORS-Konfiguration mit einem Amazon S3-Bucket finden Sieunter Cross-Origin Resource Sharing (CORS) im Entwicklerhandbuch für Amazon Simple Storage Service.

Erforderliche Aufgaben

Zum Einrichten und Ausführen dieses Beispiels müssen Sie zunächst diese Aufgaben abschließen:

• Installieren Sie "Node.js". Weitere Informationen über die Installation von Node.js finden Sie auf derNode.js-Website.

• Erstellen Sie eine freigegebene Konfigurationsdatei mit Ihren Anmeldeinformationen. WeitereInformationen zum Bereitstellen einer Datei mit gemeinsam genutzten Anmeldeinformationenfinden Sie unter Laden der Anmeldeinformationen in Node.js aus der freigegebenenAnmeldeinformationsdatei (p. 33).

Konfigurieren des SDKs

Konfigurieren Sie das SDK für JavaScript, indem Sie ein globales Konfigurationsobjekt und dann dieRegion für Ihren Code festlegen. In diesem Beispiel ist die Region auf us-west-2 festgelegt.

// Load the SDK für JavaScriptvar AWS = require('aws-sdk');// Set the Region AWS.config.update({region: 'us-west-2'});

Abrufen der CORS-Konfiguration für einen Bucket

Erstellen Sie ein Node.js-Modul mit dem Dateinamen s3_getcors.js. Das Modul ruft ein einzelnesBefehlszeilenargument ab, um den Bucket anzugeben, dessen CORS-Konfiguration Sie möchten. StellenSie sicher, dass Sie das SDK wie zuvor dargestellt konfigurieren. Erstellen Sie ein AWS.S3-Serviceobjekt.

Der einzige Parameter, den Sie beim Abrufen der getBucketCors-Methode weiterleiten müssen,ist der Name des ausgewählten Buckets. Wenn der Bucket derzeit über eine CORS-Konfigurationverfügt, wird diese Konfiguration von Amazon S3 als die CORSRules-Eigenschaft des data-Parameterszurückgegeben, der an die Callback-Funktion weitergeleitet wurde.

Wenn der ausgewählte Bucket über keine CORS-Konfiguration verfügt, werden diese Informationen imerror-Parameter an die Callback-Funktion zurückgegeben.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create S3 service objects3 = new AWS.S3({apiVersion: '2006-03-01'});

// Set the parameters for S3.getBucketCorsvar bucketParams = {Bucket: process.argv[2]};

// call S3 to retrieve CORS configuration for selected buckets3.getBucketCors(bucketParams, function(err, data) { if (err) { console.log("Error", err); } else if (data) { console.log("Success", JSON.stringify(data.CORSRules));

194

Page 201: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Amazon S3-Node.js-Beispiele

}});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node s3_getcors.js BUCKET_NAME

Diesen Beispiel-Code finden Sie hier auf GitHub.

Einrichten der CORS-Konfiguration für einen Bucket

Erstellen Sie ein Node.js-Modul mit dem Dateinamen s3_setcors.js. Das Modul übernimmt mehrereBefehlszeilenargumente. Das erste gibt den Bucket an, dessen CORS-Konfiguration Sie festlegenmöchten. Zusätzliche Argumente listen die HTTP-Methoden auf (POST, GET, PUT, POST, PATCH,DELETE), die Sie für den Bucket zulassen möchten. Konfigurieren Sie das SDK wie zuvor dargestellt.

Erstellen Sie ein AWS.S3-Serviceobjekt. Erstellen Sie als Nächstes ein JSON-Objekt, um die Wertefür die CORS-Konfiguration zu umfassen, wie es für die putBucketCors-Methode des AWS.S3-Serviceobjekts erforderlich ist. Geben Sie "Authorization" für den AllowedHeaders-Wert und "*" fürden AllowedOrigins-Wert an. Geben Sie den Wert für AllowedMethods anfänglich als leeres Array an.

Geben Sie die zulässigen Methoden für das Node.js-Modul als Befehlszeilen-Parameter an, wobei Siedie jeweiligen Methoden hinzufügen, die einem der Parameter entsprechen. Fügen Sie die resultierendeCORS-Konfiguration dem Konfigurationsarray hinzu, das im CORSRules-Parameter enthalten ist. LegenSie den Bucket fest, den Sie im Bucket-Parameter für CORS konfigurieren möchten.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create S3 service objects3 = new AWS.S3({apiVersion: '2006-03-01'});

// Create initial parameters JSON for putBucketCorsvar thisConfig = { AllowedHeaders:["Authorization"], AllowedMethods:[], AllowedOrigins:["*"], ExposeHeaders:[], MaxAgeSeconds:3000};

// Assemble the list of allowed methods based on command line parametersvar allowedMethods = [];process.argv.forEach(function (val, index, array) { if (val.toUpperCase() === "POST") {allowedMethods.push("POST")}; if (val.toUpperCase() === "GET") {allowedMethods.push("GET")}; if (val.toUpperCase() === "PUT") {allowedMethods.push("PUT")}; if (val.toUpperCase() === "PATCH") {allowedMethods.push("PATCH")}; if (val.toUpperCase() === "DELETE") {allowedMethods.push("DELETE")}; if (val.toUpperCase() === "HEAD") {allowedMethods.push("HEAD")};});

// Copy the array of allowed methods into the config objectthisConfig.AllowedMethods = allowedMethods;// Create array of configs then add the config object to itvar corsRules = new Array(thisConfig);

// Create CORS paramsvar corsParams = {Bucket: process.argv[2], CORSConfiguration: {CORSRules: corsRules}};

195

Page 202: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Amazon S3-Node.js-Beispiele

// set the new CORS configuration on the selected buckets3.putBucketCors(corsParams, function(err, data) { if (err) { // display error message console.log("Error", err); } else { // update the displayed CORS config for the selected bucket console.log("Success", data); }});

Um das Beispiel auszuführen, müssen Sie den folgenden Befehl, einschließlich einer oder mehrerer HTTP-Methoden, in der Befehlszeile eingeben, wie nachfolgend dargestellt.

node s3_setcors.js BUCKET_NAME get put

Diesen Beispiel-Code finden Sie hier auf GitHub.

Verwalten von Amazon S3-Zugriffsberechtigungen für Buckets

Dieses Node.js-Codebeispiel zeigt:

• das Abrufen oder Festlegen der Zugriffskontrollliste für einen Amazon S3-Bucket.

Das Szenario

In diesem Beispiel wird ein Node.js-Modul dazu verwendet, die Bucket-ACL (Access Control List,Zugriffskontrollliste) für einen ausgewählten Bucket anzuzeigen. Darüber hinaus wird beschrieben, wieÄnderungen an der ACL für einen ausgewählten Bucket übernommen werden. Das Node.js-Modulverwendet das SDK für JavaScript, um Berechtigungen für die Amazon S3-Zugriffsberechtigungen fürBuckets mithilfe dieser Methoden der Amazon S3-Client-Klasse zu verwalten:

• getBucketAcl

• putBucketAcl

Weitere Informationen zu Zugriffskontrolllisten für Amazon S3-Buckets finden Sie unter Zugriffsverwaltungmit ACLs im Entwicklerhandbuch für Amazon Simple Storage Service.

Erforderliche Aufgaben

Zum Einrichten und Ausführen dieses Beispiels müssen Sie zunächst diese Aufgaben abschließen:

• Installieren Sie "Node.js". Weitere Informationen über die Installation von Node.js finden Sie auf derNode.js-Website.

• Erstellen Sie eine freigegebene Konfigurationsdatei mit Ihren Anmeldeinformationen. WeitereInformationen zum Bereitstellen einer Datei mit gemeinsam genutzten Anmeldeinformationenfinden Sie unter Laden der Anmeldeinformationen in Node.js aus der freigegebenenAnmeldeinformationsdatei (p. 33).

196

Page 203: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Amazon S3-Node.js-Beispiele

Konfigurieren des SDKsKonfigurieren Sie das SDK für JavaScript, indem Sie ein globales Konfigurationsobjekt und dann dieRegion für Ihren Code festlegen. In diesem Beispiel ist die Region auf us-west-2 festgelegt.

// Load the SDK für JavaScriptvar AWS = require('aws-sdk');// Set the Region AWS.config.update({region: 'us-west-2'});

Abrufen der aktuellen Zugriffskontrollliste der BucketsErstellen Sie ein Node.js-Modul mit dem Dateinamen s3_getbucketacl.js. Das Modul ruft eineinzelnes Befehlszeilenargument ab, um den Bucket festzulegen, dessen ACL-Konfiguration Sie möchten.Stellen Sie sicher, dass Sie das SDK wie zuvor dargestellt konfigurieren.

Erstellen Sie ein AWS.S3-Serviceobjekt. Der einzige Parameter, den Sie beim Abrufen dergetBucketAcl-Methode weiterleiten müssen, ist der Name des ausgewählten Buckets. Die Konfigurationder aktuellen Zugriffskontrollliste wird von Amazon S3 im data-Parameter zurückgegeben, der an dieCallback-Funktion übergeben wurde.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create S3 service objects3 = new AWS.S3({apiVersion: '2006-03-01'});

var bucketParams = {Bucket: process.argv[2]};// call S3 to retrieve policy for selected buckets3.getBucketAcl(bucketParams, function(err, data) { if (err) { console.log("Error", err); } else if (data) { console.log("Success", data.Grants); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node s3_getbucketacl.js BUCKET_NAME

Diesen Beispiel-Code finden Sie hier auf GitHub.

Arbeiten mit Richtlinien für Amazon S3-Buckets

Dieses Node.js-Codebeispiel zeigt:

• das Abrufen der Bucket-Richtlinie eines Amazon S3-Buckets.• das Hinzufügen oder Aktualisieren der Bucket-Richtlinie eines Amazon S3-Buckets.• das Löschen der Bucket-Richtlinie eines Amazon S3-Buckets.

197

Page 204: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Amazon S3-Node.js-Beispiele

Das Szenario

In diesem Beispiel werden mehrere Node.js-Module verwendet, um die Bucket-Richtlinie eines Amazon S3-Buckets abzurufen, festzulegen oder zu löschen. Die Node.js-Module verwenden das SDK für JavaScriptzur Konfiguration der Richtlinie eines ausgewählten Amazon S3-Buckets. Dabei kommen diese Methodender Amazon S3-Client-Klasse zum Einsatz:

• getBucketPolicy

• putBucketPolicy

• deleteBucketPolicy

Weitere Informationen zu Bucket-Richtlinien für Amazon S3-Buckets finden Sie unter Verwendung vonBucket-Richtlinien und Benutzerrichtlinien im Entwicklerhandbuch für Amazon Simple Storage Service.

Erforderliche Aufgaben

Zum Einrichten und Ausführen dieses Beispiels müssen Sie zunächst diese Aufgaben abschließen:

• Installieren Sie "Node.js". Weitere Informationen über die Installation von Node.js finden Sie auf derNode.js-Website.

• Erstellen Sie eine freigegebene Konfigurationsdatei mit Ihren Anmeldeinformationen. WeitereInformationen zum Bereitstellen einer Datei mit gemeinsam genutzten Anmeldeinformationenfinden Sie unter Laden der Anmeldeinformationen in Node.js aus der freigegebenenAnmeldeinformationsdatei (p. 33).

Konfigurieren des SDKs

Konfigurieren Sie das SDK für JavaScript, indem Sie ein globales Konfigurationsobjekt und dann dieRegion für Ihren Code festlegen. In diesem Beispiel ist die Region auf us-west-2 festgelegt.

// Load the SDK für JavaScriptvar AWS = require('aws-sdk');// Set the Region AWS.config.update({region: 'us-west-2'});

Abrufen der aktuellen Bucket-Richtlinie

Erstellen Sie ein Node.js-Modul mit dem Dateinamen s3_getbucketpolicy.js. Das Modul ruft eineinzelnes Befehlszeilenargument ab, um den Bucket anzugeben, dessen Richtlinie Sie möchten. StellenSie sicher, dass Sie das SDK wie zuvor dargestellt konfigurieren.

Erstellen Sie ein AWS.S3-Serviceobjekt. Der einzige Parameter, den Sie beim Abrufen dergetBucketPolicy-Methode weiterleiten müssen, ist der Name des ausgewählten Buckets. Wenn derBucket derzeit über eine Richtlinie verfügt, wird diese Richtlinie vom Amazon S3 im data-Parameterzurückgegeben, der an die Callback-Funktion weitergeleitet wurde.

Wenn der ausgewählte Bucket über keine Richtlinie verfügt, werden diese Informationen im error-Parameter an die Callback-Funktion zurückgegeben.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create S3 service objects3 = new AWS.S3({apiVersion: '2006-03-01'});

198

Page 205: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Amazon S3-Node.js-Beispiele

var bucketParams = {Bucket: process.argv[2]};// call S3 to retrieve policy for selected buckets3.getBucketPolicy(bucketParams, function(err, data) { if (err) { console.log("Error", err); } else if (data) { console.log("Success", data.Policy); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node s3_getbucketpolicy.js BUCKET_NAME

Diesen Beispiel-Code finden Sie hier auf GitHub.

Einrichten einer einfachen Bucket-RichtlinieErstellen Sie ein Node.js-Modul mit dem Dateinamen s3_setbucketpolicy.js. Das Modul ruftein einzelnes Befehlszeilenargument ab, um den Bucket anzugeben, dessen Richtlinie Sie anwendenmöchten. Konfigurieren Sie das SDK wie zuvor dargestellt.

Erstellen Sie ein AWS.S3-Serviceobjekt. Bucket-Richtlinien sind in JSON-angegeben. Erstellen Siezunächst ein JSON-Objekt, das alle Werte enthält, die in der Richtlinie festgelegt werden sollen. EineAusnahme ist der Resource-Wert, über den der Bucket identifiziert wird.

Formatieren Sie die von der Richtlinie benötigte Resource-Zeichenfolge und binden Sie den Namen desausgewählten Buckets darin ein. Fügen Sie diese Zeichenfolge in das JSON-Objekt ein. Bereiten Sie dieParameter für die putBucketPolicy-Methode vor, einschließlich dem Namen des Buckets und der ineine Zeichenfolge konvertierten JSON-Richtlinie.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create S3 service objects3 = new AWS.S3({apiVersion: '2006-03-01'});

var readOnlyAnonUserPolicy = { Version: "2012-10-17", Statement: [ { Sid: "AddPerm", Effect: "Allow", Principal: "*", Action: [ "s3:GetObject" ], Resource: [ "" ] } ]};

// create selected bucket resource string for bucket policyvar bucketResource = "arn:aws:s3:::" + process.argv[2] + "/*";readOnlyAnonUserPolicy.Statement[0].Resource[0] = bucketResource;

// convert policy JSON into string and assign into params

199

Page 206: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Amazon S3-Node.js-Beispiele

var bucketPolicyParams = {Bucket: process.argv[2], Policy: JSON.stringify(readOnlyAnonUserPolicy)};

// set the new policy on the selected buckets3.putBucketPolicy(bucketPolicyParams, function(err, data) { if (err) { // display error message console.log("Error", err); } else { console.log("Success", data); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node s3_setbucketpolicy.js BUCKET_NAME

Diesen Beispiel-Code finden Sie hier auf GitHub.

Löschen einer Bucket-RichtlinieErstellen Sie ein Node.js-Modul mit dem Dateinamen s3_deletebucketpolicy.js. Das Modul ruft eineinzelnes Befehlszeilenargument ab, um den Bucket anzugeben, dessen Richtlinie Sie löschen möchten.Konfigurieren Sie das SDK wie zuvor dargestellt.

Erstellen Sie ein AWS.S3-Serviceobjekt. Der einzige Parameter, den Sie beim Abrufen derdeleteBucketPolicy-Methode weiterleiten müssen, ist der Name des ausgewählten Buckets.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create S3 service objects3 = new AWS.S3({apiVersion: '2006-03-01'});

var bucketParams = {Bucket: process.argv[2]};// call S3 to delete policy for selected buckets3.deleteBucketPolicy(bucketParams, function(err, data) { if (err) { console.log("Error", err); } else if (data) { console.log("Success", data); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node s3_deletebucketpolicy.js BUCKET_NAME

Diesen Beispiel-Code finden Sie hier auf GitHub.

Verwenden eines Amazon S3-Buckets als statischen Web-Host

200

Page 207: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Amazon S3-Node.js-Beispiele

Dieses Node.js-Codebeispiel zeigt:

• das Einrichten eines Amazon S3-Buckets als statischen Web-Host.

Das SzenarioIn diesem Beispiel werden mehrere Node.js-Module verwendet, um einen Ihrer Buckets als statischenWeb-Host zu konfigurieren. Die Node.js-Module verwenden das SDK für JavaScript zur Konfiguration einesausgewählten Amazon S3-Buckets. Dabei kommen diese Methoden der Amazon S3-Client-Klasse zumEinsatz:

• getBucketWebsite

• putBucketWebsite

• deleteBucketWebsite

Weitere Informationen zur Verwendung eines Amazon S3-Buckets als statischen Web-Host finden Sieunter Hosten einer statischen Website auf Amazon S3 im Entwicklerhandbuch für Amazon Simple StorageService.

Erforderliche AufgabenZum Einrichten und Ausführen dieses Beispiels müssen Sie zunächst diese Aufgaben abschließen:

• Installieren Sie "Node.js". Weitere Informationen über die Installation von Node.js finden Sie auf derNode.js-Website.

• Erstellen Sie eine freigegebene Konfigurationsdatei mit Ihren Anmeldeinformationen. WeitereInformationen zum Bereitstellen einer Datei mit gemeinsam genutzten Anmeldeinformationenfinden Sie unter Laden der Anmeldeinformationen in Node.js aus der freigegebenenAnmeldeinformationsdatei (p. 33).

Konfigurieren des SDKsKonfigurieren Sie das SDK für JavaScript, indem Sie ein globales Konfigurationsobjekt und dann dieRegion für Ihren Code festlegen. In diesem Beispiel ist die Region auf us-west-2 festgelegt.

// Load the SDK für JavaScriptvar AWS = require('aws-sdk');// Set the Region AWS.config.update({region: 'us-west-2'});

Abrufen der aktuellen Konfiguration einer Bucket-WebsiteErstellen Sie ein Node.js-Modul mit dem Dateinamen s3_getbucketwebsite.js. Das Modul ruft eineinzelnes Befehlszeilenargument ab, um den Bucket anzugeben, dessen Website-Konfiguration Siemöchten. Konfigurieren Sie das SDK wie zuvor dargestellt.

Erstellen Sie ein AWS.S3-Serviceobjekt. Erstellen Sie eine Funktion, die die aktuelle Website-Konfigurationfür den Bucket abruft, der in der Bucket-Liste ausgewählt wurde. Der einzige Parameter, den Sie beimAbrufen der getBucketWebsite-Methode weiterleiten müssen, ist der Name des ausgewählten Buckets.Wenn der Bucket derzeit über eine Website-Konfiguration verfügt, wird diese Konfiguration von Amazon S3im data-Parameter zurückgegeben, der an die Callback-Funktion weitergeleitet wurde.

Wenn der ausgewählte Bucket über keine Website-Konfiguration verfügt, werden diese Informationen imerr-Parameter an die Callback-Funktion zurückgegeben.

// Load the AWS SDK for Node.js

201

Page 208: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Amazon S3-Node.js-Beispiele

var AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create S3 service objects3 = new AWS.S3({apiVersion: '2006-03-01'});

var bucketParams = {Bucket: process.argv[2]};

// call S3 to retrieve the website configuration for selected buckets3.getBucketWebsite(bucketParams, function(err, data) { if (err) { console.log("Error", err); } else if (data) { console.log("Success", data); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node s3_getbucketwebsite.js BUCKET_NAME

Diesen Beispiel-Code finden Sie hier auf GitHub.

Einrichten einer Website-Konfiguration eines BucketsErstellen Sie ein Node.js-Modul mit dem Dateinamen s3_setbucketwebsite.js. Stellen Sie sicher,dass Sie das SDK wie zuvor dargestellt konfigurieren. Erstellen Sie ein AWS.S3-Serviceobjekt.

Erstellen Sie eine Funktion, die eine Bucket-Website-Konfiguration anwendet. Die Konfiguration ermöglichtes dem ausgewählten Bucket als statischer Web-Host zu fungieren. Website-Konfigurationen werdenin JSON angegeben. Erstellen Sie zunächst ein JSON-Objekt mit allen Werten, die in der Website-Konfiguration festgelegt werden sollen, mit Ausnahme des Key-Werts, der das Fehlerdokument und denSuffix-Wert für das Indexdokument identifiziert.

Fügen Sie die Werte der Texteingabe-Elemente in das JSON-Objekt ein. Bereiten Sie die Parameter fürdie putBucketWebsite-Methode vor, einschließlich dem Namen des Buckets und der JSON-Website-Konfiguration.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create S3 service objects3 = new AWS.S3({apiVersion: '2006-03-01'});

// Create JSON for putBucketWebsite parametersvar staticHostParams = { Bucket: '', WebsiteConfiguration: { ErrorDocument: { Key: '' }, IndexDocument: { Suffix: '' }, }};

// Insert specified bucket name and index and error documents into params JSON// from command line arguments

202

Page 209: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Amazon SES Beispiele

staticHostParams.Bucket = process.argv[2];staticHostParams.WebsiteConfiguration.IndexDocument.Suffix = process.argv[3];staticHostParams.WebsiteConfiguration.ErrorDocument.Key = process.argv[4];

// set the new website configuration on the selected buckets3.putBucketWebsite(staticHostParams, function(err, data) { if (err) { // display error message console.log("Error", err); } else { // update the displayed website configuration for the selected bucket console.log("Success", data); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node s3_setbucketwebsite.js BUCKET_NAME INDEX_PAGE ERROR_PAGE

Diesen Beispiel-Code finden Sie hier auf GitHub.

Löschen der Website-Konfiguration eines BucketsErstellen Sie ein Node.js-Modul mit dem Dateinamen s3_deletebucketwebsite.js. Stellen Sie sicher,dass Sie das SDK wie zuvor dargestellt konfigurieren. Erstellen Sie ein AWS.S3-Serviceobjekt.

Erstellen Sie eine Funktion, die die Website-Konfiguration des ausgewählten Buckets löscht. Der einzigeParameter, den Sie beim Abrufen der deleteBucketWebsite-Methode weiterleiten müssen, ist derName des ausgewählten Buckets.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create S3 service objects3 = new AWS.S3({apiVersion: '2006-03-01'});

var bucketParams = {Bucket: process.argv[2]};

// call S3 to delete website configuration for selected buckets3.deleteBucketWebsite(bucketParams, function(error, data) { if (error) { console.log("Error", err); } else if (data) { console.log("Success", data); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node s3_deletebucketwebsite.js BUCKET_NAME

Diesen Beispiel-Code finden Sie hier auf GitHub.

Amazon Simple Email Service BeispieleAmazon Simple Email Service (Amazon SES) ist ein cloudbasierter Service zum Senden von E-Mail,der dem Digitalmarketingpersonal und Anwendungsentwicklern hilft, Marketing-, Benachrichtigungs- und

203

Page 210: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwalten der Identitäten

Transaktions-E-Mails zu senden. Dabei handelt es sich um einen zuverlässigen, kosteneffektiven Dienst fürUnternehmen jeder Größe, die den Kontakt zu ihren Kunden mithilfe von E-Mail aufrechterhalten

Die JavaScript-API für Amazon SES wird über die AWS.SES-Client-Klasse bereitgestellt. WeitereInformationen zur Verwendung der Amazon SES-Client-Klasse finden Sie unter Class: AWS.SES in derAPI-Referenz.

Themen• Verwalten der Amazon SES-Identitäten (p. 204)• Arbeiten mit E-Mail-Vorlagen in Amazon SES (p. 208)• Senden von E-Mails mithilfe von Amazon SES (p. 212)• Verwenden von IP-Adressenfiltern für den E-Mail-Empfang in Amazon SES (p. 216)• Verwenden von Empfangsregeln in Amazon SES (p. 219)

Verwalten der Amazon SES-Identitäten

Dieses Node.js-Codebeispiel zeigt:

• das Verifizieren der mit Amazon SESverwendeten E-Mail-Adressen und Domänen.• das Zuweisen von IAM-Richtlinien zu Ihren Amazon SES-Identitäten.• das Auflisten aller Amazon SES-Identitäten Ihres AWS-Kontos.• das Löschen von Identitäten, die mit Amazon SES verwendet werden.

Eine Amazon SES-Identität ist eine E-Mail-Adresse oder Domäne, die von Amazon SES zum Senden vonE-Mail verwendet wird. Amazon SES erfordert die Überprüfung Ihrer E-Mail-Identitäten. Hierdurch wirdbestätigt, dass Sie tatsächlich deren Eigentümer sind, und verhindert, dass sie von anderen Personenverwendet werden.

Weitere Informationen dazu, wie Sie E-Mail-Adressen und Domänen in Amazon SES überprüfen, findenSie im Abschnitt zum Verifizieren von E-Mail-Adressen und Domänen in Amazon SES im Amazon SimpleEmail Service-Entwicklerhandbuch. Weitere Informationen zur Sendeautorisierung in Amazon SES findenSie im Abschnitt mit der Übersicht über die Amazon SES-Sendeautorisierung .

Das SzenarioIn diesem Beispiel verwenden Sie eine Reihe von Node.js-Modulen zum Verifizieren und Verwalten vonAmazon SES-Identitäten. Die Node.js-Module verwenden das SDK für JavaScript, um E-Mail-Adressen undDomänen mithilfe dieser Methoden der AWS.SES-Client-Klasse zu verwalten:

204

Page 211: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwalten der Identitäten

• listIdentities

• deleteIdentity

• verifyEmailIdentity

• verifyDomainIdentity

Erforderliche AufgabenZum Einrichten und Ausführen dieses Beispiels müssen Sie zunächst diese Aufgaben abschließen:

• Installieren Sie "Node.js". Weitere Informationen über die Installation von Node.js finden Sie auf derNode.js-Website.

• Erstellen Sie eine freigegebene Konfigurationsdatei mit Ihren Anmeldeinformationen. WeitereInformationen zum Bereitstellen einer JSON-Datei mit den Anmeldeinformationen finden Sie unter Ladender Anmeldeinformationen in Node.js aus der freigegebenen Anmeldeinformationsdatei (p. 33).

Konfigurieren des SDKsKonfigurieren Sie das SDK für JavaScript, indem Sie ein globales Konfigurationsobjekt und dann dieRegion für Ihren Code festlegen. In diesem Beispiel ist die Region auf us-west-2 festgelegt.

// Load the SDK für JavaScriptvar AWS = require('aws-sdk');

// Set the Region AWS.config.update({region: 'us-west-2'});

Auflisten Ihrer IdentitätenIn diesem Beispiel listen Sie mithilfe eines Node.js-Moduls die E-Mail-Adressen und Domänenauf, die mit Amazon SES verwendet werden. Erstellen Sie ein Node.js-Modul mit dem Dateinamenses_listidentities.js. Konfigurieren Sie das SDK wie zuvor dargestellt.

Erstellen Sie ein Objekt, um den IdentityType und andere Parameter für die listIdentities-Methode der AWS.SES-Client-Klasse zu übergeben. Um die listIdentities-Methode aufzurufen,erstellen Sie ein Promise für den Aufruf eines Amazon SES-Serviceobjekts und übergeben dasParameterobjekt.

Verarbeiten Sie anschließend die response im Promise-Callback. Die vom Promise-Callbackzurückgegebenen data enthalten ein Array von Domänen-Identitäten, die vom IdentityType-Parameterfestgelegt werden.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set region AWS.config.update({region: 'REGION'});

// Create listIdentities params var params = { IdentityType: "Domain", MaxItems: 10};

// Create the promise and SES service objectvar listIDsPromise = new AWS.SES({apiVersion: '2010-12-01'}).listIdentities(params).promise();

// Handle promise's fulfilled/rejected states

205

Page 212: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwalten der Identitäten

listIDsPromise.then( function(data) { console.log(data.Identities); }).catch( function(err) { console.error(err, err.stack); });

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node ses_listidentities.js

Diesen Beispielcode finden Sie hier auf GitHub.

Verifizieren der Identität einer E-Mail-AdresseIn diesem Beispiel verifizieren Sie mithilfe eines Node.js-Moduls die E-Mail-Absender, diemit Amazon SES verwendet werden. Erstellen Sie ein Node.js-Modul mit dem Dateinamenses_verifyemailidentity.js. Konfigurieren Sie das SDK wie zuvor dargestellt. Um auf Amazon SESzuzugreifen, erstellen Sie ein AWS.SES-Serviceobjekt.

Erstellen Sie ein Objekt mit dem sie den EmailAddress-Parameter an die verifyEmailIdentity-Methode der AWS.SES-Client-Klasse übergeben. Um die verifyEmailIdentity-Methode aufzurufen,erstellen Sie ein Promise für den Aufruf eines Amazon SES-Serviceobjekts und übergeben die Parameter.Verarbeiten Sie anschließend die response im Promise-Callback.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set region AWS.config.update({region: 'REGION'});

// Create promise and SES service objectvar verifyEmailPromise = new AWS.SES({apiVersion: '2010-12-01'}).verifyEmailIdentity({EmailAddress: "[email protected]"}).promise();

// Handle promise's fulfilled/rejected statesverifyEmailPromise.then( function(data) { console.log("Email verification initiated"); }).catch( function(err) { console.error(err, err.stack); });

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein. Die Domäne wird Amazon SEShinzugefügt, damit sie verifiziert werden kann.

node ses_verifyemailidentity.js

Diesen Beispielcode finden Sie hier auf GitHub.

Verifizieren einer Domänen-IdentitätIn diesem Beispiel verifizieren Sie mithilfe eines Node.js-Moduls E-Mail-Domänen, die mitAmazon SES verwendet werden. Erstellen Sie ein Node.js-Modul mit dem Dateinamenses_verifydomainidentity.js. Konfigurieren Sie das SDK wie zuvor dargestellt.

Erstellen Sie ein Objekt mit dem sie den Domain-Parameter an die verifyDomainIdentity-Methodeder AWS.SES-Client-Klasse übergeben. Um die verifyDomainIdentity-Methode aufzurufen, erstellen

206

Page 213: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwalten der Identitäten

Sie ein Promise für den Aufruf eines Amazon SES-Serviceobjekts und übergeben das Parameterobjekt.Verarbeiten Sie anschließend die response im Promise-Callback.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set region AWS.config.update({region: 'REGION'});

// Create the promise and SES service objectvar verifyDomainPromise = new AWS.SES({apiVersion: '2010-12-01'}).verifyDomainIdentity({Domain: "DOMAIN_NAME"}).promise();

// Handle promise's fulfilled/rejected statesverifyDomainPromise.then( function(data) { console.log("Verification Token: " + data.VerificationToken); }).catch( function(err) { console.error(err, err.stack); });

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein. Die Domäne wird Amazon SEShinzugefügt, damit sie verifiziert werden kann.

node ses_verifydomainidentity.js

Diesen Beispielcode finden Sie hier auf GitHub.

Löschen von IdentitätenIn diesem Beispiel löschen Sie mithilfe eines Node.js-Moduls E-Mail-Adressen und Domänen,die mit Amazon SES verwendet werden. Erstellen Sie ein Node.js-Modul mit dem Dateinamenses_deleteidentity.js. Konfigurieren Sie das SDK wie zuvor dargestellt.

Erstellen Sie ein Objekt mit dem sie den Identity-Parameter an die deleteIdentity-Methode derAWS.SES-Client-Klasse übergeben. Um die deleteIdentity-Methode aufzurufen, erstellen Sie einenrequest für den Aufruf eines Amazon SES-Serviceobjekts und übergeben die Parameter. Verarbeiten Sieanschließend die response im Promise-Callback.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set region AWS.config.update({region: 'REGION'});

// Create the promise and SES service objectvar deletePromise = new AWS.SES({apiVersion: '2010-12-01'}).deleteIdentity({Identity: "DOMAIN_NAME"}).promise();

// Handle promise's fulfilled/rejected statesdeletePromise.then( function(data) { console.log("Identity Deleted"); }).catch( function(err) { console.error(err, err.stack); });

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node ses_deleteidentity.js

207

Page 214: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Arbeiten mit E-Mail-Vorlagen

Diesen Beispielcode finden Sie hier auf GitHub.

Arbeiten mit E-Mail-Vorlagen in Amazon SES

Dieses Node.js-Codebeispiel zeigt:

• das Abrufen einer Liste mit all Ihren E-Mail-Vorlagen.• das Abrufen und Aktualisieren von E-Mail-Vorlagen.• das Erstellen und Löschen von E-Mail-Vorlagen.

In Amazon SES können Sie personalisierte E-Mail-Nachrichten mithilfe von E-Mail-Vorlagen verwenden.Weitere Details zum Erstellen und Verwenden von E-Mail-Vorlagen im Amazon Simple Email Servicefinden Sie unter Senden einer personalisierten E-Mail mit der Amazon SES-API im Amazon Simple EmailService-Entwicklerhandbuch.

Das SzenarioIn diesem Beispiel verwenden Sie eine Reihe von Node.js-Module, um mit E-Mail-Vorlagen zu arbeiten.Die Node.js-Module verwenden das SDK für JavaScript, um E-Mail-Vorlagen mithilfe dieser Methoden derAWS.SES-Client-Klasse zu erstellen und zu verwenden:

• listTemplates

• createTemplate

• getTemplate

• deleteTemplate

• updateTemplate

Erforderliche AufgabenZum Einrichten und Ausführen dieses Beispiels müssen Sie zunächst diese Aufgaben abschließen:

• Installieren Sie "Node.js". Weitere Informationen über die Installation von Node.js finden Sie auf derNode.js-Website.

• Erstellen Sie eine freigegebene Konfigurationsdatei mit Ihren Anmeldeinformationen. WeitereInformationen zum Erstellen einer Anmeldeinformationsdatei finden Sie unter Laden derAnmeldeinformationen in Node.js aus der freigegebenen Anmeldeinformationsdatei (p. 33).

Auflisten Ihrer E-Mail-VorlagenIn diesem Beispiel erstellen Sie mithilfe eines Node.js-Moduls eine E-Mail-Vorlage, die mit Amazon SESverwendet werden kann. Erstellen Sie ein Node.js-Modul mit dem Dateinamen ses_listtemplates.js.Konfigurieren Sie das SDK wie zuvor dargestellt.

Erstellen Sie ein Objekt, mit dem Sie die Parameter für die listTemplates-Methode der AWS.SES-Client-Klasse übergeben können. Um die listTemplates-Methode aufzurufen, erstellen Sie ein Promise fürden Aufruf eines Amazon SES-Serviceobjekts und übergeben die Parameter. Verarbeiten Sie anschließenddie response im Promise-Callback.

208

Page 215: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Arbeiten mit E-Mail-Vorlagen

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create the promise and SES service objectvar templatePromise = new AWS.SES({apiVersion: '2010-12-01'}).listTemplates({MaxItems: ITEMS_COUNT}).promise();

// Handle promise's fulfilled/rejected statestemplatePromise.then( function(data) { console.log(data); }).catch( function(err) { console.error(err, err.stack); });

Geben Sie den folgenden Befehl in die Befehlszeile ein, um das Beispiel auszuführen. Amazon SES gibtdie Liste der Vorlagen zurück.

node ses_listtemplates.js

Diesen Beispielcode finden Sie hier auf GitHub.

Abrufen einer E-Mail-VorlageIn diesem Beispiel rufen Sie mithilfe eines Node.js-Moduls eine E-Mail-Vorlage ab, die mit Amazon SESverwendet werden kann. Erstellen Sie ein Node.js-Modul mit dem Dateinamen ses_gettemplate.js.Konfigurieren Sie das SDK wie zuvor dargestellt.

Erstellen Sie ein Objekt mit dem sie den TemplateName-Parameter an die getTemplate-Methodeder AWS.SES-Client-Klasse übergeben. Um die getTemplate-Methode aufzurufen, erstellen Sie einPromise für den Aufruf eines Amazon SES-Serviceobjekts und übergeben die Parameter. Verarbeiten Sieanschließend die response im Promise-Callback.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create the promise and SES service objectvar templatePromise = new AWS.SES({apiVersion: '2010-12-01'}).getTemplate({TemplateName: 'TEMPLATE_NAME'}).promise();

// Handle promise's fulfilled/rejected statestemplatePromise.then( function(data) { console.log(data.SubjectPart); }).catch( function(err) { console.error(err, err.stack); });

Geben Sie den folgenden Befehl in die Befehlszeile ein, um das Beispiel auszuführen. Amazon SES gibtdie Vorlagendetails zurück.

node ses_gettemplate.js

209

Page 216: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Arbeiten mit E-Mail-Vorlagen

Diesen Beispielcode finden Sie hier auf GitHub.

Erstellen einer E-Mail-VorlageIn diesem Beispiel erstellen Sie mithilfe eines Node.js-Moduls eine E-Mail-Vorlage, die mitAmazon SES verwendet werden kann. Erstellen Sie ein Node.js-Modul mit dem Dateinamenses_createtemplate.js. Konfigurieren Sie das SDK wie zuvor dargestellt.

Erstellen Sie ein Objekt, um die Parameter für die createTemplate-Methode der AWS.SES-Client-Klasse zu übergeben, einschließlich TemplateName, HtmlPart, SubjectPart und TextPart. Umdie createTemplate-Methode aufzurufen, erstellen Sie ein Promise für den Aufruf eines Amazon SES-Serviceobjekts und übergeben die Parameter. Verarbeiten Sie anschließend die response im Promise-Callback.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create createTemplate paramsvar params = { Template: { TemplateName: 'TEMPLATE_NAME', /* required */ HtmlPart: 'HTML_CONTENT', SubjectPart: 'SUBJECT_LINE', TextPart: 'TEXT_CONTENT' }};

// Create the promise and SES service objectvar templatePromise = new AWS.SES({apiVersion: '2010-12-01'}).createTemplate(params).promise();

// Handle promise's fulfilled/rejected statestemplatePromise.then( function(data) { console.log(data); }).catch( function(err) { console.error(err, err.stack); });

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein. Die Vorlage wird Amazon SEShinzugefügt.

node ses_createtemplate.js

Diesen Beispielcode finden Sie hier auf GitHub.

Aktualisieren einer E-Mail-VorlageIn diesem Beispiel erstellen Sie mithilfe eines Node.js-Moduls eine E-Mail-Vorlage, die mitAmazon SES verwendet werden kann. Erstellen Sie ein Node.js-Modul mit dem Dateinamenses_updatetemplate.js. Konfigurieren Sie das SDK wie zuvor dargestellt.

Erstellen Sie ein Objekt, um die Template-Parameterwerte, die Sie in der Vorlage aktualisieren möchten,mit dem erforderlichen TemplateName-Parameter an die updateTemplate-Methode der AWS.SES-Client-Klasse zu übergeben. Um die updateTemplate-Methode aufzurufen, erstellen Sie ein Promise fürden Aufruf eines Amazon SES-Serviceobjekts und übergeben die Parameter. Verarbeiten Sie anschließenddie response im Promise-Callback.

210

Page 217: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Arbeiten mit E-Mail-Vorlagen

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create updateTemplate parameters var params = { Template: { TemplateName: 'TEMPLATE_NAME', /* required */ HtmlPart: 'HTML_CONTENT', SubjectPart: 'SUBJECT_LINE', TextPart: 'TEXT_CONTENT' }};

// Create the promise and SES service objectvar templatePromise = new AWS.SES({apiVersion: '2010-12-01'}).updateTemplate(params).promise();

// Handle promise's fulfilled/rejected statestemplatePromise.then( function(data) { console.log("Template Updated"); }).catch( function(err) { console.error(err, err.stack); });

Geben Sie den folgenden Befehl in die Befehlszeile ein, um das Beispiel auszuführen. Amazon SES gibtdie Vorlagendetails zurück.

node ses_updatetemplate.js

Diesen Beispielcode finden Sie hier auf GitHub.

Löschen einer E-Mail-VorlageIn diesem Beispiel erstellen Sie mithilfe eines Node.js-Moduls eine E-Mail-Vorlage, die mitAmazon SES verwendet werden kann. Erstellen Sie ein Node.js-Modul mit dem Dateinamenses_deletetemplate.js. Konfigurieren Sie das SDK wie zuvor dargestellt.

Erstellen Sie ein Objekt, um den erforderlichen TemplateName-Parameter an die deleteTemplate-Methode der AWS.SES-Client-Klasse zu übergeben. Um die deleteTemplate-Methode aufzurufen,erstellen Sie ein Promise für den Aufruf eines Amazon SES-Serviceobjekts und übergeben die Parameter.Verarbeiten Sie anschließend die response im Promise-Callback.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create the promise and SES service objectvar templatePromise = new AWS.SES({apiVersion: '2010-12-01'}).deleteTemplate({TemplateName: 'TEMPLATE_NAME'}).promise();

// Handle promise's fulfilled/rejected statestemplatePromise.then( function(data) { console.log("Template Deleted"); }).catch( function(err) {

211

Page 218: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Senden von E-Mails mithilfe von Amazon SES

console.error(err, err.stack); });

Geben Sie den folgenden Befehl in die Befehlszeile ein, um das Beispiel auszuführen. Amazon SES gibtdie Vorlagendetails zurück.

node ses_deletetemplate.js

Diesen Beispielcode finden Sie hier auf GitHub.

Senden von E-Mails mithilfe von Amazon SES

Dieses Node.js-Codebeispiel zeigt:

• das Senden einer Text- oder HTML-E-Mail.• das Senden von E-Mails, die auf einer E-Mail-Vorlage basieren.• das Senden von Massen-E-Mails, die auf einer E-Mail-Vorlage basieren.

Die Amazon SES-API bietet zwei verschiedene Möglichkeiten zum Senden einer E-Mail, je nachdem, wieviel Kontrolle Sie über das Verfassen der E-Mail-Nachricht möchten: in formatierter oder Raw-Version.Weitere Informationen finden Sie in den Abschnitten zum Senden einer formatierten E-Mail mit der AmazonSES-API und zum Senden von Raw-E-Mails mit der Amazon SES-API.

Das SzenarioIn diesem Beispiel verwenden Sie mehrere Node.js-Module, um E-Mails auf verschiedene Weisen zusenden. Die Node.js-Module verwenden das SDK für JavaScript, um E-Mail-Vorlagen mithilfe dieserMethoden der AWS.SES-Client-Klasse zu erstellen und zu verwenden:

• sendEmail

• sendTemplatedEmail

• sendBulkTemplatedEmail

Erforderliche Aufgaben• Installieren Sie "Node.js". Weitere Informationen über die Installation von Node.js finden Sie auf der

Node.js-Website.• Erstellen Sie eine freigegebene Konfigurationsdatei mit Ihren Anmeldeinformationen. Weitere

Informationen zum Bereitstellen einer JSON-Datei mit den Anmeldeinformationen finden Sie unter Ladender Anmeldeinformationen in Node.js aus der freigegebenen Anmeldeinformationsdatei (p. 33).

Voraussetzungen zum Senden von E-Mail-NachrichtenAmazon SES verfasst eine E-Mail-Nachricht und platziert sie dann sofort in die Sendewarteschlange. DamitSie mithilfe der SES.sendEmail-Methode E-Mails senden können, muss Ihre Nachricht die folgendenAnforderungen erfüllen:

212

Page 219: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Senden von E-Mails mithilfe von Amazon SES

• Sie müssen die Nachricht von einer verifizierten E-Mail-Adresse oder Domäne senden. Wenn Sieversuchen, E-Mails über eine nicht verifizierte Adresse oder Domäne zu senden, führt die Operation zueinem "Email address not verified"-Fehler.

• Wenn sich Ihr Konto noch in der Amazon SES Sandbox befindet, können Sie die E-Mails nur anverifizierte Adressen oder Domänen oder E-Mail-Adressen des Amazon SES-Postfachsimulators senden.Weitere Informationen finden Sie im Abschnitt zum Verifizieren von E-Mail-Adressen und Domänen imAmazon Simple Email Service-Entwicklerhandbuch.

• Die Gesamtgröße der Nachricht, einschließlich Anlagen, muss kleiner als 10 MB sein.• Die Nachricht muss mindestens eine E-Mail-Adresse für einen Empfänger enthalten. Bei der

Empfänger-Adresse kann es sich um eine Empfängeradresse, eine CC: Adresse oder BCC: Adressehandeln. Wenn eine Empfänger-E-Mail-Adresse ungültig ist (d. h., wenn sie nicht das FormatUserName@[SubDomain.]Domain.TopLevelDomain aufweist), wird die gesamte Nachrichtabgelehnt, selbst wenn die Nachricht Empfänger umfasst, die gültig sind.

• Die Nachricht kann nicht mehr als 50 Empfänger in den Feldern „An:“, „CC:“ und „BCC:“ umfassen. WennSie eine E-Mail an eine größere Zielgruppe senden möchten, können Sie Ihre Empfängerliste in Gruppenvon höchstens 50 unterteilen und dann die sendEmail-Methode aufrufen, um die Nachricht mehrmalsan die einzelnen Gruppen zu senden.

Senden von E-MailsIn diesem Beispiel verwenden Sie ein Node.js-Modul zum Senden von E-Mail mit Amazon SES. ErstellenSie ein Node.js-Modul mit dem Dateinamen ses_sendemail.js. Konfigurieren Sie das SDK wie zuvordargestellt.

Erstellen Sie ein Objekt, um die Parameterwerte, die die zu sendende E-Mail definieren, z. B. die Sender-und Empfängeradressen, Betreff, E-Mail-Text im Klartext- und HTML-Format, an die sendEmail-Methodeder AWS.SES-Client-Klasse zu übergeben. Um die sendEmail-Methode aufzurufen, erstellen Sie einPromise für den Aufruf eines Amazon SES-Serviceobjekts und übergeben die Parameter. Verarbeiten Sieanschließend die response im Promise-Callback.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create sendEmail params var params = { Destination: { /* required */ CcAddresses: [ 'EMAIL_ADDRESS', /* more items */ ], ToAddresses: [ 'EMAIL_ADDRESS', /* more items */ ] }, Message: { /* required */ Body: { /* required */ Html: { Charset: "UTF-8", Data: "HTML_FORMAT_BODY" }, Text: { Charset: "UTF-8", Data: "TEXT_FORMAT_BODY" } },

213

Page 220: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Senden von E-Mails mithilfe von Amazon SES

Subject: { Charset: 'UTF-8', Data: 'Test email' } }, Source: 'SENDER_EMAIL_ADDRESS', /* required */ ReplyToAddresses: [ 'EMAIL_ADDRESS', /* more items */ ],};

// Create the promise and SES service objectvar sendPromise = new AWS.SES({apiVersion: '2010-12-01'}).sendEmail(params).promise();

// Handle promise's fulfilled/rejected statessendPromise.then( function(data) { console.log(data.MessageId); }).catch( function(err) { console.error(err, err.stack); });

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein. Die E-Mail wird in dieWarteschlange zum Senden mithilfe von Amazon SES platziert.

node ses_sendemail.js

Diesen Beispiel-Code finden Sie hier auf GitHub.

Senden einer E-Mail mit einer VorlageIn diesem Beispiel verwenden Sie ein Node.js-Modul zum Senden von E-Mail mit Amazon SES. ErstellenSie ein Node.js-Modul mit dem Dateinamen ses_sendtemplatedemail.js. Konfigurieren Sie das SDKwie zuvor dargestellt.

Erstellen Sie ein Objekt, um die Parameterwerte, die die zu sendende E-Mail definieren, z.B. die Sender- und Empfängeradressen, Betreff, E-Mail-Text im Klartext- und HTML-Format,an die sendTemplatedEmail-Methode der AWS.SES-Client-Klasse zu übergeben. Um diesendTemplatedEmail-Methode aufzurufen, erstellen Sie ein Promise für den Aufruf eines Amazon SES-Serviceobjekts und übergeben die Parameter. Verarbeiten Sie anschließend die response im Promise-Callback.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create sendTemplatedEmail params var params = { Destination: { /* required */ CcAddresses: [ 'EMAIL_ADDRESS', /* more CC email addresses */ ], ToAddresses: [ 'EMAIL_ADDRESS', /* more To email addresses */ ]

214

Page 221: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Senden von E-Mails mithilfe von Amazon SES

}, Source: 'EMAIL_ADDRESS', /* required */ Template: 'TEMPLATE_NAME', /* required */ TemplateData: '{ \"REPLACEMENT_TAG_NAME\":\"REPLACEMENT_VALUE\" }', /* required */ ReplyToAddresses: [ 'EMAIL_ADDRESS' ],};

// Create the promise and SES service objectvar sendPromise = new AWS.SES({apiVersion: '2010-12-01'}).sendTemplatedEmail(params).promise();

// Handle promise's fulfilled/rejected statessendPromise.then( function(data) { console.log(data); }).catch( function(err) { console.error(err, err.stack); });

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein. Die E-Mail wird in dieWarteschlange zum Senden mithilfe von Amazon SES platziert.

node ses_sendtemplatedemail.js

Diesen Beispielcode finden Sie hier auf GitHub.

Senden einer Massen-E-Mail mithilfe einer VorlageIn diesem Beispiel verwenden Sie ein Node.js-Modul zum Senden von E-Mail mit Amazon SES. ErstellenSie ein Node.js-Modul mit dem Dateinamen ses_sendbulktemplatedemail.js. Konfigurieren Sie dasSDK wie zuvor dargestellt.

Erstellen Sie ein Objekt, um die Parameterwerte, die die zu sendende E-Mail definieren, z. B.die Sender- und Empfängeradressen, Betreff, E-Mail-Text im Klartext- und HTML-Format, andie sendBulkTemplatedEmail-Methode der AWS.SES-Client-Klasse zu übergeben. Um diesendBulkTemplatedEmail-Methode aufzurufen, erstellen Sie ein Promise für den Aufruf eines AmazonSES-Serviceobjekts und übergeben die Parameter. Verarbeiten Sie anschließend die response imPromise-Callback.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create sendBulkTemplatedEmail params var params = { Destinations: [ /* required */ { Destination: { /* required */ CcAddresses: [ 'EMAIL_ADDRESS', /* more items */ ], ToAddresses: [ 'EMAIL_ADDRESS', 'EMAIL_ADDRESS' /* more items */

215

Page 222: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwenden von IP-Adressfiltern

] }, ReplacementTemplateData: '{ \"REPLACEMENT_TAG_NAME\":\"REPLACEMENT_VALUE\" }' }, ], Source: 'EMAIL_ADDRESS', /* required */ Template: 'TEMPLATE_NAME', /* required */ DefaultTemplateData: '{ \"REPLACEMENT_TAG_NAME\":\"REPLACEMENT_VALUE\" }', ReplyToAddresses: [ 'EMAIL_ADDRESS' ]};

// Create the promise and SES service objectvar sendPromise = new AWS.SES({apiVersion: '2010-12-01'}).sendBulkTemplatedEmail(params).promise();

// Handle promise's fulfilled/rejected statessendPromise.then( function(data) { console.log(data); }).catch( function(err) { console.log(err, err.stack); });

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein. Die E-Mail wird in dieWarteschlange zum Senden mithilfe von Amazon SES platziert.

node ses_sendbulktemplatedemail.js

Diesen Beispielcode finden Sie hier auf GitHub.

Verwenden von IP-Adressenfiltern für den E-Mail-Empfang in Amazon SES

Dieses Node.js-Codebeispiel zeigt:

• das Erstellen von IP-Adressfiltern, um E-Mails, die von einer IP-Adresse oder einem IP-Adressbereichstammen, zu akzeptieren oder abzulehnen.

• das Auflisten Ihrer aktuellen IP-Adressfilter.• das Löschen eines IP-Adressfilters.

In Amazon SES handelt es sich bei einem Filter um eine Datenstruktur, die einen Namen, einen IP-Adressbereich sowie Informationen darüber umfasst, ob hiervon E-Mails zugelassen oder blockiert werden.IP-Adressen, die Sie blockieren oder zulassen möchten, werden als eine einzelne IP-Adresse oder ein IP-Adressbereich in einer Classless Inter-Domain Routing(CIDR)-Notation festgelegt. Weitere Informationenüber den E-Mail-Empfang in Amazon SES finden Sie im Abschnitt über Amazon SES-Konzepte für den E-Mail-Empfang im Amazon Simple Email Service-Entwicklerhandbuch.

216

Page 223: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwenden von IP-Adressfiltern

Das SzenarioIn diesem Beispiel werden mehrere Node.js-Module verwendet, um E-Mails auf verschiedene Weisenzu senden. Die Node.js-Module verwenden das SDK für JavaScript, um E-Mail-Vorlagen mithilfe dieserMethoden der AWS.SES-Client-Klasse zu erstellen und zu verwenden:

• createReceiptFilter

• listReceiptFilters

• deleteReceiptFilter

Erforderliche AufgabenZum Einrichten und Ausführen dieses Beispiels müssen Sie zunächst diese Aufgaben abschließen:

• Installieren Sie "Node.js". Weitere Informationen über die Installation von Node.js finden Sie auf derNode.js-Website.

• Erstellen Sie eine freigegebene Konfigurationsdatei mit Ihren Anmeldeinformationen. WeitereInformationen zum Bereitstellen einer Datei mit gemeinsam genutzten Anmeldeinformationenfinden Sie unter Laden der Anmeldeinformationen in Node.js aus der freigegebenenAnmeldeinformationsdatei (p. 33).

Konfigurieren des SDKsKonfigurieren Sie das SDK für JavaScript, indem Sie ein globales Konfigurationsobjekt und dann dieRegion für Ihren Code festlegen. In diesem Beispiel ist die Region auf us-west-2 festgelegt.

// Load the SDK für JavaScriptvar AWS = require('aws-sdk');// Set the Region AWS.config.update({region: 'us-west-2'});

Erstellen eines IP-AdressfiltersIn diesem Beispiel verwenden Sie ein Node.js-Modul zum Senden von E-Mail mit Amazon SES. ErstellenSie ein Node.js-Modul mit dem Dateinamen ses_createreceiptfilter.js. Konfigurieren Sie das SDKwie zuvor dargestellt.

Erstellen Sie ein Objekt, um die Parameterwerte zu übergeben, die den IP-Filter definieren, einschließlichdem Filternamen, einer IP-Adresse bzw. einem bestimmten Adressbereich, nach denen gefiltert werdensoll, und ob Datenverkehr von den gefilterten E-Mail-Adressen zugelassen oder blockiert werden soll.Um die createReceiptFilter-Methode aufzurufen, erstellen Sie ein Promise für den Aufruf einesAmazon SES-Serviceobjekts und übergeben die Parameter. Verarbeiten Sie anschließend die responseim Promise-Callback.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create createReceiptFilter paramsvar params = { Filter: { IpFilter: { Cidr: "IP_ADDRESS_OR_RANGE", Policy: "Allow" | "Block"

217

Page 224: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwenden von IP-Adressfiltern

}, Name: "NAME" }};

// Create the promise and SES service objectvar sendPromise = new AWS.SES({apiVersion: '2010-12-01'}).createReceiptFilter(params).promise();

// Handle promise's fulfilled/rejected statessendPromise.then( function(data) { console.log(data); }).catch( function(err) { console.error(err, err.stack); });

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein. Der Filter wird in Amazon SESerstellt.

node ses_createreceiptfilter.js

Diesen Beispielcode finden Sie hier auf GitHub.

Auflisten Ihrer IP-AdressfilterIn diesem Beispiel verwenden Sie ein Node.js-Modul zum Senden von E-Mail mit Amazon SES. ErstellenSie ein Node.js-Modul mit dem Dateinamen ses_listreceiptfilters.js. Konfigurieren Sie das SDKwie zuvor dargestellt.

Erstellen eines leeren Parameterobjekts. Um die listReceiptFilters-Methode aufzurufen, erstellenSie ein Promise für den Aufruf eines Amazon SES-Serviceobjekts und übergeben die Parameter.Verarbeiten Sie anschließend die response im Promise-Callback.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create the promise and SES service objectvar sendPromise = new AWS.SES({apiVersion: '2010-12-01'}).listReceiptFilters({}).promise();

// Handle promise's fulfilled/rejected statessendPromise.then( function(data) { console.log(data.Filters); }).catch( function(err) { console.error(err, err.stack); });

Geben Sie den folgenden Befehl in die Befehlszeile ein, um das Beispiel auszuführen. Amazon SES gibtdie Filterliste zurück.

node ses_listreceiptfilters.js

Diesen Beispielcode finden Sie hier auf GitHub.

218

Page 225: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwenden von Empfangsregeln

Löschen eines IP-AdressenfiltersIn diesem Beispiel verwenden Sie ein Node.js-Modul zum Senden von E-Mail mit Amazon SES. ErstellenSie ein Node.js-Modul mit dem Dateinamen ses_deletereceiptfilter.js. Konfigurieren Sie das SDKwie zuvor dargestellt.

Erstellen Sie ein Objekt, um den Namen des zu löschenden IP-Filters zu übergeben. Um diedeleteReceiptFilter-Methode aufzurufen, erstellen Sie ein Promise für den Aufruf eines AmazonSES-Serviceobjekts und übergeben die Parameter. Verarbeiten Sie anschließend die response imPromise-Callback.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create the promise and SES service objectvar sendPromise = new AWS.SES({apiVersion: '2010-12-01'}).deleteReceiptFilter({FilterName: "NAME"}).promise();

// Handle promise's fulfilled/rejected statessendPromise.then( function(data) { console.log("IP Filter deleted"); }).catch( function(err) { console.error(err, err.stack); });

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein. Der Filter wird in Amazon SESgelöscht.

node ses_deletereceiptfilter.js

Diesen Beispielcode finden Sie hier auf GitHub.

Verwenden von Empfangsregeln in Amazon SES

Dieses Node.js-Codebeispiel zeigt:

• das Erstellen und Löschen von Empfangsregeln.• das Organisieren von Empfangsregeln in Gruppen von Empfangsregelsätzen.

Empfangsregeln in Amazon SES geben an, wie mit E-Mails verfahren wird, die für die E-Mail-Adressenoder Domänen, deren Eigentümer Sie sind, empfangen werden. Eine Empfangsregel enthält eineBedingung und eine sortierte Liste mit Aktionen. Wenn der Empfänger einer eingehenden E-Mail mit einemEmpfänger übereinstimmt, der in den Bedingungen für die Empfangsregel festgelegt ist, dann führt AmazonSES die in der Empfangsregel festgelegten Aktionen aus.

Um Amazon SES als E-Mail-Receiver zu verwenden, müssen Sie über mindestens einen aktivenEmpfangsregelsatz verfügen. Ein Empfangsregelsatz ist eine sortierte Sammlung von Empfangsregeln,

219

Page 226: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwenden von Empfangsregeln

die definieren, wie Amazon SES mit E-Mails verfahren soll, die der Service für Ihre verifizierten Domänenempfängt. Weitere Informationen finden Sie unter Erstellen von Empfangsregeln für den Amazon SES-E-Mail-Empfang und Erstellen eines Empfangsregelsatzes für den Amazon SES-E-Mail-Empfang im AmazonSimple Email Service-Entwicklerhandbuch.

Das SzenarioIn diesem Beispiel werden mehrere Node.js-Module verwendet, um E-Mails auf verschiedene Weisenzu senden. Die Node.js-Module verwenden das SDK für JavaScript, um E-Mail-Vorlagen mithilfe dieserMethoden der AWS.SES-Client-Klasse zu erstellen und zu verwenden:

• createReceiptRule

• deleteReceiptRule

• createReceiptRuleSet

• deleteReceiptRuleSet

Erforderliche AufgabenZum Einrichten und Ausführen dieses Beispiels müssen Sie zunächst diese Aufgaben abschließen:

• Installieren Sie "Node.js". Weitere Informationen über die Installation von Node.js finden Sie auf derNode.js-Website.

• Erstellen Sie eine freigegebene Konfigurationsdatei mit Ihren Anmeldeinformationen. WeitereInformationen zum Bereitstellen einer JSON-Datei mit den Anmeldeinformationen finden Sie unter Ladender Anmeldeinformationen in Node.js aus der freigegebenen Anmeldeinformationsdatei (p. 33).

Erstellen einer Amazon S3-EmpfangsregelJede Empfangsregel für Amazon SES enthält eine geordnete Liste der Aktionen. Dieses Beispiel erstellteine Empfangsregel mit einer Amazon S3-Aktion, welche die E-Mail-Nachricht einem Amazon S3-Bucket zustellt. Weitere Informationen über Empfangsregelaktionen finden Sie im Abschnitt zu denAktionsoptionen im Amazon Simple Email Service-Entwicklerhandbuch.

Damit Amazon SES eine E-Mail an einen Amazon S3-Bucket schreiben kann, erstellen Sie eine Bucket-Richtlinie, die PutObject die Amazon SES-Berechtigung erteilt. Weitere Informationen zum Erstellendieser Bucket-Richtlinie finden Sie im Abschnitt zum Erteilen der Berechtigung zum Schreiben von Daten inIhren Amazon S3-Bucket an Amazon SES im Amazon Simple Email Service-Entwicklerhandbuch.

In diesem Beispiel verwenden Sie ein Node.js-Modul zum Erstellen einer Empfangsregel in Amazon SES,um empfangene Nachrichten in einem Amazon S3-Bucket zu speichern. Erstellen Sie ein Node.js-Modulmit dem Dateinamen ses_createreceiptrule.js. Konfigurieren Sie das SDK wie zuvor dargestellt.

Erstellen Sie ein Parameterobjekt, um die erforderlichen Werte zum Erstellen des Empfangsregelsatzeszu übergeben. Um die createReceiptRuleSet-Methode aufzurufen, erstellen Sie ein Promise für denAufruf eines Amazon SES-Serviceobjekts und übergeben die Parameter. Verarbeiten Sie anschließend dieresponse im Promise-Callback.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create createReceiptRule params var params = { Rule: { Actions: [

220

Page 227: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwenden von Empfangsregeln

{ S3Action: { BucketName: "S3_BUCKET_NAME", ObjectKeyPrefix: "email" } } ], Recipients: [ 'DOMAIN | EMAIL_ADDRESS', /* more items */ ], Enabled: true | false, Name: "RULE_NAME", ScanEnabled: true | false, TlsPolicy: "Optional" }, RuleSetName: "RULE_SET_NAME"};

// Create the promise and SES service objectvar newRulePromise = new AWS.SES({apiVersion: '2010-12-01'}).createReceiptRule(params).promise();

// Handle promise's fulfilled/rejected statesnewRulePromise.then( function(data) { console.log("Rule created"); }).catch( function(err) { console.error(err, err.stack); });

Geben Sie den folgenden Befehl in die Befehlszeile ein, um das Beispiel auszuführen. Amazon SES erstelltdie Empfangsregel.

node ses_createreceiptrule.js

Diesen Beispielcode finden Sie hier auf GitHub.

Löschen einer EmpfangsregelIn diesem Beispiel verwenden Sie ein Node.js-Modul zum Senden von E-Mail mit Amazon SES. ErstellenSie ein Node.js-Modul mit dem Dateinamen ses_deletereceiptrule.js. Konfigurieren Sie das SDKwie zuvor dargestellt.

Erstellen Sie ein Parameterobjekt, um den Namen der zu löschenden Empfangsregel zu übergeben. Umdie deleteReceiptRule-Methode aufzurufen, erstellen Sie ein Promise für den Aufruf eines AmazonSES-Serviceobjekts und übergeben die Parameter. Verarbeiten Sie anschließend die response imPromise-Callback.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create deleteReceiptRule paramsvar params = { RuleName: 'RULE_NAME', /* required */ RuleSetName: 'RULE_SET_NAME' /* required */};

// Create the promise and SES service object

221

Page 228: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwenden von Empfangsregeln

var newRulePromise = new AWS.SES({apiVersion: '2010-12-01'}).deleteReceiptRule(params).promise();

// Handle promise's fulfilled/rejected statesnewRulePromise.then( function(data) { console.log("Receipt Rule Deleted"); }).catch( function(err) { console.error(err, err.stack); });

Geben Sie den folgenden Befehl in die Befehlszeile ein, um das Beispiel auszuführen. Amazon SES erstelltdie Liste der Empfangsregelsätze.

node ses_deletereceiptrule.js

Diesen Beispielcode finden Sie hier auf GitHub.

Erstellen eines EmpfangsregelsatzesIn diesem Beispiel verwenden Sie ein Node.js-Modul zum Senden von E-Mail mit Amazon SES. ErstellenSie ein Node.js-Modul mit dem Dateinamen ses_createreceiptruleset.js. Konfigurieren Sie dasSDK wie zuvor dargestellt.

Erstellen Sie ein Parameterobjekt, um den Namen des neuen Empfangsregelsatzes zu übergeben. Um diecreateReceiptRuleSet-Methode aufzurufen, erstellen Sie ein Promise für den Aufruf eines AmazonSES-Serviceobjekts und übergeben die Parameter. Verarbeiten Sie anschließend die response imPromise-Callback.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create the promise and SES service objectvar newRulePromise = new AWS.SES({apiVersion: '2010-12-01'}).createReceiptRuleSet({RuleSetName: "NAME"}).promise();

// Handle promise's fulfilled/rejected statesnewRulePromise.then( function(data) { console.log(data); }).catch( function(err) { console.error(err, err.stack); });

Geben Sie den folgenden Befehl in die Befehlszeile ein, um das Beispiel auszuführen. Amazon SES erstelltdie Liste der Empfangsregelsätze.

node ses_createreceiptruleset.js

Diesen Beispielcode finden Sie hier auf GitHub.

Löschen eines EmpfangsregelsatzesIn diesem Beispiel verwenden Sie ein Node.js-Modul zum Senden von E-Mail mit Amazon SES. ErstellenSie ein Node.js-Modul mit dem Dateinamen ses_deletereceiptruleset.js. Konfigurieren Sie dasSDK wie zuvor dargestellt.

222

Page 229: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Amazon SNS Beispiele

Erstellen Sie ein Objekt, um den Namen des zu löschenden Empfangsregelsatzes zu übergeben. Um diedeleeReceiptRuleSet-Methode aufzurufen, erstellen Sie ein Promise für den Aufruf eines AmazonSES-Serviceobjekts und übergeben die Parameter. Verarbeiten Sie anschließend die response imPromise-Callback.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create the promise and SES service objectvar newRulePromise = new AWS.SES({apiVersion: '2010-12-01'}).deleteReceiptRuleSet({RuleSetName: "NAME"}).promise();

// Handle promise's fulfilled/rejected statesnewRulePromise.then( function(data) { console.log(data); }).catch( function(err) { console.error(err, err.stack); });

Geben Sie den folgenden Befehl in die Befehlszeile ein, um das Beispiel auszuführen. Amazon SES erstelltdie Liste der Empfangsregelsätze.

node ses_deletereceiptruleset.js

Diesen Beispielcode finden Sie hier auf GitHub.

Amazon Simple Notification Service BeispieleAmazon Simple Notification Service (Amazon SNS) ist ein Webservice, der das Zustellen oder Senden vonNachrichten an abonnierende Endpunkte oder Clients koordiniert und verwaltet.

In Amazon SNS gibt es zwei Arten von Clients: Herausgeber und Abonnenten, auch als Produzenten undKonsumenten bezeichnet.

Herausgeber kommunizieren asynchron mit Abonnenten, indem sie eine Nachricht erstellen und an einThema senden, bei dem es sich wirklich um einen logischen Zugriffspunkt und Kommunikationskanalhandelt. Abonnenten (Webserver, E-Mail-Adressen, Amazon SQS-Warteschlangen, Lambda-Funktionen)verarbeiten oder erhalten die Nachricht oder Benachrichtigung über eines der unterstützten Protokolle(Amazon SQS, HTTP/S, E-Mail, SMS, AWS Lambda), wenn sie das Thema abonniert haben.

Die JavaScript-API für Amazon SNS wird über Klasse: AWS.SNS bereitgestellt.

Themen• Verwalten von Themen in Amazon SNS (p. 224)

223

Page 230: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwalten von Themen

• Veröffentlichen von Nachrichten in Amazon SNS (p. 228)• Verwalten von Abonnements in Amazon SNS (p. 229)• Senden von SMS-Nachrichten mit Amazon SNS (p. 233)

Verwalten von Themen in Amazon SNS

Dieses Node.js-Codebeispiel zeigt:

• Erstellen von Themen in Amazon SNS an die Sie die Benachrichtigungen veröffentlichen können• Löschen von Themen, die in Amazon SNS erstellt wurden• Abrufen einer Liste von verfügbaren Themen• Abrufen und Festlegen von Themenattributen

Das SzenarioIn diesem Beispiel verwenden Sie eine Reihe von Node.js-Modulen zum Erstellen, Auflisten und Löschenvon Amazon SNS-Themen und zum Verarbeiten von Themenattributen. Die Node.js-Module verwendendas SDK für JavaScript, um Themen mithilfe dieser Methoden der Client-Klasse AWS.SNS zu verwalten:

• createTopic

• listTopics

• deleteTopic

• getTopicAttributes

• setTopicAttributes

Erforderliche AufgabenZum Einrichten und Ausführen dieses Beispiels müssen Sie zunächst diese Aufgaben abschließen:

• Installieren Sie "Node.js". Weitere Informationen über die Installation von Node.js finden Sie auf derNode.js-Website.

• Erstellen Sie eine freigegebene Konfigurationsdatei mit Ihren Anmeldeinformationen. WeitereInformationen zum Bereitstellen einer JSON-Datei mit den Anmeldeinformationen finden Sie unter Ladender Anmeldeinformationen in Node.js aus der freigegebenen Anmeldeinformationsdatei (p. 33).

Erstellen eines ThemasIn diesem Beispiel verwenden Sie ein Node.js-Modul zum Erstellen eines Amazon SNS-Themas. ErstellenSie ein Node.js-Modul mit dem Dateinamen sns_createtopic.js. Konfigurieren Sie das SDK wie zuvordargestellt.

Erstellen Sie ein Objekt, um den Namen (Name) für das neue Thema an die createTopic-Methodeder AWS.SNS-Client-Klasse zu übergeben. Um die createTopic-Methode aufzurufen, erstellen Sieein Promise für den Aufruf eines Amazon SNS-Serviceobjekts und übergeben das Parameterobjekt.

224

Page 231: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwalten von Themen

Verarbeiten Sie anschließend die response im Promise-Callback. Die vom Promise-Objektzurückgegebenen Daten (data) enthalten den ARN des Themas.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set regionAWS.config.update({region: 'REGION'});

// Create promise and SNS service objectvar createTopicPromise = new AWS.SNS({apiVersion: '2010-03-31'}).createTopic({Name: "TOPIC_NAME"}).promise();

// Handle promise's fulfilled/rejected statescreateTopicPromise.then( function(data) { console.log("Topic ARN is " + data.TopicArn); }).catch( function(err) { console.error(err, err.stack); });

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node sns_createtopic.js

Diesen Beispielcode finden Sie hier auf GitHub.

Auflisten Ihrer ThemenIn diesem Beispiel verwenden Sie ein Node.js-Modul zum Auflisten aller Amazon SNS-Themen. ErstellenSie ein Node.js-Modul mit dem Dateinamen sns_listtopics.js. Konfigurieren Sie das SDK wie zuvordargestellt.

Erstellen Sie ein leeres Objekt, das an die listTopics-Methode der AWS.SNS-Client-Klasse übergebenwird. Um die listTopics-Methode aufzurufen, erstellen Sie ein Promise für den Aufruf eines AmazonSNS-Service-Objekts und übergeben das Parameterobjekt. Verarbeiten Sie anschließend die responseim Promise-Callback. Die vom Promise zurückgegebenen Daten (data) enthalten ein Array von ARNs IhrerThemen.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set regionAWS.config.update({region: 'REGION'});

// Create promise and SNS service objectvar listTopicsPromise = new AWS.SNS({apiVersion: '2010-03-31'}).listTopics({}).promise();

// Handle promise's fulfilled/rejected stateslistTopicsPromise.then( function(data) { console.log(data.Topics); }).catch( function(err) { console.error(err, err.stack); });

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node sns_listtopics.js

225

Page 232: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwalten von Themen

Diesen Beispielcode finden Sie hier auf GitHub.

Löschen eines ThemasIn diesem Beispiel verwenden Sie ein Node.js-Modul zum Löschen eines Amazon SNS-Themas. ErstellenSie ein Node.js-Modul mit dem Dateinamen sns_deletetopic.js. Konfigurieren Sie das SDK wie zuvordargestellt.

Erstellen Sie ein Objekt, das den TopicArn des zu löschenden Themas enthält, um es an diedeleteTopic-Methode der AWS.SNS-Client-Klasse zu übergeben. Um die deleteTopic-Methodeaufzurufen, erstellen Sie ein Promise für den Aufruf eines Amazon SNS-Serviceobjekts und übergeben dasParameterobjekt. Verarbeiten Sie anschließend die response im Promise-Callback.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set regionAWS.config.update({region: 'REGION'});

// Create promise and SNS service objectvar deleteTopicPromise = new AWS.SNS({apiVersion: '2010-03-31'}).deleteTopic({TopicArn: 'TOPIC_ARN'}).promise();

// Handle promise's fulfilled/rejected statesdeleteTopicPromise.then( function(data) { console.log("Topic Deleted"); }).catch( function(err) { console.error(err, err.stack); });

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node sns_deletetopic.js

Diesen Beispielcode finden Sie hier auf GitHub.

Abrufen von ThemenattributenIn diesem Beispiel verwenden Sie ein Node.js-Modul zum Abrufen von Attributen eines Amazon SNS-Themas. Erstellen Sie ein Node.js-Modul mit dem Dateinamen sns_gettopicattributes.js.Konfigurieren Sie das SDK wie zuvor dargestellt.

Erstellen Sie ein Objekt, das den TopicArn eines zu löschenden Themas enthält, um esan die getTopicAttributes-Methode der AWS.SNS-Client-Klasse zu übergeben. Um diegetTopicAttributes-Methode aufzurufen, erstellen Sie ein Promise für den Aufruf eines Amazon SNS-Serviceobjekts und übergeben das Parameterobjekt. Verarbeiten Sie anschließend die response imPromise-Callback.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set regionAWS.config.update({region: 'REGION'});

// Create promise and SNS service objectvar getTopicAttribsPromise = new AWS.SNS({apiVersion: '2010-03-31'}).getTopicAttributes({TopicArn: 'TOPIC_ARN'}).promise();

226

Page 233: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwalten von Themen

// Handle promise's fulfilled/rejected statesgetTopicAttribsPromise.then( function(data) { console.log(data); }).catch( function(err) { console.error(err, err.stack); });

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node sns_gettopicattributes.js

Diesen Beispielcode finden Sie hier auf GitHub.

Festlegen von ThemenattributenIn diesem Beispiel verwenden Sie ein Node.js-Modul zum Festlegen der veränderbarenAttribute eines Amazon SNS-Themas. Erstellen Sie ein Node.js-Modul mit dem Dateinamensns_settopicattributes.js. Konfigurieren Sie das SDK wie zuvor dargestellt.

Erstellen Sie ein Objekt, das die Parameter für eine Aktualisierung des Attributs enthält. Dazu gehörender TopicArn des Themas, dessen Attribute Sie festlegen möchten, der Name des festzulegendenAttributs und der neue Wert für dieses Attribut. Sie können nur die Attribute Policy, DisplayName undDeliveryPolicy festlegen. Übergeben Sie die Parameter an die setTopicAttributes-Methode derClient-Klasse AWS.SNS. Um die setTopicAttributes-Methode aufzurufen, erstellen Sie ein Promisefür den Aufruf eines Amazon SNS-Service-Objekts und übergeben das Parameterobjekt. Verarbeiten Sieanschließend die response im Promise-Callback.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set regionAWS.config.update({region: 'REGION'});

// Create setTopicAttributes parametersvar params = { AttributeName: 'ATTRIBUTE_NAME', /* required */ TopicArn: 'TOPIC_ARN', /* required */ AttributeValue: 'NEW_ATTRIBUTE_VALUE'};

// Create promise and SNS service objectvar setTopicAttribsPromise = new AWS.SNS({apiVersion: '2010-03-31'}).setTopicAttributes(params).promise();

// Handle promise's fulfilled/rejected statessetTopicAttribsPromise.then( function(data) { console.log(data); }).catch( function(err) { console.error(err, err.stack); });

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node sns_settopicattributes.js

227

Page 234: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Veröffentlichen von Nachrichten in einem Thema

Diesen Beispielcode finden Sie hier auf GitHub.

Veröffentlichen von Nachrichten in Amazon SNS

Dieses Node.js-Codebeispiel zeigt:

• Veröffentlichen von Nachrichten in einem Amazon SNS-Thema

Das SzenarioIn diesem Beispiel verwenden Sie eine Reihe von Node.js-Modulen zum Veröffentlichen von Nachrichtenaus Amazon SNS in Themenendpunkten, E-Mails oder Telefonnummern. Die Node.js-Module verwendendas SDK für JavaScript, um Nachrichten mithilfe dieser Methode der Client-Klasse AWS.SNS zu senden:

• publish

Erforderliche AufgabenZum Einrichten und Ausführen dieses Beispiels müssen Sie zunächst diese Aufgaben abschließen:

• Installieren Sie "Node.js". Weitere Informationen über die Installation von Node.js finden Sie auf derNode.js-Website.

• Erstellen Sie eine freigegebene Konfigurationsdatei mit Ihren Anmeldeinformationen. WeitereInformationen zum Bereitstellen einer JSON-Datei mit den Anmeldeinformationen finden Sie unter Ladender Anmeldeinformationen in Node.js aus der freigegebenen Anmeldeinformationsdatei (p. 33).

Veröffentlichen einer Nachricht in einem SNS-ThemaIn diesem Beispiel verwenden Sie ein Node.js-Modul zum Veröffentlichen einer Nachricht in einemAmazon SNS-Thema. Erstellen Sie ein Node.js-Modul mit dem Dateinamen sns_publishtotopic.js.Konfigurieren Sie das SDK wie zuvor dargestellt.

Erstellen Sie ein Objekt, das die Parameter zum Veröffentlichen einer Nachricht enthält, einschließlichNachrichtentext und ARN des SNS-Themas. Weitere Details zu verfügbaren SMS-Attributen finden Sieunter SetSMSAttributes.

Übergeben Sie die Parameter an die Methode publish der Client-Klasse AWS.SNS. Erstellen Sie einPromise für den Aufruf eines Amazon SNS-Service-Objekts und übergeben Sie das Parameterobjekt.Verarbeiten Sie anschließend die Antwort im Promise-Callback.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set regionAWS.config.update({region: 'REGION'});

// Create publish parametersvar params = { Message: 'MESSAGE_TEXT', /* required */

228

Page 235: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwalten von Abonnements

TopicArn: 'TOPIC_ARN'};

// Create promise and SNS service objectvar publishTextPromise = new AWS.SNS({apiVersion: '2010-03-31'}).publish(params).promise();

// Handle promise's fulfilled/rejected statespublishTextPromise.then( function(data) { console.log(`Message ${params.Message} send sent to the topic ${params.TopicArn}`); console.log("MessageID is " + data.MessageId); }).catch( function(err) { console.error(err, err.stack); });

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node sns_publishtotopic.js

Diesen Beispielcode finden Sie hier auf GitHub.

Verwalten von Abonnements in Amazon SNS

Dieses Node.js-Codebeispiel zeigt:

• Auflisten aller Abonnements eines Amazon SNS-Themas• Abonnieren eines Amazon SNS-Themas für eine E-Mail-Adresse, einen Anwendungsendpunkt oder eine

AWS Lambda-Funktion• Abmelden von Amazon SNS-Themen

Das SzenarioIn diesem Beispiel verwenden Sie eine Reihe von Node.js-Modulen zum Veröffentlichen vonBenachrichtigungen in Amazon SNS-Themen. Die Node.js-Module verwenden das SDK für JavaScript, umThemen mithilfe dieser Methoden der Client-Klasse AWS.SNS zu verwalten:

• subscribe

• confirmSubscription

• listSubscriptionsByTopic

• unsubscribe

Erforderliche AufgabenZum Einrichten und Ausführen dieses Beispiels müssen Sie zunächst diese Aufgaben abschließen:

• Installieren Sie "Node.js". Weitere Informationen über die Installation von Node.js finden Sie auf derNode.js-Website.

229

Page 236: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwalten von Abonnements

• Erstellen Sie eine freigegebene Konfigurationsdatei mit Ihren Anmeldeinformationen. WeitereInformationen zum Bereitstellen einer JSON-Datei mit den Anmeldeinformationen finden Sie unter Ladender Anmeldeinformationen in Node.js aus der freigegebenen Anmeldeinformationsdatei (p. 33).

Auflisten von Abonnements eines ThemasIn diesem Beispiel verwenden Sie ein Node.js-Modul zum Auflisten aller Abonnements eines AmazonSNS-Themas. Erstellen Sie ein Node.js-Modul mit dem Dateinamen sns_listsubscriptions.js.Konfigurieren Sie das SDK wie zuvor dargestellt.

Erstellen Sie ein Objekt, das den TopicArn-Parameter für das Thema enthält, dessen AbonnementsSie auflisten möchten. Übergeben Sie die Parameter an die listSubscriptionsByTopic-Methodeder Client-Klasse AWS.SNS. Um die listSubscriptionsByTopic-Methode aufzurufen, erstellen Sieein Promise für den Aufruf eines Amazon SNS-Serviceobjekts und übergeben das Parameterobjekt.Verarbeiten Sie anschließend die response im Promise-Callback.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set regionAWS.config.update({region: 'REGION'});

const params = { TopicArn : 'TOPIC_ARN'}

// Create promise and SNS service objectvar subslistPromise = new AWS.SNS({apiVersion: '2010-03-31'}).listSubscriptionsByTopic(params).promise();

// Handle promise's fulfilled/rejected states subslistPromise.then( function(data) { console.log(data); }).catch( function(err) { console.error(err, err.stack); } );

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node sns_listsubscriptions.js

Diesen Beispielcode finden Sie hier auf GitHub.

Abonnieren eines Themas durch Hinterlegen einer E-Mail-AdresseIn diesem Beispiel verwenden Sie ein Node.js-Modul zum Hinterlegen einer E-Mail-Adresse für denEmpfang von SMTP-E-Mail-Nachrichten eines abonnierten Amazon SNS-Themas. Erstellen Sie einNode.js-Modul mit dem Dateinamen sns_subscribeemail.js. Konfigurieren Sie das SDK wie zuvordargestellt.

Erstellen Sie ein Objekt, das den Protocol-Parameter enthält, um das email-Protokoll, den TopicArnfür das Thema, das abonniert werden soll, und eine E-Mail-Adresse als Endpoint der Nachrichtanzugeben. Übergeben Sie die Parameter an die subscribe-Methode der Client-Klasse AWS.SNS. Mitder subscribe-Methode können Sie ein Amazon SNS-Thema mit mehreren verschiedenen Endpunkten

230

Page 237: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwalten von Abonnements

abhängig von den Werten, die für die übergebenen Parameter verwendet werden, abonnieren, wie weitereBeispiele in diesem Thema veranschaulichen.

Um die subscribe-Methode aufzurufen, erstellen Sie ein Promise für den Aufruf eines Amazon SNS-Service-Objekts und übergeben das Parameterobjekt. Verarbeiten Sie anschließend die response imPromise-Callback.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set regionAWS.config.update({region: 'REGION'});

// Create subscribe/email parametersvar params = { Protocol: 'EMAIL', /* required */ TopicArn: 'TOPIC_ARN', /* required */ Endpoint: 'EMAIL_ADDRESS'};

// Create promise and SNS service objectvar subscribePromise = new AWS.SNS({apiVersion: '2010-03-31'}).subscribe(params).promise();

// Handle promise's fulfilled/rejected statessubscribePromise.then( function(data) { console.log("Subscription ARN is " + data.SubscriptionArn); }).catch( function(err) { console.error(err, err.stack); });

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node sns_subscribeemail.js

Diesen Beispielcode finden Sie hier auf GitHub.

Abonnieren eines Themas mit einem AnwendungsendpunktIn diesem Beispiel verwenden Sie ein Node.js-Modul zur Angabe eines mobilen Anwendungsendpunkts fürden Empfang von Benachrichtigungen eines abonnierten Amazon SNS-Themas. Erstellen Sie ein Node.js-Modul mit dem Dateinamen sns_subscribeapp.js. Konfigurieren Sie das SDK wie zuvor dargestellt.

Erstellen Sie ein Objekt, das den Protocol-Parameter enthält, um das application-Protokoll,den TopicArn für das Thema, das Sie abonnieren möchten, und den ARN des mobilenAnwendungsendpunkts für den Endpoint-Parameter anzugeben. Übergeben Sie die Parameter an diesubscribe-Methode der Client-Klasse AWS.SNS.

Um die subscribe-Methode aufzurufen, erstellen Sie ein Promise für den Aufruf eines Amazon SNS-Service-Objekts und übergeben das Parameterobjekt. Verarbeiten Sie anschließend die response imPromise-Callback.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set regionAWS.config.update({region: 'REGION'});

// Create subscribe/email parametersvar params = { Protocol: 'application', /* required */ TopicArn: 'TOPIC_ARN', /* required */

231

Page 238: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwalten von Abonnements

Endpoint: 'MOBILE_ENDPOINT_ARN'};

// Create promise and SNS service objectvar subscribePromise = new AWS.SNS({apiVersion: '2010-03-31'}).subscribe(params).promise();

// Handle promise's fulfilled/rejected statessubscribePromise.then( function(data) { console.log("Subscription ARN is " + data.SubscriptionArn); }).catch( function(err) { console.error(err, err.stack); });

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node sns_subscribeapp.js

Diesen Beispielcode finden Sie hier auf GitHub.

Abonnieren eines Themas mit einer Lambda-FunktionIn diesem Beispiel verwenden Sie ein Node.js-Modul zur Angabe einer AWS Lambda-Funktion für denEmpfang von Benachrichtigungen eines abonnierten Amazon SNS-Themas. Erstellen Sie ein Node.js-Modul mit dem Dateinamen sns_subscribelambda.js. Konfigurieren Sie das SDK wie zuvor gezeigt.

Erstellen Sie ein Objekt, das den Protocol-Parameter enthält, indem Sie das lambda-Protokoll, denTopicArn für das zu abonnierende Thema und den ARN einer AWS Lambda-Funktion als Endpoint-Parameter angeben. Übergeben Sie die Parameter an die subscribe-Methode der Client-KlasseAWS.SNS.

Um die subscribe-Methode aufzurufen, erstellen Sie ein Promise für den Aufruf eines Amazon SNS-Serviceobjekts und übergeben das Parameterobjekt. Verarbeiten Sie anschließend die response imPromise-Callback.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set regionAWS.config.update({region: 'REGION'});

// Create subscribe/email parametersvar params = { Protocol: 'lambda', /* required */ TopicArn: 'TOPIC_ARN', /* required */ Endpoint: 'LAMBDA_FUNCTION_ARN'};

// Create promise and SNS service objectvar subscribePromise = new AWS.SNS({apiVersion: '2010-03-31'}).subscribe(params).promise();

// Handle promise's fulfilled/rejected statessubscribePromise.then( function(data) { console.log("Subscription ARN is " + data.SubscriptionArn); }).catch( function(err) { console.error(err, err.stack); });

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

232

Page 239: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Senden von SMS-Nachrichten

node sns_subscribelambda.js

Diesen Beispielcode finden Sie hier auf GitHub.

Abmelden von einem ThemaIn diesem Beispiel verwenden Sie ein Node.js-Modul, um das Abonnement eines Amazon SNS-Themas zubeenden. Erstellen Sie ein Node.js-Modul mit dem Dateinamen sns_unsubscribe.js. Konfigurieren Siedas SDK wie zuvor gezeigt.

Erstellen Sie ein Objekt, das den SubscriptionArn-Parameter enthält, der den ARN des Abonnementsangibt, das Sie beenden möchten. Übergeben Sie die Parameter an die unsubscribe-Methode derClient-Klasse AWS.SNS.

Um die unsubscribe-Methode aufzurufen, erstellen Sie ein Promise für den Aufruf eines Amazon SNS-Service-Objekts und übergeben das Parameterobjekt. Verarbeiten Sie anschließend die response imPromise-Callback.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set regionAWS.config.update({region: 'REGION'});

// Create promise and SNS service objectvar subscribePromise = new AWS.SNS({apiVersion: '2010-03-31'}).unsubscribe({SubscriptionArn : TOPIC_SUBSCRIPTION_ARN}).promise();

// Handle promise's fulfilled/rejected statessubscribePromise.then( function(data) { console.log(data); }).catch( function(err) { console.error(err, err.stack); });

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node sns_unsubscribe.js

Diesen Beispielcode finden Sie hier auf GitHub.

Senden von SMS-Nachrichten mit Amazon SNS

Dieses Node.js-Codebeispiel zeigt:

• Abrufen und Festlegen von SMS-Messaging-Einstellungen für Amazon SNS• Überprüfen, ob eine Telefonnummer vom Empfang von SMS-Nachrichten abgemeldet wurde• Abrufen einer Liste der Telefonnummern, die vom Empfang von SMS-Nachrichten abgemeldet wurden• Senden einer SMS-Nachricht

233

Page 240: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Senden von SMS-Nachrichten

Das SzenarioSie können mit Amazon SNS Textnachrichten oder SMS-Nachrichten an SMS-fähige Geräte senden. Siekönnen eine Nachricht direkt an eine Telefonnummer senden oder Sie können eine Nachricht an mehrereTelefonnummern gleichzeitig senden, indem Sie das Thema für diese Telefonnummern abonnieren und dieNachricht an das Thema senden.

In diesem Beispiel verwenden Sie eine Reihe von Node.js-Modulen, um SMS-Textnachrichten von AmazonSNS für SMS-fähige Geräte zu veröffentlichen. Die Node.js-Module verwenden das SDK für JavaScript, umSMS-Nachrichten mithilfe dieser Methoden der Client-Klasse AWS.SNS zu veröffentlichen:

• getSMSAttributes

• setSMSAttributes

• checkIfPhoneNumberIsOptedOut

• listPhoneNumbersOptedOut

• publish

Erforderliche AufgabenZum Einrichten und Ausführen dieses Beispiels müssen Sie zunächst diese Aufgaben abschließen:

• Installieren Sie "Node.js". Weitere Informationen über die Installation von Node.js finden Sie auf derNode.js-Website.

• Erstellen Sie eine freigegebene Konfigurationsdatei mit Ihren Anmeldeinformationen. WeitereInformationen zum Bereitstellen einer JSON-Datei mit den Anmeldeinformationen finden Sie unter Ladender Anmeldeinformationen in Node.js aus der freigegebenen Anmeldeinformationsdatei (p. 33).

Abrufen von SMS-AttributenVerwenden Sie Amazon SNS, um Präferenzen für SMS-Nachrichten festzulegen – beispielsweise fürdie Optimierung der Zustellung (zu Kosten oder zur zuverlässigen Zustellung), zur Begrenzung Ihrermonatlichen Ausgaben und zum Abonnement von täglichen SMS-Nutzungsberichten. Diese Einstellungenwerden abgerufen und als SMS-Attribute für Amazon SNS festgelegt.

In diesem Beispiel verwenden Sie ein Node.js-Modul zum Abrufen der aktuellen SMS-Attribute in AmazonSNS. Erstellen Sie ein Node.js-Modul mit dem Dateinamen sns_getsmstype.js. Konfigurieren Siedas SDK wie zuvor gezeigt. Erstellen Sie ein Objekt, das die Parameter zum Abrufen von SMS-Attributenenthält, einschließlich der Namen der einzelnen Attribute, die abgerufen werden. Weitere Details zuverfügbaren SMS-Attributen finden Sie unter SetSMSAttributes im Amazon Simple Notification Service APIReference.

In diesem Beispiel wird das DefaultSMSType-Attribut abgerufen. Dieses Attribut steuert, ob SMS-Nachrichten als Promotional oder als Transactional gesendet werden. Im ersten Fall wirddie Nachrichtenzustellung im Hinblick auf die Kosten und im zweiten Fall im Hinblick auf höchsteZuverlässigkeit optimiert. Übergeben Sie die Parameter an die setTopicAttributes-Methode derClient-Klasse AWS.SNS. Um die getSMSAttributes-Methode aufzurufen, erstellen Sie ein Promise fürden Aufruf eines Amazon SNS-Service-Objekts und übergeben das Parameterobjekt. Verarbeiten Sieanschließend die response im Promise-Callback.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set regionAWS.config.update({region: 'REGION'});

// Create SMS Attribute parameter you want to get

234

Page 241: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Senden von SMS-Nachrichten

var params = { attributes: [ 'DefaultSMSType', 'ATTRIBUTE_NAME' /* more items */ ]};

// Create promise and SNS service objectvar getSMSTypePromise = new AWS.SNS({apiVersion: '2010-03-31'}).getSMSAttributes(params).promise();

// Handle promise's fulfilled/rejected statesgetSMSTypePromise.then( function(data) { console.log(data); }).catch( function(err) { console.error(err, err.stack); });

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node sns_getsmstype.js

Diesen Beispielcode finden Sie hier auf GitHub.

Festlegen von SMS-AttributenIn diesem Beispiel verwenden Sie ein Node.js-Modul zum Abrufen der aktuellen SMS-Attribute in AmazonSNS. Erstellen Sie ein Node.js-Modul mit dem Dateinamen sns_setsmstype.js. Konfigurieren Siedas SDK wie zuvor gezeigt. Erstellen Sie ein Objekt, das die Parameter zum Festlegen von SMS-Attributen enthält, einschließlich der Namen der einzelnen Attribute, die festgelegt werden, und der jeweilsfestzulegenden Werte. Weitere Details zu verfügbaren SMS-Attributen finden Sie unter SetSMSAttributesim Amazon Simple Notification Service API Reference.

In diesem Beispiel wird das DefaultSMSType-Attribut auf Transactional festgelegt. Damit wird dieNachrichtenzustellung im Hinblick auf höchste Zuverlässigkeit optimiert. Übergeben Sie die Parameter andie setTopicAttributes-Methode der Client-Klasse AWS.SNS. Um die getSMSAttributes-Methodeaufzurufen, erstellen Sie ein Promise für den Aufruf eines Amazon SNS-Service-Objekts und übergebendas Parameterobjekt. Verarbeiten Sie anschließend die response im Promise-Callback.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set regionAWS.config.update({region: 'REGION'});

// Create SMS Attribute parametersvar params = { attributes: { /* required */ 'DefaultSMSType': 'Transactional', /* highest reliability */ //'DefaultSMSType': 'Promotional' /* lowest cost */ }};

// Create promise and SNS service objectvar setSMSTypePromise = new AWS.SNS({apiVersion: '2010-03-31'}).setSMSAttributes(params).promise();

// Handle promise's fulfilled/rejected statessetSMSTypePromise.then(

235

Page 242: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Senden von SMS-Nachrichten

function(data) { console.log(data); }).catch( function(err) { console.error(err, err.stack); });

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node sns_setsmstype.js

Diesen Beispielcode finden Sie hier auf GitHub.

Überprüfen, ob für eine Telefonnummer der Empfang deaktiviertwurdeIn diesem Beispiel verwenden Sie ein Node.js-Modul, um zu überprüfen, ob für eine Telefonnummer derEmpfang von SMS-Nachrichten deaktiviert wurde. Erstellen Sie ein Node.js-Modul mit dem Dateinamensns_checkphoneoptout.js. Konfigurieren Sie das SDK wie zuvor gezeigt. Erstellen Sie ein Objekt, dasdie zu überprüfende Telefonnummer als Parameter enthält.

In diesem Beispiel wird der PhoneNumber-Parameter festgelegt, um die Telefonnummer anzugeben, dieüberprüft werden soll. Übergeben Sie das Objekt an die checkIfPhoneNumberIsOptedOut-Methodeder Client-Klasse AWS.SNS. Um die checkIfPhoneNumberIsOptedOut-Methode aufzurufen, erstellenSie ein Promise für den Aufruf eines Amazon SNS-Serviceobjekts und übergeben das Parameterobjekt.Verarbeiten Sie anschließend die response im Promise-Callback.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set regionAWS.config.update({region: 'REGION'});

// Create promise and SNS service objectvar phonenumPromise = new AWS.SNS({apiVersion: '2010-03-31'}).checkIfPhoneNumberIsOptedOut({phoneNumber: 'PHONE_NUMBER'}).promise();

// Handle promise's fulfilled/rejected statesphonenumPromise.then( function(data) { console.log("Phone Opt Out is " + data.isOptedOut); }).catch( function(err) { console.error(err, err.stack); });

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node sns_checkphoneoptout.js

Diesen Beispielcode finden Sie hier auf GitHub.

Auflisten deaktivierter TelefonnummernIn diesem Beispiel verwenden Sie ein Node.js-Modul, um eine Liste der Telefonnummern abzurufen, für dieder Empfang von SMS-Nachrichten deaktiviert wurde. Erstellen Sie ein Node.js-Modul mit dem Dateinamensns_listnumbersoptedout.js. Konfigurieren Sie das SDK wie zuvor gezeigt. Erstellen Sie ein leeresObjekt als Parameter.

236

Page 243: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Senden von SMS-Nachrichten

Übergeben Sie das Objekt an die listPhoneNumbersOptedOut-Methode der Client-Klasse AWS.SNS.Um die listPhoneNumbersOptedOut-Methode aufzurufen, erstellen Sie ein Promise für den Aufrufeines Amazon SNS-Service-Objekts und übergeben das Parameterobjekt. Verarbeiten Sie anschließenddie response im Promise-Callback.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set regionAWS.config.update({region: 'REGION'});

// Create promise and SNS service objectvar phonelistPromise = new AWS.SNS({apiVersion: '2010-03-31'}).listPhoneNumbersOptedOut({}).promise();

// Handle promise's fulfilled/rejected states phonelistPromise.then( function(data) { console.log(data); }).catch( function(err) { console.error(err, err.stack); } );

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node sns_listnumbersoptedout.js

Diesen Beispielcode finden Sie hier auf GitHub.

Veröffentlichen einer SMS-NachrichtIn diesem Beispiel verwenden Sie ein Node.js-Modul zum Senden einer SMS-Nachricht an eineTelefonnummer. Erstellen Sie ein Node.js-Modul mit dem Dateinamen sns_publishsms.js.Konfigurieren Sie das SDK wie zuvor gezeigt. Erstellen Sie ein Objekt, das die Parameter Message undPhoneNumber enthält.

Wenn Sie eine SMS-Nachricht senden, geben Sie die Telefonnummer im E.164-Format an. Die RichtlinieE.164 legt die internationale Schreibweise für Telefonnummern fest. Rufnummern im E.164-Formatbestehen aus maximal 15 Zeichen sowie einem vorangestellten Plus-Zeichen (+) und der Ländervorwahl.Eine US-Telefonnummer im E.164-Format sieht beispielsweise wie folgt aus: +1001XXX5550100.

In diesem Beispiel wird der PhoneNumber-Parameter festgelegt, um die Telefonnummer zum Senden derNachricht anzugeben. Übergeben Sie das Objekt an die publish-Methode der Client-Klasse AWS.SNS.Um die publish-Methode aufzurufen, erstellen Sie ein Promise für den Aufruf eines Amazon SNS-Serviceobjekts und übergeben das Parameterobjekt. Verarbeiten Sie anschließend die response imPromise-Callback.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set regionAWS.config.update({region: 'REGION'});

// Create publish parametersvar params = { Message: 'TEXT_MESSAGE', /* required */ PhoneNumber: 'E.164_PHONE_NUMBER',};

// Create promise and SNS service object

237

Page 244: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Amazon SQS Beispiele

var publishTextPromise = new AWS.SNS({apiVersion: '2010-03-31'}).publish(params).promise();

// Handle promise's fulfilled/rejected statespublishTextPromise.then( function(data) { console.log("MessageID is " + data.MessageId); }).catch( function(err) { console.error(err, err.stack); });

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node sns_publishsms.js

Diesen Beispielcode finden Sie hier auf GitHub.

Amazon SQS BeispieleAmazon Simple Queue Service (SQS) ist ein schneller, zuverlässiger, skalierbarer und vollständigverwalteter Warteschlangenservice. Mit Amazon SQS können Sie die Komponenten einer Cloud-Anwendung entkoppeln. Amazon SQS enthält Standardwarteschlangen mit einem hohen Durchsatz undder mindestens einmal erfolgenden Verarbeitung sowie FIFO-Warteschlangen, die die FIFO-Zustellung(First-in-First-out) und die garantierte einmalige Verarbeitung zur Verfügung stellen.

Die JavaScript-API für Amazon SQS wird über die AWS.SQS-Client-Klasse bereitgestellt. WeitereInformationen zur Verwendung der CloudWatch-Client-Klasse finden Sie unter Class: AWS.SQS in der API-Referenz.

Themen• Verwenden von Warteschlangen in Amazon SQS (p. 238)• Senden und Empfangen von Nachrichten in Amazon SQS (p. 242)• Verwalten der Zeitbeschränkung für die Sichtbarkeit in Amazon SQS (p. 244)• Aktivieren von Langabfragen in Amazon SQS (p. 246)• Verwenden von Warteschlangen für unzustellbare Nachrichten in Amazon SQS (p. 249)

Verwenden von Warteschlangen in Amazon SQS

238

Page 245: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwenden von Warteschlangen in Amazon SQS

Dieses Node.js-Codebeispiel zeigt:

• Abrufen einer Liste aller Nachrichtenwarteschlangen• Abrufen der URL für eine bestimmte Warteschlange• Erstellen und Löschen von Warteschlangen

Informationen zum BeispielIn diesem Beispiel werden mehrere Node.js-Module für die Arbeit mit Warteschlangen verwendet. DieNode.js-Module verwenden SDK für JavaScript, um Warteschlangen zu ermöglichen, zum Aufrufen derfolgenden Methoden der AWS.SQS-Client-Klasse:

• listQueues

• createQueue

• getQueueUrl

• deleteQueue

Weitere Informationen zu Amazon SQS-Nachrichten finden Sie unter Funktionsweise von Warteschlangenim Amazon Simple Queue Service-Entwicklerhandbuch.

Erforderliche AufgabenZum Einrichten und Ausführen dieses Beispiels müssen Sie zunächst diese Aufgaben abschließen:

• Installieren Sie "Node.js". Weitere Informationen über die Installation von Node.js finden Sie auf derNode.js-Website.

• Erstellen Sie eine freigegebene Konfigurationsdatei mit Ihren Anmeldeinformationen. WeitereInformationen zum Bereitstellen einer Datei mit gemeinsam genutzten Anmeldeinformationenfinden Sie unter Laden der Anmeldeinformationen in Node.js aus der freigegebenenAnmeldeinformationsdatei (p. 33).

Auflisten Ihrer WarteschlangenErstellen Sie ein Node.js-Modul mit dem Dateinamen sqs_listqueues.js. Stellen Sie sicher, dassSie das SDK, wie zuvor dargestellt, konfigurieren. Um auf Amazon SQS zuzugreifen, erstellen Sie einAWS.SQS-Serviceobjekt. Erstellen Sie ein JSON-Objekt, das die erforderlichen Parameter zum AuflistenIhrer Warteschlangen enthält. Standardmäßig handelt es sich hierbei um ein leeres Objekt. Rufen Sie dielistQueues-Methode auf, um die Liste der Warteschlangen abzurufen. Die Callback-Funktion gibt dieURLs aller Warteschlangen zurück.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create an SQS service objectvar sqs = new AWS.SQS({apiVersion: '2012-11-05'});

var params = {};

sqs.listQueues(params, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data.QueueUrls);

239

Page 246: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwenden von Warteschlangen in Amazon SQS

}});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node sqs_listqueues.js

Diesen Beispielcode finden Sie hier auf GitHub.

Erstellen einer WarteschlangeErstellen Sie ein Node.js-Modul mit dem Dateinamen sqs_createqueue.js. Stellen Sie sicher, dassSie das SDK, wie zuvor dargestellt, konfigurieren. Um auf Amazon SQS zuzugreifen, erstellen Sie einAWS.SQS-Serviceobjekt. Erstellen Sie ein JSON-Objekt, das die erforderlichen Parameter zum AuflistenIhrer Warteschlangen enthält. Diese müssen den Namen für die erstellte Warteschlange beinhalten. DieParameter können auch Attribute für die Warteschlange enthalten, wie z. B. die Anzahl der Sekunden,um die die Nachrichtenzustellung verzögert wird, oder die Anzahl der Sekunden, für die eine erhalteneNachricht aufbewahrt wird. Rufen Sie die createQueue-Methode auf. Die Callback-Funktion gibt die URLder erstellten Warteschlange zurück.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create an SQS service objectvar sqs = new AWS.SQS({apiVersion: '2012-11-05'});

var params = { QueueName: 'SQS_QUEUE_NAME', Attributes: { 'DelaySeconds': '60', 'MessageRetentionPeriod': '86400' }};

sqs.createQueue(params, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data.QueueUrl); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node sqs_createqueue.js

Diesen Beispielcode finden Sie hier auf GitHub.

Abrufen der URL für eine WarteschlangeErstellen Sie ein Node.js-Modul mit dem Dateinamen sqs_getqueueurl.js. Stellen Sie sicher, dassSie das SDK, wie zuvor dargestellt, konfigurieren. Um auf Amazon SQS zuzugreifen, erstellen Sie einAWS.SQS-Serviceobjekt. Erstellen Sie ein JSON-Objekt, das die erforderlichen Parameter zum AuflistenIhrer Warteschlange enthält. Diese müssen den Namen der Warteschlange beinhalten, deren URL Sieabrufen möchten. Rufen Sie die getQueueUrl-Methode auf. Die Callback-Funktion gibt die URL derangegebenen Warteschlange zurück.

240

Page 247: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwenden von Warteschlangen in Amazon SQS

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create an SQS service objectvar sqs = new AWS.SQS({apiVersion: '2012-11-05'});

var params = { QueueName: 'SQS_QUEUE_NAME'};

sqs.getQueueUrl(params, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data.QueueUrl); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node sqs_getqueueurl.js

Diesen Beispielcode finden Sie hier auf GitHub.

Löschen einer WarteschlangeErstellen Sie ein Node.js-Modul mit dem Dateinamen sqs_deletequeue.js. Stellen Sie sicher, dassSie das SDK, wie zuvor dargestellt, konfigurieren. Um auf Amazon SQS zuzugreifen, erstellen Sie einAWS.SQS-Serviceobjekt. Erstellen Sie ein JSON-Objekt, das die erforderlichen Parameter zum Löscheneiner Warteschlange enthält. Dieses besteht aus der URL der Warteschlange, die Sie löschen möchten.Rufen Sie die deleteQueue-Methode auf.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create an SQS service objectvar sqs = new AWS.SQS({apiVersion: '2012-11-05'});

var params = { QueueUrl: 'SQS_QUEUE_URL' };

sqs.deleteQueue(params, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node sqs_deletequeue.js

Diesen Beispielcode finden Sie hier auf GitHub.

241

Page 248: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Senden und Empfangen von Nachrichten in Amazon SQS

Senden und Empfangen von Nachrichten in AmazonSQS

Dieses Node.js-Codebeispiel zeigt:

• Senden von Nachrichten in einer Warteschlange• Empfangen von Nachrichten in einer Warteschlange• Löschen von Nachrichten in einer Warteschlange

Das SzenarioIn diesem Beispiel wird eine Reihe von Node.js-Modulen zum Senden und Empfangen von Nachrichtenverwendet. Die Node.js-Module verwenden das SDK für JavaScript zum Senden und Empfangen vonNachrichten mithilfe dieser Methoden der Client-Klasse AWS.SQS:

• sendMessage

• receiveMessage

• deleteMessage

Weitere Informationen über Amazon SQS-Nachrichten finden Sie unter Senden einer Nachricht an eineAmazon SQS-Warteschlange und Empfangen und Löschen einer Nachricht in einer Amazon SQS-Warteschlange im Amazon Simple Queue Service-Entwicklerhandbuch.

Erforderliche AufgabenZum Einrichten und Ausführen dieses Beispiels müssen Sie zunächst diese Aufgaben abschließen:

• Installieren Sie "Node.js". Weitere Informationen über die Installation von Node.js finden Sie auf derNode.js-Website.

• Erstellen Sie eine freigegebene Konfigurationsdatei mit Ihren Anmeldeinformationen. WeitereInformationen zum Bereitstellen einer Datei mit gemeinsam genutzten Anmeldeinformationenfinden Sie unter Laden der Anmeldeinformationen in Node.js aus der freigegebenenAnmeldeinformationsdatei (p. 33).

• Erstellen einer Amazon SQS-Warteschlange. Ein Beispiel für die Erstellung einer Warteschlange findenSie unter Verwenden von Warteschlangen in Amazon SQS (p. 238).

Senden einer Mitteilung an eine WarteschlangeErstellen Sie ein Node.js-Modul mit dem Dateinamen sqs_sendmessage.js. Stellen Sie sicher, dassSie das SDK, wie zuvor dargestellt, konfigurieren. Um auf Amazon SQS zuzugreifen, erstellen Sie einAWS.SQS-Serviceobjekt. Erstellen Sie ein JSON-Objekt, das die erforderlichen Parameter für Ihre Nachrichtenthält, einschließlich URL der Warteschlange, an die Sie die Nachricht senden möchten. In diesemBeispiel enthält die Nachricht Details über ein Buch auf einer Belletristik-Bestsellerliste. Diese umfassenden Titel, den (die) Autor(in) und die Anzahl der Wochen, die es auf der Liste steht.

242

Page 249: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Senden und Empfangen von Nachrichten in Amazon SQS

Rufen Sie die sendMessage-Methode auf. Die Callback-Funktion gibt eine eindeutige ID für die Nachrichtzurück.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create an SQS service objectvar sqs = new AWS.SQS({apiVersion: '2012-11-05'});

var params = { // Remove DelaySeconds parameter and value for FIFO queues DelaySeconds: 10, MessageAttributes: { "Title": { DataType: "String", StringValue: "The Whistler" }, "Author": { DataType: "String", StringValue: "John Grisham" }, "WeeksOn": { DataType: "Number", StringValue: "6" } }, MessageBody: "Information about current NY Times fiction bestseller for week of 12/11/2016.", // MessageDeduplicationId: "TheWhistler", // Required for FIFO queues // MessageGroupId: "Group1", // Required for FIFO queues QueueUrl: "SQS_QUEUE_URL"};

sqs.sendMessage(params, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data.MessageId); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node sqs_sendmessage.js

Diesen Beispielcode finden Sie hier auf GitHub.

Empfangen und Löschen von Nachrichten in einer WarteschlangeErstellen Sie ein Node.js-Modul mit dem Dateinamen sqs_receivemessage.js. Stellen Sie sicher, dassSie das SDK, wie zuvor dargestellt, konfigurieren. Um auf Amazon SQS zuzugreifen, erstellen Sie einAWS.SQS-Serviceobjekt. Erstellen Sie ein JSON-Objekt, das die erforderlichen Parameter für Ihre Nachrichtenthält, einschließlich URL der Warteschlange, von der Sie Nachrichten erhalten möchten. In diesemBeispiel geben die Parameter den Eingang aller Nachrichtenattribute sowie den Eingang von nicht mehr alszehn Nachrichten an.

Rufen Sie die receiveMessage-Methode auf. Die Callback-Funktion gibt ein Array von Message-Objekten zurück, von dem Sie ReceiptHandle für jede verwendete Nachricht abrufen können, umdiese Nachricht zu einem späteren Zeitpunkt zu löschen. Erstellen Sie ein weiteres JSON-Objekt, das die

243

Page 250: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwalten der Zeitbeschränkung

für die Sichtbarkeit in Amazon SQS

erforderlichen Parameter zum Löschen der Nachricht enthält. Dies sind die URL der Warteschlange undder ReceiptHandle-Wert. Rufen Sie die deleteMessage-Methode auf, um die erhaltene Nachricht zulöschen.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the regionAWS.config.update({region: 'REGION'});

// Create an SQS service objectvar sqs = new AWS.SQS({apiVersion: '2012-11-05'});

var queueURL = "SQS_QUEUE_URL";

var params = { AttributeNames: [ "SentTimestamp" ], MaxNumberOfMessages: 10, MessageAttributeNames: [ "All" ], QueueUrl: queueURL, VisibilityTimeout: 20, WaitTimeSeconds: 0};

sqs.receiveMessage(params, function(err, data) { if (err) { console.log("Receive Error", err); } else if (data.Messages) { var deleteParams = { QueueUrl: queueURL, ReceiptHandle: data.Messages[0].ReceiptHandle }; sqs.deleteMessage(deleteParams, function(err, data) { if (err) { console.log("Delete Error", err); } else { console.log("Message Deleted", data); } }); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node sqs_receivemessage.js

Diesen Beispielcode finden Sie hier auf GitHub.

Verwalten der Zeitbeschränkung für die Sichtbarkeit inAmazon SQS

244

Page 251: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwalten der Zeitbeschränkung

für die Sichtbarkeit in Amazon SQS

Dieses Node.js-Codebeispiel zeigt:

• Angeben des Zeitintervalls, in dem Nachrichten, die von einer Warteschlange erhalten wurden, nichtsichtbar sind

Das SzenarioIn diesem Beispiel wird ein Node.js-Modul zum Verwalten der Zeitbeschränkung für die Sichtbarkeitverwendet. Das Node.js-Modul nutzt das SDK für JavaScript zur Verwaltung der Zeitbeschränkung für dieSichtbarkeit mithilfe dieser Methode der Client-Klasse AWS.SQS:

• changeMessageVisibility

Weitere Informationen zur Amazon SQS-Zeitbeschränkung für die Sichtbarkeit finden Sie unterZeitbeschränkung für die Sichtbarkeit im Amazon Simple Queue Service-Entwicklerhandbuch.

Erforderliche AufgabenZum Einrichten und Ausführen dieses Beispiels müssen Sie zunächst diese Aufgaben abschließen:

• Installieren Sie "Node.js". Weitere Informationen über die Installation von Node.js finden Sie auf derNode.js-Website.

• Erstellen Sie eine freigegebene Konfigurationsdatei mit Ihren Anmeldeinformationen. WeitereInformationen zum Bereitstellen einer Datei mit gemeinsam genutzten Anmeldeinformationenfinden Sie unter Laden der Anmeldeinformationen in Node.js aus der freigegebenenAnmeldeinformationsdatei (p. 33).

• Erstellen einer Amazon SQS-Warteschlange. Ein Beispiel für die Erstellung einer Warteschlange findenSie unter Verwenden von Warteschlangen in Amazon SQS (p. 238).

• Senden einer Nachricht an die Warteschlange. Ein Beispiel für das Versenden von Nachrichten an eineWarteschlange finden Sie unter Senden und Empfangen von Nachrichten in Amazon SQS (p. 242).

Ändern der Zeitbeschränkung für die SichtbarkeitErstellen Sie ein Node.js-Modul mit dem Dateinamen sqs_changingvisibility.js. Stellen Siesicher, dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Um auf Amazon Simple Queue Servicezuzugreifen, erstellen Sie ein AWS.SQS-Serviceobjekt. Empfangen einer Mitteilung aus der Warteschlange

Nachdem Sie die Nachricht aus der Warteschlange erhalten haben, erstellen Sie ein JSON-Objekt, dasdie erforderlichen Parameter für das Einrichten der Zeitbeschränkung enthält. Dazu gehören die URL derWarteschlange mit der Nachricht, der bei Erhalt der Nachricht zurückgegebene ReceiptHandle-Wertsowie die neue Zeitbeschränkung in Sekunden. Rufen Sie die changeMessageVisibility-Methode auf.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk')// Set the region to us-west-2AWS.config.update({ region: 'us-west-2' })

// Create the SQS service objectvar sqs = new AWS.SQS({ apiVersion: '2012-11-05' })

var queueURL = 'https://sqs.REGION.amazonaws.com/ACCOUNT-ID/QUEUE-NAME'

var params = { AttributeNames: ['SentTimestamp'], MaxNumberOfMessages: 1,

245

Page 252: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Aktivieren von Langabfragen in Amazon SQS

MessageAttributeNames: ['All'], QueueUrl: queueURL}

sqs.receiveMessage(params, function (err, data) { if (err) { console.log('Receive Error', err) } else { // Make sure we have a message if (data.Messages != null) { var visibilityParams = { QueueUrl: queueURL, ReceiptHandle: data.Messages[0].ReceiptHandle, VisibilityTimeout: 20 // 20 second timeout } sqs.changeMessageVisibility(visibilityParams, function (err, data) { if (err) { console.log('Delete Error', err) } else { console.log('Timeout Changed', data) } }) } else { console.log('No messages to change') } }})

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node sqs_changingvisibility.js

Diesen Beispielcode finden Sie hier auf GitHub.

Aktivieren von Langabfragen in Amazon SQS

Dieses Node.js-Codebeispiel zeigt:

• Aktivieren von Langabfragen für eine neuerstellte Warteschlange• Aktivieren von Langabfragen für eine vorhandene Warteschlange• Aktivieren von Langabfragen bei Nachrichtenempfang

Das SzenarioDurch Langabfragen lässt sich die Anzahl an leeren Antworten reduzieren, da Amazon SQS einebestimmte Zeit wartet, bis eine Nachricht in der Warteschlange vorhanden ist, bevor eine Antwort gesendetwird. Durch Langabfragen lassen sich außerdem falsch leere Antworten vermeiden, indem die Anfrage stattan eine Auswahl an Servern an alle Server gesendet wird. Zum Aktivieren von Langabfragen müssen Siefür empfangene Nachrichten eine Wartezeit ungleich Null angeben. Dies können Sie durch Festlegen desReceiveMessageWaitTimeSeconds-Parameters einer Warteschlange oder des WaitTimeSeconds-Parameters für eine Nachricht bei deren Empfang vornehmen.

246

Page 253: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Aktivieren von Langabfragen in Amazon SQS

In diesem Beispiel wird eine Reihe von Node.js-Modulen zum Aktivieren von Langabfragen verwendet.Die Node.js-Module verwenden das SDK für JavaScript zum Aktivieren von Langabfragen mithilfe dieserMethoden der Client-Klasse AWS.SQS:

• setQueueAttributes

• receiveMessage

• createQueue

Weitere Informationen zu Amazon SQS-Langabfragen finden Sie unter Amazon SQS-Langabfrage imAmazon Simple Queue Service-Entwicklerhandbuch.

Erforderliche AufgabenZum Einrichten und Ausführen dieses Beispiels müssen Sie zunächst diese Aufgaben abschließen:

• Installieren Sie "Node.js". Weitere Informationen über die Installation von Node.js finden Sie auf derNode.js-Website.

• Erstellen Sie eine freigegebene Konfigurationsdatei mit Ihren Anmeldeinformationen. WeitereInformationen zum Bereitstellen einer Datei mit gemeinsam genutzten Anmeldeinformationenfinden Sie unter Laden der Anmeldeinformationen in Node.js aus der freigegebenenAnmeldeinformationsdatei (p. 33).

Aktivieren der Langabfrage beim Erstellen einer WarteschlangeErstellen Sie ein Node.js-Modul mit dem Dateinamen sqs_longpolling_createqueue.js. StellenSie sicher, dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Um auf Amazon SQS zuzugreifen,erstellen Sie ein AWS.SQS-Serviceobjekt. Erstellen Sie ein JSON-Objekt, das die erforderlichenParameter zum Erstellen einer Warteschlange enthält, einschließlich eines Wertes ungleich Null fürden ReceiveMessageWaitTimeSeconds-Parameter. Rufen Sie die createQueue-Methode auf. DieLangabfrage ist nun für die Warteschlange aktiviert.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create the SQS service objectvar sqs = new AWS.SQS({apiVersion: '2012-11-05'});

var params = { QueueName: 'SQS_QUEUE_NAME', Attributes: { 'ReceiveMessageWaitTimeSeconds': '20', }};

sqs.createQueue(params, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data.QueueUrl); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node sqs_longpolling_createqueue.js

247

Page 254: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Aktivieren von Langabfragen in Amazon SQS

Diesen Beispielcode finden Sie hier auf GitHub.

Aktivieren der Langabfrage für eine vorhandene WarteschlangeErstellen Sie ein Node.js-Modul mit dem Dateinamen sqs_longpolling_existingqueue.js. StellenSie sicher, dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Um auf Amazon Simple QueueService zuzugreifen, erstellen Sie ein AWS.SQS-Serviceobjekt. Erstellen Sie ein JSON-Objekt, das dieerforderlichen Parameter zum Festlegen der Warteschlangenattribute enthält. Dazu gehören ein Wertungleich Null für die ReceiveMessageWaitTimeSeconds-Eigenschaft und die URL der Warteschlange.Rufen Sie die setQueueAttributes-Methode auf. Die Langabfrage ist nun für die Warteschlangeaktiviert.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create the SQS service objectvar sqs = new AWS.SQS({apiVersion: '2012-11-05'});

var params = { Attributes: { "ReceiveMessageWaitTimeSeconds": "20", }, QueueUrl: "SQS_QUEUE_URL"};

sqs.setQueueAttributes(params, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node sqs_longpolling_existingqueue.js

Diesen Beispielcode finden Sie hier auf GitHub.

Aktivieren von Langabfragen beim NachrichteneingangErstellen Sie ein Node.js-Modul mit dem Dateinamen sqs_longpolling_receivemessage.js.Stellen Sie sicher, dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Um auf Amazon SimpleQueue Service zuzugreifen, erstellen Sie ein AWS.SQS-Serviceobjekt. Erstellen Sie ein JSON-Objekt,das die erforderlichen Parameter zum Empfangen von Nachrichten enthält. Dazu gehören ein Wertungleich Null für die WaitTimeSeconds-Eigenschaft und die URL der Warteschlange. Rufen Sie diereceiveMessage-Methode auf.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create the SQS service objectvar sqs = new AWS.SQS({apiVersion: '2012-11-05'});

var queueURL = "SQS_QUEUE_URL";

248

Page 255: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwenden von Warteschlangen für

unzustellbare Nachrichten in Amazon SQS

var params = { AttributeNames: [ "SentTimestamp" ], MaxNumberOfMessages: 1, MessageAttributeNames: [ "All" ], QueueUrl: queueURL, WaitTimeSeconds: 20};

sqs.receiveMessage(params, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data); }});

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node sqs_longpolling_receivemessage.js

Diesen Beispielcode finden Sie hier auf GitHub.

Verwenden von Warteschlangen für unzustellbareNachrichten in Amazon SQS

Dieses Node.js-Codebeispiel zeigt:

• Verwenden einer Warteschlange, um Nachrichten von anderen Warteschlangen zu empfangen und zuhalten, die die Warteschlangen nicht verarbeiten können

Das SzenarioBei einer Warteschlange für unzustellbare Nachrichten handelt es sich um eine Warteschlange, andie andere (Quell-)Warteschlangen Nachrichten senden können, die nicht erfolgreich verarbeitetwerden konnten. Sie können diese Nachrichten in der Warteschlange für unzustellbare Nachrichtensammeln und isolieren, um zu bestimmen, warum die Verarbeitung fehlgeschlagen ist. Sie müssenjede Quellwarteschlange, die Nachrichten an eine Warteschlange für unzustellbare Nachrichtensendet, individuell konfigurieren. Eine Warteschlange für unzustellbare Nachrichten kann von mehrerenWarteschlangen verwendet werden.

In diesem Beispiel wird ein Node.js-Modul verwendet, um Nachrichten an eine Warteschlange fürunzustellbare Nachrichten weiterzuleiten. Das Node.js-Modul nutzt das SDK für JavaScript zum Verwendenvon Warteschlangen für unzustellbare Nachrichten mithilfe dieser Methode der Client-Klasse AWS.SQS:

• setQueueAttributes

249

Page 256: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwenden von Warteschlangen für

unzustellbare Nachrichten in Amazon SQS

Weitere Informationen zu Amazon SQS-Warteschlangen für unzustellbare Nachrichten finden Sie unterVerwenden von Amazon SQS-Warteschlangen für unzustellbare Nachrichten im Amazon Simple QueueService-Entwicklerhandbuch.

Erforderliche AufgabenZum Einrichten und Ausführen dieses Beispiels müssen Sie zunächst diese Aufgaben abschließen:

• Installieren Sie "Node.js". Weitere Informationen über die Installation von Node.js finden Sie auf derNode.js-Website.

• Erstellen Sie eine freigegebene Konfigurationsdatei mit Ihren Anmeldeinformationen. WeitereInformationen zum Bereitstellen einer Datei mit gemeinsam genutzten Anmeldeinformationenfinden Sie unter Laden der Anmeldeinformationen in Node.js aus der freigegebenenAnmeldeinformationsdatei (p. 33).

• Erstellen Sie eine Amazon SQS-Warteschlange, die als Warteschlange für unzustellbare Nachrichtendient. Ein Beispiel für die Erstellung einer Warteschlange finden Sie unter Verwenden vonWarteschlangen in Amazon SQS (p. 238).

Konfigurieren von QuellwarteschlangenNachdem Sie eine Warteschlange für unzustellbare Nachrichten erstellt haben, müssen Sie dieanderen Warteschlangen konfigurieren, damit diese unverarbeiteten Nachrichten an die Warteschlangefür unzustellbare Nachrichten weiterleiten. Geben Sie hierfür eine Redrive-Richtlinie an, die die alsWarteschlange für unzustellbare Nachrichten zu verwendende Warteschlange identifiziert und legen Sie diemaximale Anzahl der Empfangsversuche für einzelne Nachrichten fest, bevor sie an die Warteschlange fürunzustellbare Nachrichten weitergeleitet werden.

Erstellen Sie ein Node.js-Modul mit dem Dateinamen sqs_deadletterqueue.js. Stellen Sie sicher,dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Um auf Amazon SQS zuzugreifen, erstellenSie ein AWS.SQS-Serviceobjekt. Erstellen Sie ein JSON-Objekt, das die erforderlichen Parameterzum Aktualisieren von Warteschlangenattributen enthält, einschließlich des RedrivePolicy-Parameters, der sowohl den ARN der Warteschlange für unzustellbare Nachrichten als auch den Wert vonmaxReceiveCount angibt. Geben Sie auch die URL der Quellwarteschlange an, die Sie konfigurierenmöchten. Rufen Sie die setQueueAttributes-Methode auf.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Set the region AWS.config.update({region: 'REGION'});

// Create the SQS service objectvar sqs = new AWS.SQS({apiVersion: '2012-11-05'});

var params = { Attributes: { "RedrivePolicy": "{\"deadLetterTargetArn\":\"DEAD_LETTER_QUEUE_ARN\",\"maxReceiveCount\":\"10\"}", }, QueueUrl: "SOURCE_QUEUE_URL"};

sqs.setQueueAttributes(params, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data); }});

250

Page 257: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Verwenden von Warteschlangen für

unzustellbare Nachrichten in Amazon SQS

Um das Beispiel auszuführen, geben Sie Folgendes in der Befehlszeile ein.

node sqs_deadletterqueue.js

Diesen Beispielcode finden Sie hier auf GitHub.

251

Page 258: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Tutorial: Einrichten von Node.jsauf einer Amazon EC2-Instance

TutorialsDie folgenden Tutorials veranschaulichen, wie Sie verschiedene Aufgaben im Zusammenhang mit demAWS SDK für JavaScript durchführen.

Themen• Tutorial: Einrichten von Node.js auf einer Amazon EC2-Instance (p. 252)• Tutorial: Erstellen und Verwenden von Lambda-Funktionen (p. 253)

Tutorial: Einrichten von Node.js auf einer AmazonEC2-Instance

Ein gängiges Szenario für die Verwendung von Node.js mit dem SDK für JavaScript ist das Einrichten undAusführen einer Node.js-Webanwendung in einer Amazon Elastic Compute Cloud (Amazon EC2)-Instance.In diesem Tutorial erstellen Sie eine Linux-Instance, stellen eine Verbindung zur Instance über SSH herund installieren anschließend Node.js, um es auf dieser Instance auszuführen.

VoraussetzungenIn diesem Tutorial wird davon ausgegangen, dass Sie bereits eine Linux-Instance mit einem öffentlichenDNS-Namen gestartet haben, die über das Internet erreichbar ist und mit der Sie eine Verbindung überSSH herstellen können. Weitere Informationen finden Sie unter Schritt 1: Starten einer Instance im AmazonEC2-Benutzerhandbuch für Linux-Instances.

Außerdem müssen Sie Ihre Sicherheitsgruppe so konfiguriert haben, dass Verbindungen über SSH (Port22), HTTP (Port 80) und HTTPS (Port 443) erlaubt sind. Weitere Informationen zu diesen Voraussetzungenfinden Sie unter Einrichten von Amazon EC2 im Amazon EC2-Benutzerhandbuch für Linux-Instances.

VerfahrenMithilfe des folgenden Verfahrens können Sie Node.js auf einer Amazon Linux-Instance installieren. Siekönnen diesen Server zum Hosten einer Node.js-Webanwendung verwenden.

So richten Sie Node.js auf Ihrer Linux-Instance ein

1. Stellen Sie als ec2-user eine Verbindung mit Ihrer Linux-Instance über SSH her.2. Installieren Sie den Node-Versionsmanager (nvm). Geben Sie dazu den folgenden Befehl in die

Befehlszeile ein.

Warning

AWS hat keine Kontrolle über den folgenden Code. Bevor Sie ihn ausführen, überprüfen Sieunbedingt dessen Authentizität und Integrität. Weitere Informationen zu diesem Code findenSie im GitHub-Repository nvm.

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash

252

Page 259: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Erstellen eines Amazon Machine Image (AMI)

Wir verwenden nvm zum Installieren von Node.js, da nvm mehrere Versionen von Node.js installierenkann und die Möglichkeit bietet, zwischen diesen zu wechseln.

3. Aktivieren Sie nvm. Geben Sie dazu folgenden Befehl in die Befehlszeile ein.

. ~/.nvm/nvm.sh

4. Verwenden Sie nvm, um die neueste Version von Node.js zu installieren, indem Sie Folgendes in dieBefehlszeile eingeben.

nvm install node

Beim Installieren von Node.js wird auch der Node Package Manager (npm) installiert, sodass Sie beiBedarf zusätzliche Module installieren können.

5. Testen Sie, ob Node.js installiert ist und ordnungsgemäß ausgeführt wird. Geben Sie dazu denfolgenden Befehl in die Befehlszeile ein.

node -e "console.log('Running Node.js ' + process.version)"

Dadurch erscheint folgende Meldung, in der die ausgeführte Node.js-Version anzeigt wird.

Running Node.js VERSION

Note

Die Knoteninstallation gilt nur für die aktuelle EC2-Sitzung. Sobald die EC2-Instance verschwindet,müssen Sie den Knoten erneut installieren. Die Alternative besteht darin, ein AMI der EC2-Instance zu erstellen, sobald Sie die Konfiguration haben, die Sie beibehalten möchten, wie imfolgenden Abschnitt beschrieben.

Erstellen eines Amazon Machine Image (AMI)Nachdem Sie Node.js auf einer Amazon EC2-Instance installiert haben, können Sie ein Amazon MachineImage (AMI) von der Instance erstellen. Ein AMI vereinfacht die Bereitstellung mehrerer Amazon EC2-Instances mit derselben Node.js-Installation. Weitere Informationen zum Erstellen eines AMI von einervorhandenen Instance finden Sie unter Erstellen eines Amazon EBS-gestützten Linux-AMI im AmazonEC2-Benutzerhandbuch für Linux-Instances.

Verwandte RessourcenWeitere Informationen über die in diesem Thema verwendete(n) Befehle und Software finden Sie auf denfolgenden Webseiten:

• Node-Versionsmanager (nvm): nvm-Repository auf GitHub• Node Packet Manager (npm): npm Website

Tutorial: Erstellen und Verwenden von Lambda-Funktionen

In diesem Kurs lernen Sie Folgendes:

253

Page 260: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Das Szenario

• Erstellen von AWS Lambda-Funktionen in Node.js und Aufrufen dieser Funktionen über in einemWebbrowser ausgeführtes JavaScript.

• Aufrufen eines anderen Services innerhalb einer Lambda-Funktion und Verarbeiten der asynchronenAntworten, bevor diese zum Browser-Skript weitergeleitet werden

• Verwenden von Node.js-Skripts zum Erstellen der von der Lambda-Funktion benötigten Ressourcen

Das SzenarioIn diesem Beispiel ruft ein simuliertes browserbasiertes Spielautomatenspiel eine Lambda-Funktion auf, dieZufallsergebnisse für jeden Hebelzug generiert. Diese Ergebnisse werden als die Dateinamen der Bilderzurückgegeben, die dem Benutzer angezeigt werden sollen. Die Bilder werden in einem Amazon S3-Bucketgespeichert, der als statischer Webhost für die HTML-, CSS- und anderen Komponenten konfiguriert ist,um die Anwendungsumgebung darzustellen.

Dieses Diagramm zeigt die meisten Elemente in dieser Anwendung und ihre Beziehung zueinander.Versionen dieses Diagramm werden im gesamten Tutorial gezeigt, um den Fokus der einzelnen Aufgabenzu veranschaulichen.

VoraussetzungenSie müssen die folgenden Aufgaben ausführen, bevor Sie mit dem Tutorial beginnen können:

• Installieren Sie Node.js auf Ihrem Computer, um verschiedene Skripts ausführen, die bei der Einrichtungdes Amazon S3-Buckets und der Amazon DynamoDB-Tabelle helfen, und erstellen und konfigurierenSie die Lambda-Funktion. Die Lambda-Funktion selbst wird in der AWS Lambda-Node.js-Umgebungausgeführt. Weitere Informationen zum Installieren von Node.js finden Sie unter www.nodejs.org.

• Installieren Sie das AWS SDK für JavaScript auf Ihrem Computer, um die Setup-Skripts auszuführen.Weitere Informationen zum Installieren des AWS SDK für JavaScript für Node.js finden Sie unterInstallieren des SDK für JavaScript (p. 17).

Für dieses Tutorial benötigen Sie ungefähr 30 Minuten.

AnleitungsschritteZum Erstellen dieser Anwendung benötigen Sie Ressourcen von mehreren Services, die sowohl im Codedes Browser-Skripts als auch im Node.js-Code der Lambda-Funktion zusammengefügt und konfiguriertwerden müssen.

254

Page 261: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Erstellen eines Amazon S3-Buckets,

der als statische Website konfiguriert ist

So erstellen Sie die Tutorial-Anwendung und die von ihr verwendete Lambda-Funktion

1. Erstellen Sie ein Arbeitsverzeichnis für dieses Tutorial auf Ihrem Computer.

Unter Linux oder Mac verwenden wir ~/MyLambdaApp; unter Windows verwenden wir C:\MyLambdaApp. Von nun an nennen wir es einfach MyLambdaApp.

2. Laden Sie die Datei slotassets.zip vom Codebeispielarchiv auf GitHub herunter. Dieses Archiventhält die Browserkomponenten, die von der Anwendung verwendet werden, den Node.js-Code, derin der Lambda-Funktion verwendet wird, und mehrere Setup-Skripts. In diesem Tutorial ändern Sie dieindex.html-Datei und laden alle Browserkomponentendateien in einen Amazon S3-Bucket hoch,den Sie für diese Anwendung bereitstellen. Beim Erstellen der Lambda-Funktion ändern Sie auch denNode.js-Code in der Datei slotpull.js, bevor sie in den Amazon S3-Bucket hochgeladen wird.

Entpacken Sie den Inhalt von slotassets.zip als slotassets-Verzeichnis in MyLambdaApp. Dasslotassets-Verzeichnis sollte die 30 Dateien enthalten.

3. Erstellen Sie eine JSON-Datei mit Ihren Anmeldeinformationen in Ihrem Arbeitsverzeichnis. DieseDatei wird von den Setup-Skripts verwendet, um ihre AWS-Anforderung zu authentifizieren. Detailsdazu finden Sie unter Laden der Anmeldeinformationen in Node.js aus einer JSON-Datei (p. 35).

4. Erstellen Sie einen Amazon S3-Bucket, der als statische Website konfiguriert ist (p. 255).5. Bereiten Sie das Browser-Skript vor (p. 257). Speichern Sie die bearbeitete Kopie der index.html

für den Upload auf Amazon S3.6. Erstellen Sie eine Lambda-Ausführungsrolle in IAM (p. 258).7. Erstellen und füllen Sie eine Amazon DynamoDB-Tabelle (p. 260).8. Erstellen Sie die Lambda-Funktion (p. 264).9. Führen Sie die Lambda-Funktion aus (p. 266).

Erstellen eines Amazon S3-Buckets, der als statischeWebsite konfiguriert istIn dieser Aufgabe erstellen Sie den Amazon S3-Bucket, der von der Anwendung verwendet wird, undbereiten ihn vor.

Für diese Anwendung müssen Sie als erstes einen Amazon S3-Bucket zum Speichern allerBrowserkomponenten erstellen. Dies sind die HTML-Datei, alle Grafikdateien und die CSS-Datei.Der Bucket ist als statische Website konfiguriert, damit er die Anwendung auch über die Bucket-URLunterstützt.

255

Page 262: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Erstellen eines Amazon S3-Buckets,

der als statische Website konfiguriert ist

Das slotassets-Verzeichnis enthält das Node.js-Skript s3-bucket-setup.js, das den Amazon S3-Bucket erstellt und die Website-Konfiguration festlegt.

So erstellen und konfigurieren Sie den Amazon S3-Bucket, den die Tutorial-Anwendung verwendet

• Geben Sie in der Befehlszeile den folgenden Befehl ein, wobei BUCKET_NAME der Name für denBucket ist:

node s3-bucket-setup.js BUCKET_NAME

Der Bucket-Name muss global eindeutig sein. Wenn der Befehl erfolgreich ist, zeigt das Skript die URLdes neuen Buckets an. Notieren Sie sich diese URL, um sie später zu verwenden.

Setup-SkriptDas Setup-Skript führt den folgenden Code aus. Es nimmt das Befehlszeilenargument entgegen, dasübergeben wird, und verwendet es zum Angeben des Bucket-Namen und des Parameters, der den Bucketöffentlich lesbar macht. Es richtet anschließend die Parameter ein, mit denen der Bucket als statischerWebsite-Host fungieren kann.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Load credentials and set Region from JSON fileAWS.config.loadFromPath('./config.json');

// Create S3 service objects3 = new AWS.S3({apiVersion: '2006-03-01'});

// Create params JSON for S3.createBucketvar bucketParams = { Bucket : process.argv[2], ACL : 'public-read'};

// Create params JSON for S3.setBucketWebsitevar staticHostParams = { Bucket: process.argv[2], WebsiteConfiguration: { ErrorDocument: { Key: 'error.html' }, IndexDocument: { Suffix: 'index.html' }, }};

// Call S3 to create the buckets3.createBucket(bucketParams, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Bucket URL is ", data.Location); // Set the new policy on the newly created bucket s3.putBucketWebsite(staticHostParams, function(err, data) { if (err) { // Display error message console.log("Error", err); } else { // Update the displayed policy for the selected bucket console.log("Success", data); }

256

Page 263: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Vorbereiten des Browser-Skripts

}); }});

Klicken Sie auf Weiter, um mit dem Tutorial fortzufahren.

Vorbereiten des Browser-SkriptsDieses Thema ist Teil einer größeren Anleitung zur Verwendung des AWS SDK für JavaScript mitAWS Lambda-Funktionen. Um am Anfang des Tutorials zu beginnen, lesen Sie Tutorial: Erstellen undVerwenden von Lambda-Funktionen (p. 253).

In diesem Schritt legen Sie den Fokus auf die Erstellung eines Amazon Cognito-Identitäten-Pools, der zurAuthentifizierung Ihres Browser-Skriptcodes verwendet wird, und bearbeiten anschließend das Browser-Skript entsprechend.

Vorbereiten eines Amazon Cognito-Identitäten-PoolsDer JavaScript-Code im Browser-Skript benötigt eine Authentifizierung für den Zugriff auf AWS-Services.Innerhalb von Webseiten verwenden Sie in der Regel Amazon Cognito-Identität, um diese Authentifizierungdurchzuführen. Erstellen Sie zuerst einen Amazon Cognito-Identitäten-Pool.

So erstellen und bereiten Sie einen Amazon Cognito-Identitäten-Pool für das Browser-Skript vor

1. Öffnen Sie die Amazon Cognito-Konsole, wählen Sie Manage Federated Identities (Verbundidentitätenverwalten) und anschließend Create new identity pool (Neuen Identitäten-Pool erstellen) aus.

2. Geben Sie einen Namen für Ihren Identitäten-Pool ein, wählen Sie enable access to unauthenticatedidentities (Zugriff für nicht authentifizierte Identitäten aktivieren) und dann Create Pool (Pool erstellen)aus.

3. Wählen Sie View Details (Details anzeigen) aus, um Details zu den authentifizierten und nichtauthentifizierten IAM-Rollen anzuzeigen, die für diesen Identitäten-Pool erstellt wurden.

4. In der Übersicht für die nicht authentifizierte Rolle wählen Sie View Policy Document(Richtliniendokument anzeigen) aus, um die aktuelle Rollenrichtlinie anzuzeigen.

5. Wählen Sie Edit (Bearbeiten) aus, um die Rollenrichtlinie zu ändern, und klicken Sie dann auf Ok.6. Bearbeiten Sie im Textfeld die Richtlinie zum Einfügen dieser "lambda:InvokeFunction"-Aktion,

sodass die vollständige Richtlinie folgendermaßen aussieht.

{

257

Page 264: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Erstellen einer Lambda-Ausführungsrolle in IAM

"Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:InvokeFunction", "mobileanalytics:PutEvents", "cognito-sync:*" ], "Resource": [ "*" ] } ]}

7. Wählen Sie Allow.8. Wählen Sie Sample Code (Beispielcode) im Seitenmenü aus. Notieren Sie sich die Identitäten-Pool-ID,

die in rotem Text in der Konsole angezeigt wird.

Bearbeiten des Browser-SkriptsAnschließend aktualisieren Sie das Browser-Skript zum Einschließen der Amazon Cognito-Identitäten-Pool-ID, die für diese Anwendung erstellt wurde.

So bereiten Sie das Browser-Skript in der Webseite vor

1. Öffnen Sie index.html im MyLambdaApp-Ordner in einem Texteditor.2. Suchen Sie diese Codezeile im Browser-Skript.

AWS.config.credentials = new AWS.CognitoIdentityCredentials({IdentityPoolId:'IDENTITY_POOL_ID'});

3. Ersetzen Sie IDENTITY_POOL_ID durch die Identitäten-Pool-ID, die Sie zuvor erhalten haben.4. Speichern index.html.

Klicken Sie auf Weiter, um mit dem Tutorial fortzufahren.

Erstellen einer Lambda-Ausführungsrolle in IAMDieses Thema ist Teil einer größeren Anleitung zur Verwendung des AWS SDK für JavaScript mitAWS Lambda-Funktionen. Um am Anfang des Tutorials zu beginnen, lesen Sie Tutorial: Erstellen undVerwenden von Lambda-Funktionen (p. 253).

In dieser Aufgabe liegt der Schwerpunkt auf dem Erstellen der IAM-Rolle, die von der Anwendungverwendet wird, um die Lambda-Funktion auszuführen.

258

Page 265: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Erstellen einer Lambda-Ausführungsrolle in IAM

Eine Lambda-Funktion erfordert eine in IAM erstellte Ausführungsrolle, die die Funktion mit denerforderlichen Berechtigungen für die Ausführung bereitstellt. Weitere Informationen über die Lambda-Ausführungsrolle finden Sie unter Verwalten von Berechtigungen: Verwenden einer IAM-Rolle(Ausführungsrolle) im AWS Lambda Developer Guide.

So erstellen Sie eine Lambda-Ausführungsrolle in IAM

1. Öffnen Sie lambda-role-setup.js im slotassets-Verzeichnis in einem Texteditor.2. Suchen Sie diese Codezeile.

RoleName: "ROLE"

Ersetzen Sie ROLLE mit einem anderen Namen.3. Speichern Sie Ihre Änderungen und schließen Sie die Datei.4. Geben Sie den folgenden Befehl in die Befehlszeile ein.

node lambda-role-setup.js

5. Notieren Sie sich den ARN, der vom Skript zurückgegeben wird. Sie benötigen diesen Wert, um dieLambda-Funktion zu erstellen.

Setup-Skript-CodeDer folgende Code ist das Setup-Skript, das die Lambda-Ausführungsrolle erstellt. Das Setup-Skript erstelltdas JSON, das die Vertrauensstellung definiert, die für eine Lambda-Ausführungsrolle erforderlich ist.Darüber hinaus erstellt es die JSON-Parameter für das Anfügen der von AWSLambdaRole verwaltetenRichtlinie. Anschließend weist es die Zeichenfolgenversion des JSONs den Parametern für diecreateRole-Methode des IAM-Serviceobjekts zu.

Die createRole-Methode führt automatisch eine URL-Codierung des JSONs zum Erstellen derAusführungsrolle durch. Wenn die neue Rolle erfolgreich erstellt wurde, zeigt das Skript den ARN an.Anschließend ruft das Skript die attachRolePolicy-Methode des IAM-Serviceobjekts auf, um dieverwaltete Richtlinie anzufügen. Wenn die Richtlinie erfolgreich zugewiesen wurde, zeigt das Skript eineBestätigungsmeldung an.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Load credentials and set Region from JSON fileAWS.config.loadFromPath('./config.json');

// Create the IAM service object

259

Page 266: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Erstellen und Füllen einer DynamoDB-Tabelle

var iam = new AWS.IAM({apiVersion: '2010-05-08'});

var myPolicy = { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ]};

var createParams = { AssumeRolePolicyDocument: JSON.stringify(myPolicy), RoleName: "ROLE"};

var policyParams = { PolicyArn: "arn:aws:iam::policy/service-role/AWSLambdaRole", RoleName: "ROLE"};

iam.createRole(createParams, function(err, data) { if (err) { console.log(err, err.stack); // an error occurred } else { console.log("Role ARN is", data.Role.Arn); // successful response iam.attachRolePolicy(policyParams , function(err, data) { if (err) { console.log(err, err.stack); } else { console.log("AWSLambdaRole Policy attached"); } }); }});

Klicken Sie auf Weiter, um mit dem Tutorial fortzufahren.

Erstellen und Füllen einer DynamoDB-TabelleIn dieser Aufgabe erstellen und befüllen Sie die von der Anwendung verwendete DynamoDB-Tabelle.

260

Page 267: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Erstellen und Füllen einer DynamoDB-Tabelle

Die Lambda-Funktion generiert drei zufällige Zahlen und verwendet dann diese Zahlen als Schlüsselzum Nachschlagen von Dateinamen, die in einer Amazon DynamoDB-Tabelle gespeichert wurden. In derslotassets.zip-Archivdatei befinden sich zwei Node.js-Skripts namens ddb-table-create.js undddb-table-populate.js. Gemeinsam erstellen diese Dateien die DynamoDB-Tabelle und füllen siemit den Namen der Bilddateien im Amazon S3-Bucket. Die Lambda-Funktion bietet exklusiv Zugriff auf dieTabelle. Um diesen Teil der Anwendung abzuschließen, müssen Sie Folgendes durchführen:

• Bearbeiten Sie den Node.js-Code, der zum Erstellen der DynamoDB-Tabelle verwendet wird.• Führen Sie das Setup-Skript aus, das die DynamoDB-Tabelle erstellt.• Führen Sie das Setup-Skript aus, das die DynamoDB-Tabelle mit den Daten füllt, die die Anwendung

erwartet und benötigt.

So bearbeiten Sie das Node.js-Skript, das die DynamoDB-Tabelle für die Anwendung aus demTutorial erstellt

1. Öffnen Sie ddb-table-create.js im slotassets-Verzeichnis in einem Texteditor.2. Suchen Sie diese Zeile im Skript.

TableName: "TABLE_NAME"

Ändern Sie TABLE_NAME in einen von Ihnen ausgewählten Namen. Notieren Sie sich denTabellennamen.

3. Speichern Sie die Datei und schließen Sie sie.

So führen Sie das Node.js-Skript aus, das die DynamoDB-Tabelle erstellt

• Geben Sie den folgenden Befehl in die Befehlszeile ein.

node ddb-table-create.js

Skript zur Erstellung von TabellenDas Setup-Skript ddb-table-create.js führt den folgenden Code aus. Es erstellt die Parameter, diedas JSON benötigt, um die Tabelle zu erstellen. Dies beinhaltet das Festlegen des Tabellennamens,Definieren des Sortierschlüssels für die Tabelle (slotPosition) und Definieren des Namens desAttributs, das den Dateinamen eines der 16 PNG-Bilder zum Anzeigen eines Slot-Rad-Ergebnisses enthält.Anschließend wird die createTable-Methode aufgerufen, um die Tabelle zu erstellen.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Load credentials and set Region from JSON fileAWS.config.loadFromPath('./config.json');

// Create DynamoDB service objectvar ddb = new AWS.DynamoDB({apiVersion: '2012-08-10'});

var tableParams = { AttributeDefinitions: [ { AttributeName: 'slotPosition', AttributeType: 'N' }, { AttributeName: 'imageFile', AttributeType: 'S' } ],

261

Page 268: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Erstellen und Füllen einer DynamoDB-Tabelle

KeySchema: [ { AttributeName: 'slotPosition', KeyType: 'HASH' }, { AttributeName: 'imageFile', KeyType: 'RANGE' } ], ProvisionedThroughput: { ReadCapacityUnits: 1, WriteCapacityUnits: 1 }, TableName: 'TABLE_NAME', StreamSpecification: { StreamEnabled: false }};

ddb.createTable(tableParams, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data);

}});

Sobald die DynamoDB-Tabelle vorhanden ist, können Sie sie mit den Elementen und Daten füllen, die vonder Anwendung benötigt werden. Das slotassets-Verzeichnis enthält das Node.js-Skript ddb-table-populate.js, das die Datenauffüllung für die soeben erstellte DynamoDB-Tabelle automatisiert.

So führen Sie das Node.js-Skript aus, das die DynamoDB-Tabelle mit Daten füllt

1. Öffnen Sie ddb-table-populate.js in einem Texteditor.2. Suchen Sie diese Zeile im Skript.

var myTable = 'TABLE_NAME';

Ändern Sie TABLE_NAME in den Namen der Tabelle, die Sie zuvor erstellt haben.3. Speichern Sie die Datei und schließen Sie sie.4. Geben Sie den folgenden Befehl in die Befehlszeile ein.

node ddb-table-populate.js

Skript zur Auffüllung von TabellenDas Setup-Skript ddb-table-populate.js führt den folgenden Code aus. Es erstellt die Parameter,die das JSON benötigt, um jedes Datenelement für die Tabelle zu erstellen. Dazu gehören ein eindeutigernumerischer ID-Wert für slotPosition und der Dateiname eines der 16 PNG-Bilder eines Slot-Rad-Ergebnisses für imageFile. Nachdem Sie die erforderlichen Parameter für jedes mögliche Ergebnisfestgelegt haben, ruft der Code wiederholt eine Funktion auf, die die putItem-Methode zum Füllen vonElementen in der Tabelle ausführt.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Load credentials and set Region from JSON fileAWS.config.loadFromPath('./config.json');

262

Page 269: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Erstellen und Füllen einer DynamoDB-Tabelle

// Create DynamoDB service objectvar ddb = new AWS.DynamoDB({apiVersion: '2012-08-10'});

var myTable = 'TABLE_NAME';

// Add the four results for spadesvar params = { TableName: myTable, Item: {'slotPosition' : {N: '0'}, 'imageFile' : {S: 'spad_a.png'} }};post();

var params = { TableName: myTable, Item: {'slotPosition' : {N: '1'}, 'imageFile' : {S: 'spad_k.png'} }};post();

var params = { TableName: myTable, Item: {'slotPosition' : {N: '2'}, 'imageFile' : {S: 'spad_q.png'} }};post();

var params = { TableName: myTable, Item: {'slotPosition' : {N: '3'}, 'imageFile' : {S: 'spad_j.png'} }};post();

// Add the four results for hearts...

// Add the four results for diamonds...

// Add the four results for clubsvar params = { TableName: myTable, Item: {'slotPosition' : {N: '12'}, 'imageFile' : {S: 'club_a.png'} }};post();

var params = { TableName: myTable, Item: {'slotPosition' : {N: '13'}, 'imageFile' : {S: 'club_k.png'} }};post();

var params = { TableName: myTable, Item: {'slotPosition' : {N: '14'}, 'imageFile' : {S: 'club_q.png'} }};post();

263

Page 270: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Vorbereiten und Erstellen der Lambda-Funktion

var params = { TableName: myTable, Item: {'slotPosition' : {N: '15'}, 'imageFile' : {S: 'club_j.png'} }};post();

function post () { ddb.putItem(params, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data); } });}

Klicken Sie auf Weiter, um mit dem Tutorial fortzufahren.

Vorbereiten und Erstellen der Lambda-FunktionIn dieser Aufgabe erstellen Sie die Lambda-Funktion, die von der Anwendung verwendet wird.

Die Lambda-Funktion wird jedes Mal vom Browser-Skript aufgerufen, wenn der Spieler des Spiels auf denGriff an der Seite der Maschine klickt und ihn freigibt. Es gibt 16 mögliche Ergebnisse, die in jeder Slot-Position angezeigt werden können und zufällig ausgewählt werden.

Die Lambda-Funktion generiert drei zufällige Ergebnisse, eins für jedes Slot-Rad im Spiel. Für jedesErgebnis ruft die Lambda-Funktion die Amazon DynamoDB-Tabelle auf, um den Dateinamen derErgebnisgrafik abzurufen. Sobald alle drei Ergebnisse ermittelt und die entsprechenden Grafik-URLsabgerufen wurden, werden die Ergebnisinformationen an das Browser-Skript zurückgegeben, um dasErgebnis anzuzeigen.

Der für die Lambda-Funktion erforderliche Node.js-Code befindet sich im slotassets-Verzeichnis. Siemüssen diesen Code bearbeiten, um ihn in Ihrer Lambda-Funktion zu verwenden. Um diesen Teil derAnwendung abzuschließen, müssen Sie Folgendes durchführen:

• Bearbeiten Sie den Node.js-Code, der von der Lambda-Funktion verwendet wird.• Komprimieren Sie den Node.js-Code in eine ZIP-Archivdatei, die Sie dann in den Amazon S3-Bucket

hochladen, der von der Anwendung verwendet wird.• Bearbeiten Sie das Node.js-Skript aus, das die Lambda-Funktion erstellt.

264

Page 271: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Vorbereiten und Erstellen der Lambda-Funktion

• Führen Sie das Setup-Skript aus, das die Lambda-Funktion aus der ZIP-Archivdatei im Amazon S3-Bucket erstellt.

So nehmen Sie die erforderlichen Änderungen im Node.js-Code der Lambda-Funktion vor

1. Öffnen Sie slotpull.js im slotassets-Verzeichnis in einem Texteditor.2. Suchen Sie diese Codezeile im Browser-Skript.

TableName: = "TABLE_NAME";

3. Ersetzen Sie TABLE_NAME durch Ihren DynamoDB-Tabellennamen.4. Speichern Sie die Datei und schließen Sie sie.

So bereiten Sie den Node.js-Code zum Erstellen der Lambda-Funktion vor

1. Komprimieren Sie slotpull.js in eine ZIP-Archiv-Datei für die Erstellung der Lambda-Funktion.2. Laden Sie slotpull.js.zip in den Amazon S3-Bucket hoch, den Sie für diese App erstellt haben.

Sie können den folgenden Befehl der Befehlszeilenschnittstelle verwenden, wobei BUCKET der NameIhres Amazon S3-Buckets ist:

aws s3 cp slotpull.js.zip s3://BUCKET

3. Laden Sie die Website-Dateien - die HTML-, PNG- und CSS-Dateien - in den Bucket hoch.

Lambda-FunktionscodeDer Code erstellt ein JSON-Objekt, um das Ergebnis für das Browser-Skript in der Anwendung zuverpacken. Als Nächstes generiert er drei zufällige Ganzzahlwerte, die verwendet werden, um Elementein der DynamoDB-Tabelle zu ermitteln, und erhält Dateinamen von Bildern im Amazon S3-Bucket. DasErgebnis-JSON wird gefüllt und zurück an den Lambda-Funktionsaufrufer übergeben.

Erstellen der Lambda-FunktionSie können den Node.js-Code für die Lambda-Funktion in einer als ZIP-Archiv-Datei komprimierten Dateibereitstellen, die Sie in einem Amazon S3-Bucket hochladen. Das slotassets-Verzeichnis enthält dasNode.js-Skript lambda-function-setup.js, das Sie ändern und ausführen können, um die Lambda-Funktion zu erstellen.

So bearbeiten Sie das Node.js-Setup-Skript zum Erstellen der Lambda-Funktion

1. Öffnen Sie lambda-function-setup.js im slotassets-Verzeichnis in einem Texteditor.2. Suchen Sie diese Zeile im Skript

S3Bucket: 'BUCKET_NAME',

Ersetzen Sie BUCKET_NAME durch den Namen des Amazon S3-Buckets, der die ZIP-Archivdatei desLambda-Funktionscodes enthält.

3. Suchen Sie diese Zeile im Skript

S3Key: 'ZIP_FILE_NAME',

Ersetzen Sie ZIP_FILE_NAME durch den Namen der ZIP-Archivdatei des Lambda-Funktionscodes imAmazon S3-Bucket.

265

Page 272: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Ausführen der Lambda-Funktion

4. Suchen Sie diese Zeile im Skript.

Role: 'ROLE_ARN',

Ersetzen Sie ROLE_ARN durch den ARN der gerade erstellten Ausführungsrolle.5. Speichern Sie die Datei und schließen Sie sie.

So führen Sie das Setup-Skript aus und erstellen die Lambda-Funktion aus der ZIP-Archivdatei imAmazon S3-Bucket

• Geben Sie den folgenden Befehl in die Befehlszeile ein.

node lambda-function-setup.js

Skript-Code zur ErstellungIm Folgenden ist das Skript aufgeführt, das die Lambda-Funktion erstellt. Der Code geht davon aus, dassSie die ZIP-Archiv-Datei der Lambda-Funktion in dem Amazon S3-Bucket hochgeladen haben, der für dieAnwendung erstellt wurde.

// Load the AWS SDK for Node.jsvar AWS = require('aws-sdk');// Load credentials and set Region from JSON fileAWS.config.loadFromPath('./config.json');

// Create the IAM service objectvar lambda = new AWS.Lambda({apiVersion: '2015-03-31'});

var params = { Code: { /* required */ S3Bucket: 'BUCKET_NAME', S3Key: 'ZIP_FILE_NAME' }, FunctionName: 'slotTurn', /* required */ Handler: 'slotSpin.Slothandler', /* required */ Role: 'ROLE_ARN', /* required */ Runtime: 'nodejs8.10', /* required */ Description: 'Slot machine game results generator'};lambda.createFunction(params, function(err, data) { if (err) console.log(err); // an error occurred else console.log("success"); // successful response});

Klicken Sie auf Weiter, um mit dem Tutorial fortzufahren.

Ausführen der Lambda-FunktionIn dieser Aufgabe führen Sie die Anwendung aus.

So führen Sie die Browseranwendung aus

1. Öffnen Sie einen Webbrowser.2. Richten Sie den Browser auf die URL für den Amazon S3-Bucket aus, der die Anwendung hostet.

266

Page 273: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Ausführen der Lambda-Funktion

3. Wählen Sie den Griff rechts neben dem Spielautomaten aus. Die Räder beginnen sich zu drehen,wenn das Browser-Skript die Lambda-Funktion zum Generieren der Ergebnisse für dieses Zug aufruft.

4. Sobald die Lambda-Funktion die Drehergebnisse an das Browser-Skript zurück gibt, legt das Browser-Skript die Spielanzeige so fest, dass die Bilder angezeigt werden, die die Lambda Funktion ausgewählthat.

5. Wählen Sie den Ziehpunkt erneut aus, um eine weitere Drehung zu starten.

267

Page 274: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Ausführen der Lambda-Funktion

Bereinigen des TutorialsUm laufende Gebühren für die in diesem Tutorial verwendeten Ressourcen und Services zu vermeiden,löschen Sie die folgenden Ressourcen in ihren jeweiligen Servicekonsolen:

• Die Lambda-Funktion in der AWS Lambda-Konsole unter https://console.aws.amazon.com/lambda/.• Die DynamoDB-Tabelle in der Amazon DynamoDB-Konsole unter https://console.aws.amazon.com/

dynamodb/.• Die Objekte im Amazon S3-Bucket und der Bucket selbst in der Amazon S3-Konsole unter https://

console.aws.amazon.com/s3/.• Der Amazon Cognito-Identitäten-Pool in der Amazon Cognito-Konsole unter https://

console.aws.amazon.com/cognito/.• Die Lambda-Ausführungsrolle in der IAM-Konsole unter https://console.aws.amazon.com/iam/.

Herzlichen Glückwunsch! Sie haben nun das Tutorial abgeschlossen.

268

Page 275: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2SDK-Änderungsprotokoll auf GitHub

JavaScript-API-ReferenzDie Themen der API-Referenz für neuste Version des SDK für JavaScript finden Sie unter:

https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/index.html.

SDK-Änderungsprotokoll auf GitHubDas Änderungsprotokoll für Veröffentlichungen von Version 2.4.8 und höher finden Sie unter:

https://github.com/aws/aws-sdk-js/blob/master/CHANGELOG.md.

269

Page 276: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Datenschutz

Sicherheit für this AWS Product orService

Cloud security at Amazon Web Services (AWS) is the highest priority. As an AWS customer, youbenefit from a data center and network architecture that is built to meet the requirements of the mostsecurity-sensitive organizations. Security is a shared responsibility between AWS and you. The SharedResponsibility Model describes this as Security of the Cloud and Security in the Cloud.

Security of the Cloud – AWS is responsible for protecting the infrastructure that runs all of the servicesoffered in the AWS Cloud and providing you with services that you can use securely. Our securityresponsibility is the highest priority at AWS, and the effectiveness of our security is regularly tested andverified by third-party auditors as part of the AWS Compliance Programs.

Security in the Cloud – Your responsibility is determined by the AWS service you are using, and otherfactors including the sensitivity of your data, your organization’s requirements, and applicable laws andregulations.

This AWS product or service follows the shared responsibility model through the specific Amazon WebServices (AWS) services it supports. For AWS service security information, see the AWS service securitydocumentation page and AWS services that are in scope of AWS compliance efforts by complianceprogram.

Themen• Datenschutz in this AWS Product or Service (p. 270)• Identity and Access Management for this AWS Product or Service (p. 271)• Compliance Validation for this AWS Product or Service (p. 271)• Resilience for this AWS Product or Service (p. 272)• Infrastructure Security for this AWS Product or Service (p. 272)• Erzwingen von TLS 1.2 (p. 273)

Datenschutz in this AWS Product or ServiceThis AWS product or service entspricht dem AWS-Modell der übergreifenden Verantwortlichkeit, dasVorschriften und Richtlinien zum Datenschutz enthält. AWS ist für den Schutz der globalen Infrastrukturverantwortlich, in der alle AWS-Services ausgeführt werden. AWS behält die Kontrolle über die in dieserInfrastruktur gehosteten Daten, einschließlich der Sicherheitskonfigurationskontrollen für den Umgangmit Kundeninhalten und personenbezogenen Daten. AWS-Kunden und APN-Partner, die entwederals Datenverantwortliche oder Datenverarbeiter fungieren, sind für alle personenbezogenen Datenverantwortlich, die sie in die AWS-Cloud einstellen.

Zum Zweck des Datenschutzes empfehlen wir, die Anmeldeinformationen für das AWS-Konto zu schützenund individuelle Benutzerkonten mit AWS Identity and Access Management (IAM) einzurichten, damit jederBenutzer nur die Berechtigungen besitzt, die er für seine beruflichen Aufgaben benötigt. Außerdem solltenSie die Daten mit folgenden Methoden schützen:

• Verwenden Sie für jedes Konto die Multi-Factor Authentication (MFA).

270

Page 277: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Identity and Access Management

• Verwenden Sie SSL/TLS für die Kommunikation mit AWS-Ressourcen. Informationen zur Verwendungeiner TLS-Mindestversion von 1.2 finden Sie unter Erzwingen von TLS 1.2 (p. 273).

• Richten Sie die API und die Protokollierung von Benutzeraktivitäten mit AWS CloudTrail ein.• Verwenden Sie AWS-Verschlüsselungslösungen zusammen mit allen Standardsicherheitskontrollen in

AWS-Services.• Verwenden Sie erweiterte verwaltete Sicherheits-Services wie Amazon Macie, um Unterstützung bei der

Erkennung und beim Schutz von persönlichen Daten zu erhalten, die in Amazon S3 gespeichert sind.

Wir empfehlen dringend, in Freitextfeldern wie z. B. im Feld Name keine sensiblen, identifizierendenInformationen wie Kontonummern von Kunden einzugeben. Dies gilt auch, wenn Sie mit this AWSproduct or service oder anderen AWS-Services unter Verwendung von Konsole, API, AWS CLI oderAWS-SDKs arbeiten. Alle Daten, die Sie in this AWS product or service oder andere Services eingeben,werden möglicherweise in Diagnoseprotokolle aufgenommen. Wenn Sie eine URL für einen externenServer bereitstellen, schließen Sie keine Anmeldeinformationen zur Validierung Ihrer Anforderung an denbetreffenden Server in die URL ein.

Weitere Informationen zum Datenschutz enthält der Blog-Beitrag AWS Shared Responsibility Model andGDPR im AWS-Sicherheitsblog.

Identity and Access Management for this AWSProduct or Service

AWS Identity and Access Management (IAM) is an Amazon Web Services (AWS) service that helpsan administrator securely control access to AWS resources. IAM administrators control who can beauthenticated (signed in) and authorized (have permissions) to use resources in AWS services. IAM is anAWS service that you can use with no additional charge.

To use this AWS product or service to access AWS, you need an AWS account and AWS credentials. Toincrease the security of your AWS account, we recommend that you use an IAM user to provide accesscredentials instead of using your AWS account credentials.

For details about working with IAM, see AWS Identity and Access Management.

For an overview of IAM users and why they are important for the security of your account, see AWSSecurity Credentials in the Amazon Web Services General Reference.

This AWS product or service follows the shared responsibility model through the specific Amazon WebServices (AWS) services it supports. For AWS service security information, see the AWS service securitydocumentation page and AWS services that are in scope of AWS compliance efforts by complianceprogram.

Compliance Validation for this AWS Product orService

This AWS product or service follows the shared responsibility model through the specific Amazon WebServices (AWS) services it supports. For AWS service security information, see the AWS service securitydocumentation page and AWS services that are in scope of AWS compliance efforts by complianceprogram.

271

Page 278: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Resilience

The security and compliance of AWS services is assessed by third-party auditors as part of multiple AWScompliance programs. These include SOC, PCI, FedRAMP, HIPAA, and others. AWS provides a frequentlyupdated list of AWS services in scope of specific compliance programs at AWS Services in Scope byCompliance Program.

Third-party audit reports are available for you to download using AWS Artifact. For more information, seeDownloading Reports in AWS Artifact.

For more information about AWS compliance programs, see AWS Compliance Programs.

Your compliance responsibility when using this AWS product or service to access an AWS service isdetermined by the sensitivity of your data, your organization’s compliance objectives, and applicable lawsand regulations. If your use of an AWS service is subject to compliance with standards such as HIPAA,PCI, or FedRAMP, AWS provides resources to help:

• Security and Compliance Quick Start Guides – Deployment guides that discuss architecturalconsiderations and provide steps for deploying security-focused and compliance-focused baselineenvironments on AWS.

• Architecting for HIPAA Security and Compliance Whitepaper – A whitepaper that describes howcompanies can use AWS to create HIPAA-compliant applications.

• AWS Compliance Resources – A collection of workbooks and guides that might apply to your industryand location.

• AWS Config – A service that assesses how well your resource configurations comply with internalpractices, industry guidelines, and regulations.

• AWS Security Hub – A comprehensive view of your security state within AWS that helps you check yourcompliance with security industry standards and best practices.

Resilience for this AWS Product or ServiceThe Amazon Web Services (AWS) global infrastructure is built around AWS Regions and AvailabilityZones.

AWS Regions provide multiple physically separated and isolated Availability Zones, which are connectedwith low-latency, high-throughput, and highly redundant networking.

With Availability Zones, you can design and operate applications and databases that automatically fail overbetween Availability Zones without interruption. Availability Zones are more highly available, fault tolerant,and scalable than traditional single or multiple data center infrastructures.

For more information about AWS Regions and Availability Zones, see AWS Global Infrastructure.

This AWS product or service follows the shared responsibility model through the specific Amazon WebServices (AWS) services it supports. For AWS service security information, see the AWS service securitydocumentation page and AWS services that are in scope of AWS compliance efforts by complianceprogram.

Infrastructure Security for this AWS Product orService

This AWS product or service follows the shared responsibility model through the specific Amazon WebServices (AWS) services it supports. For AWS service security information, see the AWS service securitydocumentation page and AWS services that are in scope of AWS compliance efforts by complianceprogram.

272

Page 279: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Erzwingen von TLS 1.2

Erzwingen von TLS 1.2Um die Sicherheit bei der Kommunikation mit AWS-Services zu erhöhen, konfigurieren Sie den AWS SDKfür JavaScript für die Verwendung von TLS 1.2 oder höher.

Transport Layer Security (TLS) ist ein Protokoll, das von Webbrowsern und anderen Anwendungenverwendet wird, um die Privatsphäre und Integrität der über ein Netzwerk ausgetauschten Daten zugewährleisten.

Überprüfen und Erzwingen von TLS in Node.jsWenn Sie den AWS SDK für JavaScript mit Node.js verwenden, wird die zugrunde liegende Node.js-Sicherheitsebene verwendet, um die TLS-Version festzulegen.

Node.js 8.0.0 und höher verwenden eine Mindestversion von OpenSSL 1.0.2, die TLS 1.2 unterstützt. SDKfür JavaScript verwendet standardmäßig TLS 1.2, sofern verfügbar.

Überprüfen der Version von OpenSSL und TLSFühren Sie den folgenden Befehl aus, um die von Node.js verwendete Version von OpenSSL auf IhremComputer abzurufen.

node -p process.versions

Die Version von OpenSSL in der Liste ist die von Node.js verwendete Version, wie im folgenden Beispielgezeigt.

openssl: '1.1.1d'

Um die von Node.js verwendete Version von TLS auf Ihrem Computer abzurufen, starten Sie die Knoten-Shell und führen Sie die folgenden Befehle in der angegebenen Reihenfolge aus.

> var tls = require("tls");> var tlsSocket = new tls.TLSSocket();> tlsSocket.getProtocol();

Der letzte Befehl gibt die TLS-Version aus, wie im folgenden Beispiel gezeigt.

'TLSv1.3'

Node.js verwendet standardmäßig diese Version von TLS und versucht, eine andere Version von TLSauszuhandeln, wenn ein Aufruf nicht erfolgreich ist.

Erzwingen einer Mindestversion von TLSNode.js verhandelt eine Version von TLS, wenn ein Aufruf fehlschlägt. Sie können die minimal zulässigeTLS-Version während dieser Aushandlung erzwingen, entweder wenn Sie ein Skript über die Befehlszeileoder pro Anforderung im JavaScript-Code ausführen.

Um die minimale TLS-Version über die Befehlszeile anzugeben, müssen Sie Node.js Version 11.0.0 oderhöher verwenden. Um eine bestimmte Node.js-Version zu installieren, installieren Sie zuerst Node VersionManager (nvm) mit den Schritten unter Node Version Manager Installing and Updating. Führen Sie danndie folgenden Befehle aus, um eine bestimmte Version von Node.js zu installieren und zu verwenden.

273

Page 280: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Überprüfen und Erzwingen von TLS in einem Browserskript

nvm install 11nvm use 11

Um zu erzwingen, dass TLS 1.2 die minimal zulässige Version ist, geben Sie beim Ausführen des Skriptsdas Argument --tls-min-v1.2 an, wie im folgenden Beispiel gezeigt.

node --tls-min-v1.2 yourScript.js

Um die minimal zulässige TLS-Version für eine bestimmte Anforderung im JavaScript-Code anzugeben,verwenden Sie den Parameter httpOptions, um das Protokoll anzugeben, wie im folgenden Beispielgezeigt.

var https = require('https');

var dynamo = new AWS.DynamoDB({ httpOptions: { agent: new https.Agent({ secureProtocol: 'TLSv1_2_method' }) }});

Überprüfen und Erzwingen von TLS in einemBrowserskriptWenn Sie den SDK für JavaScript in einem Browserskript verwenden, steuern die Browsereinstellungen dieverwendete Version von TLS. Die vom Browser verwendete Version von TLS kann nicht vom Skript erkanntoder festgelegt werden und muss vom Benutzer konfiguriert werden. Informationen zur Überprüfung undErzwingung der in einem Browserskript verwendeten Version von TLS finden Sie in den Anweisungen fürden jeweiligen Browser.

274

Page 281: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2JavaScript-SDK-Forum

Weitere RessourcenDie folgenden Links bieten zusätzliche Ressourcen, die Sie mit dem AWS SDK für JavaScript (p. 269)verwenden können.

JavaScript-SDK-ForumFragen und Diskussionen zu Themen, die für Anwender des SDK für JavaScript von Interesse sind, findenSie im JavaScript-SDK-Forum.

JavaScript-SDK und Entwicklerhandbuch aufGitHub

Es gibt mehrere Repositorys auf GitHub für SDK für JavaScript.

• Das aktuelle SDK für JavaScript ist im SDK-Repository verfügbar.• Das SDK für JavaScript-Entwicklerhandbuch (dieses Dokument) finden Sie im Markdown-Format in

seinem eigenen Dokumentations-Repo.• Ein Teil des Beispielcodes in diesem Handbuch ist im SDK-Beispielcode-Repository verfügbar.

JavaScript-SDK auf GitterFragen und Diskussionen über das SDK für JavaScript finden Sie auch in der JavaScript-SDK-Communityvon Gitter.

275

Page 282: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Dokumentverlauf

Dokumentverlauf für AWS SDK fürJavaScript

• SDK-Version: Aufrufen JavaScript-API-Referenz (p. 269)• Letzte umfassende Aktualisierung der Dokumentation: 13. Mai 2019

DokumentverlaufIn der folgenden Tabelle werden wichtige Änderungen in den einzelnen Versionen des AWS SDKfür JavaScript beschrieben, die nach Mai 2018 veröffentlicht wurden. Um Benachrichtigungen überAktualisierungen dieser Dokumentation zu erhalten, können Sie einen RSS-Feed abonnieren.

update-history-change update-history-description update-history-date

Anzeigen von Fotos in einemAmazon S3-Bucket aus einemBrowser heraus (p. 170)

Ein Beispiel für einfachesAnzeigen von Fotos invorhandenen Fotoalbenhinzugefügt.

May 13, 2019

Festlegen vonAnmeldeinformationen inNode.js, neue Optionen fürcredential-loading

Weitere Informationen zuAnmeldeinformationenhinzugefügt, die von dem ECSAnmeldeinformationsanbieteroder über einenkonfigurierten Prozess fürAnmeldeinformationen geladenwerden.

April 25, 2019

Anmeldeinformationen,die über einen Prozessfür die Konfigurierung vonAnmeldeinformationen geladenwerden

Weitere Informationen zuAnmeldeinformationen,die über den Prozess fürdie Konfigurierung vonAnmeldeinformationen geladenwerden

April 25, 2019

Neues Thema für SDK-Metriken. Informationen für SDK-Metrikenwurden dem Entwicklerhandbuchfür AWS SDK für JavaScripthinzugefügt. Die neuen Inhaltefinden Sie unter SDK-Metriken imSDK für JavaScript.

January 11, 2019

Neues Lambda-Tutorial (p. 253) Es wurde ein Tutorialhinzugefügt, in dem einbrowserbasiertes Spiel erstelltwird. Das Tutorial enthältein herunterladbares ZIP-Archiv. Dieses umfasst dieGrafikkomponenten für dasSpiel, mehrere Node.js-Skriptszum Erstellen und Konfigurieren

July 20, 2018

276

Page 283: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Frühere Aktualisierungen

der Services und Ressourcen,die von dem Spiel verwendetwerden, und den Node.js-Codefür die AWS Lambda-Funktion,die das Spiel ausführt.

Neue Erste Schritte in einemBrowser-Skript

Erste Schritte in einem Browser-Skript wurde umgeschrieben,um das Beispiel zu vereinfachenund auf den Amazon Polly-Service zuzugreifen, um Textzu senden und Sprachausgabezurückzugeben, die Sie imBrowser abspielen können.Weitere Informationen finden Sieunter Erste Schritte im Browser-Skript für den neuen Inhalt.

July 14, 2018

Neue Amazon SNS-Codebeispiele

Vier neue Node.js-Codebeispielefür die Arbeit mit AmazonSNS wurden hinzugefügt. DenBeispielcode finden Sie inAmazon SNS-Beispiele.

June 29, 2018

Neue Erste Schritte in Node.js Erste Schritte in Node.js wurdeumgeschrieben, um aktualisiertenBeispielcode zu verwendenund mehr Details zum Erstellender package.json-Dateisowie des Node.js-Codesselbst bereitzustellen. WeitereInformationen finden Sie unterErste Schritte in Node.js für denneuen Inhalt.

June 4, 2018

Frühere AktualisierungenIn der folgenden Tabelle werden die wichtigen Änderungen in den einzelnen Versionen des AWS SDK fürJavaScript vor Juni 2018 beschrieben.

Änderung Beschreibung Datum

Neue AWS ElementalMediaConvert-Codebeispiele

Drei neue Node.js-Codebeispielefür die Arbeit mit AWSElemental MediaConvert wurdenhinzugefügt. Einen Beispiel-Codefinden Sie unter AWS ElementalMediaConvert Beispiele (p. 130).

21. Mai 2018

Neue Bearbeitung auf derGitHub-Schaltfläche

Der Header jedes Themasbietet nun eine Schaltfläche,über die Sie zur Markdown-Version desselben Themas aufGitHub gelangen. So könnenSie Bearbeitungen bereitstellen,um die Genauigkeit und

21. Februar 2018

277

Page 284: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Frühere Aktualisierungen

Änderung Beschreibung DatumVollständigkeit des Handbuchszu verbessern.

Neues Thema zubenutzerdefinierten Endpunkten

Informationen zum Formatund der Verwendungvon benutzerdefiniertenEndpunkten für das Ausrichtenvon API-Aufrufen wurdenhinzugefügt. Siehe Festlegenvon benutzerdefiniertenEndpunkten (p. 29).

20. Februar 2018

SDK für JavaScript-Entwicklerhandbuch auf GitHub

Das SDK für JavaScript-Entwicklerhandbuch finden Sieim Markdown-Format in seinemeigenen documentation repo(Dokumentations-Repo). Siekönnen Probleme veröffentlichen,die das Handbuch angehensoll, oder senden SiePull-Anforderungen, umvorgeschlagenen Änderungen zuübermitteln.

16. Februar 2018

Neues Amazon DynamoDB-Codebeispiel

Ein neues Node.js-Codebeispielzum Aktualisieren einerDynamoDB-Tabelle mithilfedes Dokument-Clients wurdehinzugefügt. Einen Beispiel-Codefinden Sie unter Verwendendes DynamoDB-Dokument-Clients (p. 109).

14. Februar 2018

Neues Thema zu AWS Cloud9 Ein Thema zur Verwendung vonAWS Cloud9 für die Entwicklungund das Debuggen von Browser-und Node.js-Code wurdehinzugefügt. Siehe Verwendenvon AWS Cloud9 mit dem AWSSDK for JavaScript (p. 13).

5. Februar 2018

Neues Thema zur SDK-Protokollierung

Ein Thema zur Protokollierungvon API-Aufrufen, die mit demSDK für JavaScript durchgeführtwerden, wurde hinzugefügt,einschließlich Informationen zurVerwendung eines Drittanbieter-Loggers. Siehe Protokollierenvon AWS SDK für JavaScript-Aufrufen (p. 66).

5. Februar 2018

278

Page 285: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Frühere Aktualisierungen

Änderung Beschreibung Datum

Aktualisiertes Thema zurEinstellung der Region

Das Thema zur Festlegungder Region, die mit demSDK verwendet wird, wurdeaktualisiert und erweitert,einschließlich Informationen überdie Rangfolge bei der Einstellungder Region. Siehe Festlegen derAWS-Region (p. 27).

12. Dezember 2017

Neue Amazon SES-Codebeispiele

Der Abschnitt mit SDK-Codebeispielen wurdeaktualisiert und enthält nun fünfneue Beispiele für die Arbeitmit Amazon SES. WeitereInformationen zu diesenCodebeispielen finden Sie unterAmazon Simple Email ServiceBeispiele (p. 203).

9. November 2017

Verbesserung derBenutzerfreundlichkeit

Basierend auf den jüngstenNutzungstests wurde eine Reihevon Änderungen vorgenommen,um die Benutzerfreundlichkeit derDokumentation zu verbessern.

• Codebeispiele werden genauerals für Browser- oder Node.js-Ausführungen ausgerichtetidentifiziert.

• TOC-Links springen nichtmehr sofort zu anderenWebinhalten, einschließlich derAPI-Referenz.

• Umfasst mehr Verknüpfungenim Abschnitt "Erste Schritte" zuDetails zum Erhalt von AWS-Anmeldeinformationen.

• Stellt mehr Informationenzu gemeinsamen Node.js-Funktionen bereit, die zurVerwendung des SDKsbenötigt werden. WeitereInformationen finden Sieunter Überlegungen zuNode.js (p. 43).

9. August 2017

279

Page 286: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Frühere Aktualisierungen

Änderung Beschreibung Datum

Neue DynamoDB-Codebeispiele Der Abschnitt mit SDK-Codebeispielen wurdeaktualisiert und es wurden diebeiden vorherigen Beispieleüberschrieben sowie dreibrandneue Beispiele fürdie Arbeit mit DynamoDBhinzugefügt. WeitereInformationen zu diesenCodebeispielen finden Sieunter Amazon DynamoDBBeispiele (p. 97).

21. Juni 2017

Neue IAM-Codebeispiele Der Abschnitt mit SDK-Codebeispielen wurde aktualisiertund enthält nun fünf neueBeispiele für die Arbeit mit IAM.Weitere Informationen zu diesenCodebeispielen finden Sie unterBeispiele für AWS IAM (p. 147).

23. Dezember 2016

Neue CloudWatch- und AmazonSQS-Codebeispiele

Der Abschnitt mit SDK-Codebeispielen wurde aktualisiertund enthält nun neue Beispielefür die Arbeit mit CloudWatchund mit Amazon SQS. WeitereInformationen zu diesenCodebeispielen finden Sieunter Amazon CloudWatchBeispiele (p. 81) und AmazonSQS Beispiele (p. 238).

20. Dezember 2016

Neue Amazon EC2-Codebeispiele

Der Abschnitt mit SDK-Codebeispielen wurdeaktualisiert und enthält nun fünfneue Beispiele für die Arbeitmit Amazon EC2. WeitereInformationen zu diesenCodebeispielen finden Sie unterAmazon EC2 Beispiele (p. 113).

15. Dezember 2016

Liste der unterstützten Browsersichtbarer gemacht

Die Liste der vom SDK fürJavaScript unterstützten Browser,die vorher unter dem Themazu Voraussetzungen gefundenwerden konnte, hat ihr eigenesThema erhalten, um sie imInhaltsverzeichnis sichtbarer zumachen.

16. November 2016

280

Page 287: AWS SDK für JavaScript - Entwicklerhandbuch für SDK v2 · Abrufen Ihrer Anmeldeinformationen

AWS SDK für JavaScript Entwicklerhandbuch für SDK v2Frühere Aktualisierungen

Änderung Beschreibung Datum

Erstveröffentlichung des neuenEntwicklerhandbuchs

Das vorherigeEntwicklerhandbuch istjetzt veraltet. Das neueEntwicklerhandbuch wurde neuorganisiert, um Informationenleichter auffindbar zu machen.Wenn entweder Node.js- oderBrowser-JavaScript-Szenarienspezielle Überlegungenanzeigen, werden diese alsangemessen identifiziert. DasHandbuch bietet außerdemzusätzliche Codebeispiele, diebesser organisiert sind, damit sieeinfacher und schneller gefundenwerden können.

28. Oktober 2016

281