DynamoDB-Verbindungen - AWS Glue

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.

DynamoDB-Verbindungen

Sie können AWS Glue für Spark zum Lesen und Schreiben in Tabellen in DocumentDB in AWS Glue verwenden. Die Verbindung zu DynamoDB erfolgt über IAM-Berechtigungen, die Ihrem AWS-Glue-Auftrag angehängt sind. AWS Glue unterstützt das Schreiben von Daten in die DynamoDB-Tabelle eines anderen AWS-Kontos. Weitere Informationen finden Sie unter Konten- und regionenübergreifender Zugriff auf DynamoDB-Tabellen.

Neben dem AWS Glue-DynamoDB-ETL-Konnektor können Sie den DynamoDB-Export-Konnektor zum Lesen von DynamoDB verwenden. Dieser ruft eine DynamoDB-ExportTableToPointInTime-Anforderung auf und speichert sie im Format DynamoDB JSON an einem von Ihnen angegebenen Amazon-S3-Speicherort. AWS Glue erstellt dann ein DynamicFrame-Objekt, indem die Daten vom Amazon-S3-Exportspeicherort gelesen werden.

Der DynamoDB Writer wird in AWS Glue Version 1.0 oder höher unterstützt. Der AWS Glue-DynamoDB-Export-Konnektor wird in AWS Glue Version 2.0 oder höher unterstützt.

Weitere Informationen zu DynamoDB finden Sie in der Dokumentation zu Amazon DynamoDB.

Anmerkung

Der DynamoDB-ETL-Reader unterstützt keine Filter oder Pushdown-Prädikate.

Konfigurieren von DynamoDB-Verbindungen

Um von AWS Glue aus eine Verbindung zu DynamoDB herzustellen, erteilen Sie der mit Ihrem AWS-Glue-Auftrag verknüpften IAM-Rolle die Erlaubnis, mit DynamoDB zu interagieren. Weitere Informationen zu Berechtigungen auf Ressourcenebene, die zum Lesen und Schreiben in DynamoDB erforderlich sind, finden Sie unter Aktionen, Ressourcen und Bedingungsschlüssel für DynamoDB in der Dokumentation zu IAM.

In den folgenden Situationen ist möglicherweise eine zusätzliche Konfiguration erforderlich:

  • Wenn Sie den DynamoDB-Export-Konnektor verwenden, müssen Sie IAM so konfigurieren, dass Ihr Auftrag DynamoDB-Tabellenexporte anfordern kann. Außerdem müssen Sie einen Amazon-S3-Bucket für den Export benennen und die erforderlichen Berechtigungen in IAM bereitstellen, damit DynamoDB in diesen Bucket schreiben und Ihr AWS-Glue-Auftrag daraus lesen kann. Weitere Informationen finden Sie unter Anfordern eines Tabellenexports in DynamoDB.

  • Wenn Ihr AWS-Glue-Auftrag spezielle Amazon-VPC-Verbindungsanforderungen hat, verwenden Sie den AWS-Glue-Verbindungstyp NETWORK, um Netzwerkoptionen bereitzustellen. Da der Zugriff auf DynamoDB von IAM autorisiert wird, ist kein AWS-Glue-DynamoDB-Verbindungstyp erforderlich.

Aus DynamoDB lesen und in DynamoDB schreiben

In den folgenden Codebeispielen wird gezeigt, wie DynamoDB-Tabellen (über den ETL Connector) gelesen und geschrieben werden. Sie demonstrieren das Lesen von einer Tabelle und das Schreiben in eine andere Tabelle.

