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- und regionenübergreifender Zugriff auf DynamoDB-Tabellen
AWS Glue ETL-Jobs unterstützen sowohl den regionsübergreifenden als auch kontoübergreifenden Zugriff auf DynamoDB-Tabellen. AWS Glue ETL-Jobs unterstützen sowohl das Lesen von Daten aus der DynamoDB-Tabelle eines anderen AWS Kontos als auch das Schreiben von Daten in die DynamoDB-Tabelle eines anderen AWS Kontos. AWS Glue unterstützt auch sowohl das Lesen aus einer DynamoDB-Tabelle in einer anderen Region als auch das Schreiben in eine DynamoDB-Tabelle in einer anderen Region. Dieser Abschnitt enthält Anweisungen zum Einrichten des Zugriffs und enthält ein Beispielskript.
Die Verfahren in diesem Abschnitt verweisen auf ein IAM-Lernprogramm zum Erstellen einer IAM-Rolle und zum Erteilen des Zugriffs auf die Rolle. In der Anleitung wird auch die Übernahme einer Rolle behandelt, aber hier verwenden Sie stattdessen ein Jobskript, um die Rolle in zu übernehmen AWS Glue. Dieses Tutorial enthält auch Informationen zu allgemeinen kontenübergreifenden Praktiken. Weitere Informationen finden Sie unter Tutorial: AWS Kontoübergreifendes Delegieren des Zugriffs mithilfe von IAM-Rollen im IAM-Benutzerhandbuch.
Erstellen einer Rolle
Befolgen Sie Schritt 1 im Tutorial, um eine IAM-Rolle in Konto A zu erstellen. Wenn Sie die Berechtigungen der Rolle definieren, können Sie vorhandene Richtlinien wie AmazonDynamoDBReadOnlyAccess
oder AmazonDynamoDBFullAccess
auswählen, damit die Rolle DynamoDB lesen/schreiben kann. Im folgenden Beispiel sehen Sie das Erstellen einer Rolle namensDynamoDBCrossAccessRole
, mit der Berechtigungsrichtlinie AmazonDynamoDBFullAccess
.
Erteilen der Zugriffsberechtigung auf die Rolle
Befolgen Sie Schritt 2 im Tutorial im IAM-Benutzerhandbuch, damit Konto B zur neu erstellten Rolle wechseln kann. Im folgenden Beispiel wird eine neue Richtlinie mit der folgenden Anweisung erstellt:
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "<DynamoDBCrossAccessRole's ARN>" } }
Anschließend können Sie diese Richtlinie an die Richtlinie anhängen, die group/role/user Sie für den Zugriff auf DynamoDB verwenden möchten.
Übernehmen Sie die Rolle in AWS Glue Auftragsskript
Jetzt können Sie sich bei Konto B anmelden und ein AWS Glue Job. Informationen zum Erstellen eines Auftrags finden Sie in den Anweisungen unter Konfiguration der Auftragseigenschaften für Spark-Jobs in AWS Glue.
Im Job-Skript müssen Sie die dynamodb.sts.roleArn
-Parameter verwenden, um die DynamoDBCrossAccessRole
-Rolle anzunehmen. Wenn Sie diese Rolle annehmen, können Sie die temporären Anmeldeinformationen für den Zugriff auf DynamoDB in Konto B erhalten. Sehen Sie sich die Beispielskripts an.
Für kontenübergreifendes Lesen in verschiedenen Regionen (ETL Connector):
import sys from pyspark.context import SparkContext from awsglue.context import GlueContext from awsglue.job import Job from awsglue.utils import getResolvedOptions args = getResolvedOptions(sys.argv, ["JOB_NAME"]) glue_context= GlueContext(SparkContext.getOrCreate()) job = Job(glue_context) job.init(args["JOB_NAME"], args) dyf = glue_context.create_dynamic_frame_from_options( connection_type="dynamodb", connection_options={ "dynamodb.region": "us-east-1", "dynamodb.input.tableName": "test_source", "dynamodb.sts.roleArn": "<DynamoDBCrossAccessRole's ARN>" } ) dyf.show() job.commit()
Für kontenübergreifendes Lesen in verschiedenen Regionen (ELT Connector):
import sys from pyspark.context import SparkContext from awsglue.context import GlueContext from awsglue.job import Job from awsglue.utils import getResolvedOptions args = getResolvedOptions(sys.argv, ["JOB_NAME"]) glue_context= GlueContext(SparkContext.getOrCreate()) job = Job(glue_context) job.init(args["JOB_NAME"], args) dyf = glue_context.create_dynamic_frame_from_options( connection_type="dynamodb", connection_options={ "dynamodb.export": "ddb", "dynamodb.tableArn": "<test_source ARN>", "dynamodb.sts.roleArn": "<DynamoDBCrossAccessRole's ARN>" } ) dyf.show() job.commit()
Für kontenübergreifendes Lesen und Schreiben in verschiedenen Regionen:
import sys from pyspark.context import SparkContext from awsglue.context import GlueContext from awsglue.job import Job from awsglue.utils import getResolvedOptions args = getResolvedOptions(sys.argv, ["JOB_NAME"]) glue_context= GlueContext(SparkContext.getOrCreate()) job = Job(glue_context) job.init(args["JOB_NAME"], args) dyf = glue_context.create_dynamic_frame_from_options( connection_type="dynamodb", connection_options={ "dynamodb.region": "us-east-1", "dynamodb.input.tableName": "test_source" } ) dyf.show() glue_context.write_dynamic_frame_from_options( frame=dyf, connection_type="dynamodb", connection_options={ "dynamodb.region": "us-west-2", "dynamodb.output.tableName": "test_sink", "dynamodb.sts.roleArn": "<DynamoDBCrossAccessRole's ARN>" } ) job.commit()