Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Kontenübergreifenden Zugriff auf Amazon DynamoDB konfigurieren
Erstellt von Shashi Dalmia (AWS), Esteban Serna Parra (AWS) und Imhoertha Ojior (AWS)
Übersicht
Dieses Muster erklärt die Schritte zur Konfiguration des kontoübergreifenden Zugriffs auf Amazon DynamoDB mithilfe ressourcenbasierter Richtlinien. Für Workloads, die DynamoDB verwenden, wird es immer üblicher, Strategien zur Workload-Isolierung
Ressourcenbasierte Richtlinien für DynamoDB vereinfachen die Sicherheitslage für kontenübergreifende Workloads erheblich. Dieses Muster enthält Schritte und Beispielcode, um zu demonstrieren, wie Sie AWS Lambda Funktionen in einem konfigurieren können AWS-Konto , um Daten in eine DynamoDB-Datenbanktabelle in einem anderen Konto zu schreiben.
Voraussetzungen und Einschränkungen
Voraussetzungen
Zwei aktiv. AWS-Konten Dieses Muster bezeichnet diese Konten als Konto A und Konto B.
AWS Command Line Interface (AWS CLI) für den Zugriff auf Konto A installiert und konfiguriert, um die DynamoDB-Tabelle zu erstellen. Die anderen Schritte in diesem Muster enthalten Anweisungen zur Verwendung der IAM-, DynamoDB- und Lambda-Konsolen. Wenn Sie es AWS CLI stattdessen verwenden möchten, konfigurieren Sie es so, dass es auf beide Konten zugreift.
Einschränkungen
Einige AWS-Services sind nicht in allen verfügbar AWS-Regionen. Informationen zur Verfügbarkeit in den einzelnen Regionen finden Sie AWS-Services unter Nach Regionen
. Informationen zu bestimmten Endpunkten finden Sie auf der Seite Dienstendpunkte und Kontingente. Wählen Sie dort den Link für den Dienst aus.
Architektur
Das folgende Diagramm zeigt eine Architektur mit einem einzigen Konto. AWS Lambda, Amazon Elastic Compute Cloud (Amazon EC2) und DynamoDB befinden sich alle in demselben Konto. In diesem Szenario können Lambda-Funktionen und EC2 Amazon-Instances auf DynamoDB zugreifen. Um Zugriff auf die DynamoDB-Tabelle zu gewähren, können Sie eine identitätsbasierte Richtlinie in IAM oder eine ressourcenbasierte Richtlinie in DynamoDB erstellen.

Das folgende Diagramm zeigt eine Architektur mit mehreren Konten. Wenn Ressourcen in einem AWS-Konto Konto Zugriff auf eine DynamoDB-Tabelle in einem anderen Konto benötigen, müssen Sie in DynamoDB eine ressourcenbasierte Richtlinie einrichten, um den erforderlichen Zugriff zu gewähren. Im folgenden Diagramm wird beispielsweise einer Lambda-Funktion in Konto B mithilfe einer ressourcenbasierten Richtlinie Zugriff auf die DynamoDB-Tabelle in Konto A gewährt.