Python
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.input.tableName": test_source, "dynamodb.throughput.read.percent": "1.0", "dynamodb.splits": "100" } ) print(dyf.getNumPartitions()) glue_context.write_dynamic_frame_from_options( frame=dyf, connection_type="dynamodb", connection_options={"dynamodb.output.tableName": test_sink, "dynamodb.throughput.write.percent": "1.0" } ) job.commit()
Scala
import com.amazonaws.services.glue.GlueContext import com.amazonaws.services.glue.util.GlueArgParser import com.amazonaws.services.glue.util.Job import com.amazonaws.services.glue.util.JsonOptions import com.amazonaws.services.glue.DynamoDbDataSink import org.apache.spark.SparkContext import scala.collection.JavaConverters._ object GlueApp { def main(sysArgs: Array[String]): Unit = { val glueContext = new GlueContext(SparkContext.getOrCreate()) val args = GlueArgParser.getResolvedOptions(sysArgs, Seq("JOB_NAME").toArray) Job.init(args("JOB_NAME"), glueContext, args.asJava) val dynamicFrame = glueContext.getSourceWithFormat( connectionType = "dynamodb", options = JsonOptions(Map( "dynamodb.input.tableName" -> test_source, "dynamodb.throughput.read.percent" -> "1.0", "dynamodb.splits" -> "100" )) ).getDynamicFrame() print(dynamicFrame.getNumPartitions()) val dynamoDbSink: DynamoDbDataSink = glueContext.getSinkWithFormat( connectionType = "dynamodb", options = JsonOptions(Map( "dynamodb.output.tableName" -> test_sink, "dynamodb.throughput.write.percent" -> "1.0" )) ).asInstanceOf[DynamoDbDataSink] dynamoDbSink.writeDynamicFrame(dynamicFrame) Job.commit() } }

Verwenden des DynamoDB-Export-Konnektors

Der Export-Konnektor funktioniert besser als der ETL-Konnektor, wenn die DynamoDB-Tabelle größer als 80 GB ist. Da außerdem die Exportanforderung außerhalb der Spark-Prozesse in einem AWS Glue-Auftrag durchgeführt wird, können Sie Auto Scaling von AWS-Glue-Aufträgen aktivieren, um bei der Export-Anforderung die DPU-Auslastung zu verringern. Mit dem Export-Konnektor müssen Sie auch nicht die Anzahl der Aufteilungen für die Parallelität des Spark-Executors oder den Prozentsatz des DynamoDB-Durchsatzes konfigurieren.

Anmerkung

DynamoDB hat spezifische Anforderungen, um ExportTableToPointInTime-Anforderungen aufzurufen. Weitere Informationen finden Sie unter Anfordern eines Tabellenexports in DynamoDB. Zum Beispiel muss „Point-in-Time-Restore“ (Zeitpunktbezogene Wiederherstellung, PITR) für die Tabelle aktiviert sein, um diesen Konnektor verwenden zu können. Der DynamoDB-Konnektor unterstützt auch AWS KMS-Verschlüsselung für DynamoDB-Exporte nach Amazon S3. Die Bereitstellung Ihrer Sicherheitskonfiguration in der AWS-Glue-Auftragskonfiguration aktiviert die AWS KMS-Verschlüsselung für einen DynamoDB-Export. Der KMS-Schlüssel muss sich in derselben Region wie der Amazon-S3-Bucket befinden.

Beachten Sie, dass zusätzliche Gebühren für den DynamoDB-Export und Amazon-S3-Speicherkosten anfallen. Exportierte Daten in Amazon S3 bleiben bestehen, nachdem ein Auftrag ausgeführt wurde, sodass Sie sie ohne zusätzliche DynamoDB-Exporte wiederverwenden können. Eine Voraussetzung für die Verwendung des Konnektors ist, dass die zeitpunktbezogene Wiederherstellung (PITR) für die Tabelle aktiviert ist.

Der DynamoDB-ETL-Konnektor oder Export-Konnektor unterstützt keine Filter oder Pushdown-Prädikate, die an der DynamoDB-Quelle angewendet werden sollen.

In den folgenden Codebeispielen wird gezeigt, wie die Anzahl der Partitionen (über den Export-Konnektor) gelesen und gedruckt werden.

Python
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, "dynamodb.s3.bucket": bucket_name, "dynamodb.s3.prefix": bucket_prefix, "dynamodb.s3.bucketOwner": account_id_of_bucket, } ) print(dyf.getNumPartitions()) job.commit()
Scala
import com.amazonaws.services.glue.GlueContext import com.amazonaws.services.glue.util.GlueArgParser import com.amazonaws.services.glue.util.Job import com.amazonaws.services.glue.util.JsonOptions import com.amazonaws.services.glue.DynamoDbDataSink import org.apache.spark.SparkContext import scala.collection.JavaConverters._ object GlueApp { def main(sysArgs: Array[String]): Unit = { val glueContext = new GlueContext(SparkContext.getOrCreate()) val args = GlueArgParser.getResolvedOptions(sysArgs, Seq("JOB_NAME").toArray) Job.init(args("JOB_NAME"), glueContext, args.asJava) val dynamicFrame = glueContext.getSourceWithFormat( connectionType = "dynamodb", options = JsonOptions(Map( "dynamodb.export" -> "ddb", "dynamodb.tableArn" -> test_source, "dynamodb.s3.bucket" -> bucket_name, "dynamodb.s3.prefix" -> bucket_prefix, "dynamodb.s3.bucketOwner" -> account_id_of_bucket, )) ).getDynamicFrame() print(dynamicFrame.getNumPartitions()) Job.commit() } }

Diese Beispiele zeigen, wie die Anzahl der Partitionen (über den Export-Konnektor) aus einem AWS-Glue-Datenkatalog mit einer dynamodb-Klassifikation gelesen und gedruckt werden.