Dieses Muster beschreibt den kontenübergreifenden Zugriff zwischen Lambda und DynamoDB. Sie können ähnliche Schritte für andere Konten verwenden, AWS-Services wenn die entsprechenden Berechtigungen für beide Konten konfiguriert sind. Wenn Sie beispielsweise einer Lambda-Funktion Zugriff auf einen Amazon Simple Storage Service (Amazon S3) -Bucket in Konto A gewähren möchten, können Sie eine ressourcenbasierte Richtlinie in Amazon S3 erstellen und die Berechtigungen zur Lambda-Ausführungsrolle in Konto B hinzufügen.
Tools
AWS-Services
Amazon DynamoDB ist ein vollständig verwalteter NoSQL-Datenbank-Service, der schnelle und planbare Leistung mit nahtloser Skalierbarkeit bereitstellt.
AWS Identity and Access Management (IAM) hilft Ihnen dabei, den Zugriff auf Ihre AWS-Ressourcen sicher zu verwalten, indem kontrolliert wird, wer authentifiziert und autorisiert ist, sie zu verwenden.
AWS Lambda ist ein Datenverarbeitungsservice, mit dem Sie Code ausführen können, ohne dass Sie Server bereitstellen oder verwalten müssen. Es führt Ihren Code nur bei Bedarf aus und skaliert automatisch, sodass Sie nur für die tatsächlich genutzte Rechenzeit zahlen.
Code
Dieses Muster enthält Beispielcode im Abschnitt Zusätzliche Informationen, der zeigt, wie Sie eine Lambda-Funktion in Konto B so konfigurieren können, dass sie in die DynamoDB-Tabelle in Konto A schreibt. Der Code wird nur zur Veranschaulichung und zu Testzwecken bereitgestellt. Wenn Sie dieses Muster in einer Produktionsumgebung implementieren, verwenden Sie den Code als Referenz und passen Sie ihn an Ihre eigene Umgebung an.
Bewährte Methoden
Folgen Sie den Best Practices für ressourcenbasierte Richtlinien in der DynamoDB-Dokumentation.
Folgen Sie dem Prinzip der geringsten Rechte und gewähren Sie die für die Ausführung einer Aufgabe erforderlichen Mindestberechtigungen. Weitere Informationen finden Sie in der IAM-Dokumentation unter Gewährung der geringsten Rechte und bewährte Methoden zur Sicherheit.
Epen
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Erstellen Sie eine Richtlinie in Konto B. | Diese IAM-Richtlinie ermöglicht die PutItemAktion für eine DynamoDB-Tabelle in Konto A.
| Allgemeines AWS |
Erstellen Sie eine Rolle in Konto B. | Die Lambda-Funktion in Konto B verwendet diese IAM-Rolle, um auf die DynamoDB-Tabelle in Konto A zuzugreifen.
Weitere Informationen zum Erstellen von Rollen finden Sie in der IAM-Dokumentation. | Allgemeines AWS |
Beachten Sie die Rollen-ARN. |
| Allgemeines AWS |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Erstellen Sie eine DynamoDB-Tabelle. | Verwenden Sie den folgenden AWS CLI Befehl, um eine DynamoDB-Tabelle zu erstellen.
Ersetzen Sie in diesem Codebeispiel Folgendes:
AnmerkungSie geben die ressourcenbasierte Richtlinienkonfiguration in der Weitere Informationen zum Erstellen von Tabellen finden Sie in der DynamoDB-Dokumentation. | Allgemeines AWS |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Erstellen Sie eine Lambda-Funktion, um Daten in DynamoDB zu schreiben. |
Weitere Informationen zum Erstellen von Lambda-Funktionen finden Sie in der Lambda-Dokumentation. | Allgemeines AWS |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Ressourcen löschen. | Um zu vermeiden, dass Kosten im Zusammenhang mit den nach diesem Muster erstellten Ressourcen anfallen, gehen Sie wie folgt vor, um diese Ressourcen zu löschen:
| Allgemeines AWS |
Fehlerbehebung
Problem | Lösung |
---|---|
Beim Erstellen der Lambda-Funktion erhalten Sie eine | Vergewissern Sie sich, dass Sie die ID AWS-Region und die ID von Konto A korrekt eingegeben haben. Diese sind Teil des ARN für die DynamoDB-Tabelle. |
Zugehörige Ressourcen
Erste Schritte mit Lambda (Lambda-Dokumentation)
Verwenden ressourcenbasierter Richtlinien für DynamoDB (DynamoDB-Dokumentation)
IAM-Richtlinien erstellen (IAM-Dokumentation)
Logik zur kontenübergreifenden Bewertung von Richtlinien (IAM-Dokumentation)
Referenz zu den IAM-JSON-Richtlinienelementen (IAM-Dokumentation)
Zusätzliche Informationen
Beispielcode
import boto3
from datetime import datetime
dynamodb_client = boto3.client('dynamodb')
def lambda_handler(event, context):
now = datetime.now().isoformat()
data = dynamodb_client.put_item(TableName='arn:aws:dynamodb:<Region>:<Account-A-ID>:table/Table-Account-A', Item={"category": {"S": "Fruit"},"item": {"S": "Apple"},"time": {"S": now}})
return data
Anmerkung
Wenn der DynamoDB-Client instanziiert wird, wird der ARN der DynamoDB-Tabelle anstelle des Tabellennamens bereitgestellt. Dies ist erforderlich, damit die Lambda-Funktion bei ihrer Ausführung eine Verbindung zur richtigen DynamoDB-Tabelle herstellt.