Python
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) dynamicFrame = glue_context.create_dynamic_frame.from_catalog( database=catalog_database, table_name=catalog_table_name, additional_options={ "dynamodb.export": "ddb", "dynamodb.s3.bucket": s3_bucket, "dynamodb.s3.prefix": s3_bucket_prefix } ) print(dynamicFrame.getNumPartitions()) job.commit()
Scala
import com.amazonaws.services.glue.GlueContext import com.amazonaws.services.glue.util.GlueArgParser import com.amazonaws.services.glue.util.Job import com.amazonaws.services.glue.util.JsonOptions import com.amazonaws.services.glue.DynamoDbDataSink import org.apache.spark.SparkContext import scala.collection.JavaConverters._ object GlueApp { def main(sysArgs: Array[String]): Unit = { val glueContext = new GlueContext(SparkContext.getOrCreate()) val args = GlueArgParser.getResolvedOptions(sysArgs, Seq("JOB_NAME").toArray) Job.init(args("JOB_NAME"), glueContext, args.asJava) val dynamicFrame = glueContext.getCatalogSource( database = catalog_database, tableName = catalog_table_name, additionalOptions = JsonOptions(Map( "dynamodb.export" -> "ddb", "dynamodb.s3.bucket" -> s3_bucket, "dynamodb.s3.prefix" -> s3_bucket_prefix )) ).getDynamicFrame() print(dynamicFrame.getNumPartitions()) )

Vereinfachung der Verwendung einer DynamoDB-Export-JSON

DynamoDB-Exporte mit dem AWS Glue-DynamoDB-Export-Konnektor ergeben JSON-Dateien mit speziellen verschachtelten Strukturen. Weitere Informationen finden Sie unter Datenobjekte. AWS Glue bietet eine DynamicFrame-Transformation, die solche Strukturen in eine einfacher nutzbare Form für nachgelagerte Anwendungen aufheben kann.

Die Transformation kann auf zwei Arten aufgerufen werden. Beim Aufrufen einer Methode zum Lesen aus DynamoDB können Sie die Verbindungsoption "dynamodb.simplifyDDBJson" mit dem Wert "true" festlegen. Sie können die Transformation auch als eigenständige Methode aufrufen, die in der AWS-Glue-Bibliothek verfügbar ist.

Betrachten Sie das folgende Schema, das durch einen DynamoDB-Export generiert wurde:

root |-- Item: struct | |-- parentMap: struct | | |-- M: struct | | | |-- childMap: struct | | | | |-- M: struct | | | | | |-- appName: struct | | | | | | |-- S: string | | | | | |-- packageName: struct | | | | | | |-- S: string | | | | | |-- updatedAt: struct | | | | | | |-- N: string | |-- strings: struct | | |-- SS: array | | | |-- element: string | |-- numbers: struct | | |-- NS: array | | | |-- element: string | |-- binaries: struct | | |-- BS: array | | | |-- element: string | |-- isDDBJson: struct | | |-- BOOL: boolean | |-- nullValue: struct | | |-- NULL: boolean

Die Transformation simplifyDDBJson vereinfacht dies zu:

root |-- parentMap: struct | |-- childMap: struct | | |-- appName: string | | |-- packageName: string | | |-- updatedAt: string |-- strings: array | |-- element: string |-- numbers: array | |-- element: string |-- binaries: array | |-- element: string |-- isDDBJson: boolean |-- nullValue: null
Anmerkung

simplifyDDBJson ist in AWS Glue 3.0 und späteren Versionen verfügbar. Mit der Transformation unnestDDBJson können Sie auch das JSON aus einem DynamoDB-Export vereinfachen. Wir empfehlen Benutzern, von unnestDDBJson auf simplifyDDBJson umzusteigen.

Konfigurieren der Parallelisierung bei DynamoDB-Vorgängen

Um die Leistung zu verbessern, können Sie bestimmte für den DynamoDB-Konnektor verfügbare Parameter anpassen. Ihr Ziel bei der Anpassung der Parallelisierungsparameter ist es, die Nutzung der bereitgestellten AWS-Glue-Worker zu maximieren. Wenn Sie dann mehr Leistung benötigen, empfehlen wir Ihnen, den Auftrag aufzuskalieren, indem Sie die Anzahl der DPUs erhöhen.

Sie können die Parallelisierung in einem DynamoDB-Lesevorgang mit dem Parameter dynamodb.splits ändern, wenn Sie den ETL-Konnektor verwenden. Wenn Sie den Export-Konnektor zum Lesen verwenden, müssen Sie die Anzahl der Splits für die Spark-Executor-Parallelisierung nicht konfigurieren. Sie können die Parallelisierung in einem DynamoDB-Schreibvorgang mit dynamodb.output.numParallelTasks ändern.

Lesen mit dem DynamoDB-ETL-Konnektor

Wir empfehlen Ihnen, die Berechnung von dynamodb.splits auf der Grundlage der in Ihrer Auftragskonfiguration festgelegten maximalen Anzahl von Workern und der folgenden numSlots-Berechnung durchzuführen. Bei einer automatischen Skalierung kann sich die tatsächliche Anzahl verfügbarer Worker unter dieser Obergrenze ändern. Weitere Informationen zur Festlegung der Höchstzahl an Workern finden Sie unter Anzahl der Worker (NumberOfWorkers) inKonfiguration der Auftragseigenschaften für Spark-Jobs in AWS Glue.

  • numExecutors = NumberOfWorkers - 1

    Für den Kontext ist ein Executor für den Spark-Treiber reserviert; andere Executors werden für die Datenverarbeitung verwendet.

  • numSlotsPerExecutor =

    AWS Glue 3.0 and later versions
    • 4 wenn WorkerType gleich G.1X

    • 8 wenn WorkerType gleich G.2X

    • 16 wenn WorkerType gleich G.4X

    • 32 wenn WorkerType gleich G.8X

    AWS Glue 2.0 and legacy versions
    • 8 wenn WorkerType gleich G.1X

    • 16 wenn WorkerType gleich G.2X

  • numSlots = numSlotsPerExecutor * numExecutors

Wir empfehlen Ihnen dynamodb.splits auf die Anzahl der verfügbaren Slots einzustellen, numSlots.

In DynamoDB schreiben

Der Parameter dynamodb.output.numParallelTasks wird verwendet, um die WCU pro Spark-Aufgabe anhand der folgenden Berechnung zu bestimmen:

permittedWcuPerTask = ( TableWCU * dynamodb.throughput.write.percent ) / dynamodb.output.numParallelTasks

Der DynamoDB-Writer funktioniert am besten, wenn die Konfiguration die Anzahl der Spark-Aufgaben, die in DynamoDB schreiben, genau wiedergibt. In manchen Fällen müssen Sie die Standardberechnung außer Kraft setzen, um die Schreibleistung zu verbessern. Wenn Sie diesen Parameter nicht angeben, wird die zulässige WCU pro Spark-Aufgabe automatisch nach der folgenden Formel berechnet:

    • numPartitions = dynamicframe.getNumPartitions()

    • numSlots (wie zuvor in diesem Abschnitt definiert)

    • numParallelTasks = min(numPartitions, numSlots)

  • Beispiel 1. DPU=10, WorkerType=Standard. Input DynamicFrame hat 100 RDD-Partitionen.

    • numPartitions = 100

    • numExecutors = (10 - 1) * 2 - 1 = 17

    • numSlots = 4 * 17 = 68

    • numParallelTasks = min(100, 68) = 68

  • Beispiel 2. DPU=10, WorkerType=Standard. Input DynamicFrame hat 20 RDD-Partitionen.

    • numPartitions = 20

    • numExecutors = (10 - 1) * 2 - 1 = 17

    • numSlots = 4 * 17 = 68

    • numParallelTasks = min(20, 68) = 20

Anmerkung

Aufträge auf älteren AWS-Glue-Versionen und solche, die Standard-Worker verwenden, erfordern unterschiedliche Methoden zur Berechnung der Slot-Anzahl. Wenn Sie die Leistung dieser Aufträge optimieren müssen, empfehlen wir Ihnen, auf unterstützte AWS-Glue-Versionen umzusteigen.

Referenz zur DynamoDB-Verbindungsoption

Bezeichnet eine Verbindung mit Amazon DynamoDB.

Die Anschlussmöglichkeiten bei einer Quellverbindung und eine Senkenverbindung unterscheiden sich.

„connectionType“: „dynamodb“ mit dem ETL-Konnektor als Quelle

Verwenden Sie die folgenden Verbindungsoptionen mit "connectionType": "dynamodb" als Quelle, wenn Sie den AWS-Glue-DynamoDB-ETL-Konnektor verwenden:

  • "dynamodb.input.tableName": (Erforderlich) Die zu lesende DynamoDB-Tabelle.

  • "dynamodb.throughput.read.percent" (optional): Der Prozentsatz der zu verwendenden Lesekapazitätseinheiten (Read Capacity Units, RCU). Der Standard ist auf „0,5“ gesetzt. Zulässigen Werte sind „0,1“ bis „1,5“ inklusive.

    • 0.5 stellt die Standardleserate dar. Dies bedeutet, dass AWS Glue versucht, die Hälfte der Lesekapazität der Tabelle zu verbrauchen. Wenn Sie den Wert über 0.5 anheben, erhöht AWS Glue die Anforderungsrate. Durch Senken des Werts unter 0.5 wird die Leseanforderungsrate verringert. (Die tatsächliche Leserate variiert abhängig von Faktoren wie der Tatsache, ob eine einheitliche Verteilung des Schlüssels in der DynamoDB-Tabelle vorliegt.)

    • Wenn sich die DynamoDB-Tabelle im On-Demand-Modus befindet, legt AWS Glue die Lesekapazität der Tabelle als 40 000 fest. Zum Exportieren einer großen Tabelle empfehlen wir, Ihre DynamoDB-Tabelle in den On-Demand-Modus zu ändern.

  • "dynamodb.splits": (Optional) Definiert die Anzahl der Teile, in die diese DynamoDB-Tabelle beim Lesen partitioniert wird. Der Standard ist auf „1“ gesetzt. Zulässigen Werte sind „1“ bis „1,000,000“ inklusive.

    1 stellt dar, dass es keine Parallelität gibt. Es wird dringend empfohlen, dass Sie einen größeren Wert für eine bessere Leistung angeben, indem Sie die folgende Formel verwenden. Weitere Informationen zur korrekten Einstellung eines Werts finden Sie unter Konfigurieren der Parallelisierung bei DynamoDB-Vorgängen.

  • "dynamodb.sts.roleArn": (Optional) Die IAM-Rolle ARN, die für den kontoübergreifenden Zugriff angenommen werden soll. Dieser Parameter ist ab AWS Glue 1.0 verfügbar.

  • "dynamodb.sts.roleSessionName": (Optional) Name der STS-Sitzung. Die Standardeinstellung ist auf „glue-dynamodb-read-sts-session“ gesetzt. Dieser Parameter ist ab AWS Glue 1.0 verfügbar.

„connectionType“: „dynamodb“ mit dem AWS Glue-DynamoDB-Export-Konnektor als Quelle

Verwenden Sie die folgenden Verbindungsoptionen mit „connectionType“: „dynamodb“ als Quelle, wenn Sie den AWS Glue-DynamoDB-Export-Konnektor verwenden, der nur ab AWS Glue 2.0 verfügbar ist:

  • "dynamodb.export": (Erforderlich) Ein Zeichenfolgenwert:

    • Wenn Sie ddb einstellen, wird der AWS Glue-DynamoDB-Export-Konnektor aktiviert, wobei ein neuer ExportTableToPointInTimeRequest während des AWS Glue-Auftrags aufgerufen wird. Ein neuer Export wird mit dem Speicherort generiert, der von dynamodb.s3.bucket an dynamodb.s3.prefix übergeben wurde.

    • Wenn auf s3 eingestellt, wird der AWS Glue-DynamoDB-Export-Konnektor aktiviert, aber die Erstellung eines neuen DynamoDB-Exports übersprungen. Stattdessen werden dynamodb.s3.bucket und dynamodb.s3.prefix als Amazon-S3-Speicherort eines früheren Exports der Tabelle verwendet.

  • "dynamodb.tableArn": (Erforderlich) Die zu lesende DynamoDB-Tabelle.

  • "dynamodb.unnestDDBJson": (Optional) Standard: falsch. Zulässige Werte: Boolesch. Wenn der Wert auf „true“ festgelegt ist, wird die Verschachtelung der DynamoDB-JSON-Struktur, die in den Exporten vorhanden ist, durch eine Transformation aufgehoben. Es ist ein Fehler, "dynamodb.unnestDDBJson" und "dynamodb.simplifyDDBJson" gleichzeitig auf „true“ zu setzen. In AWS Glue 3.0 und späteren Versionen empfehlen wir die Verwendung von "dynamodb.simplifyDDBJson", um das Verhalten bei der Vereinfachung von DynamoDB-Zuordnungstypen zu verbessern. Weitere Informationen finden Sie unter Vereinfachung der Verwendung einer DynamoDB-Export-JSON.

  • "dynamodb.simplifyDDBJson": (Optional) Standard: falsch. Zulässige Werte: Boolesch. Wenn der Wert auf „true“ festgelegt ist, wird eine Transformation zur Vereinfachung der DynamoDB-JSON-Struktur, die in den Exporten vorhanden ist, durchgeführt. Dies hat den gleichen Zweck wie die Option "dynamodb.unnestDDBJson", bietet jedoch eine bessere Unterstützung für DynamoDB-Zuordnungstypen oder sogar verschachtelte Zuordnungstypen in Ihrer DynamoDB-Tabelle. Diese Option ist in AWS Glue 3.0 und späteren Versionen verfügbar. Es ist ein Fehler, "dynamodb.unnestDDBJson" und "dynamodb.simplifyDDBJson" gleichzeitig auf „true“ zu setzen. Weitere Informationen finden Sie unter Vereinfachung der Verwendung einer DynamoDB-Export-JSON.

  • "dynamodb.s3.bucket": (Optional) Gibt den Speicherort des Amazon S3 Bucket an, in dem der DynamoDB ExportTableToPointInTime-Prozess durchgeführt werden soll. Das Dateiformat für den Export ist DynamoDB JSON.

    • "dynamodb.s3.prefix": (Optional) Gibt den Speicherort des Amazon S3-Präfixes im AmazonS3 Bucket an, in dem die DynamoDB ExportTableToPointInTime-Lasten gespeichert werden sollen. Wenn weder dynamodb.s3.prefix noch dynamodb.s3.bucket angegeben sind, werden diese Werte standardmäßig auf den in der AWS Glue-Auftragskonfiguration angegebenen Speicherort für das temporäre Verzeichnis gesetzt. Weitere Informationen finden Sie unter Spezielle Parameter, die von AWS Glue verwendet werden.

    • "dynamodb.s3.bucketOwner": Zeigt den Bucket-Besitzer an, der für den kontoübergreifenden Amazon-S3-Zugriff benötigt wird.

  • "dynamodb.sts.roleArn": (Optional) Der IAM-Rollen-ARN, der für den kontoübergreifenden Zugriff und/oder den regionsübergreifenden Zugriff auf die DynamoDB-Tabelle übernommen werden soll. Hinweis: Dieselbe IAM-Rolle ARN wird für den Zugriff auf den für die ExportTableToPointInTime-Anfrage angegebenen Amazon S3-Speicherort verwendet.

  • "dynamodb.sts.roleSessionName": (Optional) Name der STS-Sitzung. Die Standardeinstellung ist auf „glue-dynamodb-read-sts-session“ gesetzt.

  • "dynamodb.exportTime": (Optional) Gültige Werte: Zeichenfolgen, die ISO-8601-Instanzen darstellen. Ein Zeitpunkt, zu dem der Export erfolgen soll.

  • "dynamodb.sts.region": (Erforderlich, wenn ein regionsübergreifender Aufruf über einen regionalen Endpunkt getätigt wird). Die Region, in der sich die DynamoDB-Tabelle befindet, die Sie lesen möchten.

„connectionType“: „dynamodb“ mit dem ETL-Konnektor als Senke

Verwenden Sie die folgenden Verbindungsoptionen mit "connectionType": "dynamodb" als Senke:

  • "dynamodb.output.tableName": (Erforderlich) Die DynamoDB-Tabelle, in die geschrieben werden soll.

  • "dynamodb.throughput.write.percent" (optional): Der Prozentsatz der zu verwendenden Schreibkapazitätseinheiten (Write Capacity Units, WCU). Der Standard ist auf „0,5“ gesetzt. Zulässigen Werte sind „0,1“ bis „1,5“ inklusive.

    • 0.5 stellt die Standardschreibrate dar. Dies bedeutet, dass AWS Glue versucht, die Hälfte der Schreibkapazität der Tabelle zu verbrauchen. Wenn Sie den Wert über 0,5 anheben, erhöht AWS Glue die Anforderungsrate. Durch Senken des Werts unter 0,5 wird die Schreibanforderungsrate verringert. (Die tatsächliche Schreibrate variiert abhängig von Faktoren wie der Tatsache, ob eine einheitliche Verteilung des Schlüssels in der DynamoDB-Tabelle vorliegt.)

    • Wenn sich die DynamoDB-Tabelle im On-Demand-Modus befindet, legt AWS Glue die Schreibkapazität der Tabelle als 40000 fest. Zum Importieren einer großen Tabelle empfehlen wir, Ihre DynamoDB-Tabelle in den On-Demand-Modus zu ändern.

  • "dynamodb.output.numParallelTasks": (Optional) definiert, wie viele parallele Aufgaben gleichzeitig in DynamoDB geschrieben werden. Wird verwendet, um berechtigende WCU pro Spark-Aufgabe zu berechnen. In den meisten Fällen berechnet AWS Glue einen angemessenen Standardwert für diesen Wert. Weitere Informationen finden Sie unter Konfigurieren der Parallelisierung bei DynamoDB-Vorgängen.

  • "dynamodb.output.retry": (Optional) Definiert die Anzahl erneuter Versuche, die durchgeführt werden, wenn es eine ProvisionedThroughputExceededException aus DynamoDB gibt. Der Standard ist auf „10“ gesetzt.

  • "dynamodb.sts.roleArn": (Optional) Die IAM-Rolle ARN, die für den kontoübergreifenden Zugriff angenommen werden soll.

  • "dynamodb.sts.roleSessionName": (Optional) Name der STS-Sitzung. Die Standardeinstellung ist auf „glue-dynamodb-write-sts-session“ gesetzt.