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.
Einrichten des Zugriffs auf einen Amazon S3-Bucket
Um Daten aus einer Amazon S3 S3-Datei zu importieren, erteilen Sie dem Aurora SQL Postgre-DB-Cluster RDS die Erlaubnis, auf den Amazon S3 S3-Bucket zuzugreifen, der die Datei enthält. Sie können den Zugriff auf einen Amazon S3-Bucket auf zwei Arten erlaubt, wie in den folgenden Themen beschrieben.
Themen
Verwenden einer IAM Rolle für den Zugriff auf einen Amazon S3 S3-Bucket
Bevor Sie Daten aus einer Amazon S3 S3-Datei laden, erteilen Sie Ihrem Aurora SQL Postgre-DB-Cluster RDS für die SQL Postgre-DB-Instance Erlaubnis, auf den Amazon S3 S3-Bucket zuzugreifen, in dem sich die Datei befindet. Auf diese Weise müssen Sie keine zusätzlichen Anmeldeinformationen verwalten oder im aws_s3.table_import_from_s3-Funktionsaufruf angeben.
Erstellen Sie dazu eine IAM Richtlinie, die Zugriff auf den Amazon S3 S3-Bucket gewährt. Erstellen Sie eine IAM Rolle und fügen Sie die Richtlinie der Rolle hinzu. Weisen Sie die IAM Rolle dann Ihrer zu.
Anmerkung
Sie können eine IAM Rolle nicht mit einem verknüpfen Aurora Serverless v1 DB-Cluster, sodass die folgenden Schritte nicht zutreffen.
Um einem Aurora SQL Postgre-DB-Cluster RDS über eine Rolle Zugriff auf Amazon S3 zu gewähren IAM
-
Erstellen Sie eine RichtlinieIAM.
Diese Richtlinie stellt die Bucket- und Objektberechtigungen bereit, die Ihrem Aurora SQL Postgre-DB-Cluster RDS den Zugriff auf Amazon S3 ermöglichen.
Nehmen Sie in die Richtlinie die folgenden erforderlichen Aktionen auf, um die Übertragung von Dateien von einem Amazon S3 S3-Bucket nach Aurora Postgre SQL zu ermöglichen:
-
s3:GetObject
-
s3:ListBucket
Nehmen Sie die folgenden Ressourcen in die Richtlinie auf, um den Amazon S3-Bucket und Objekte im Bucket zu identifizieren. Dies zeigt das Format Amazon Resource Name (ARN) für den Zugriff auf Amazon S3.
-
arn:aws:s3:::
amzn-s3-demo-bucket
-
arn:aws:s3:::
amzn-s3-demo-bucket
/*
Weitere Informationen zum Erstellen einer IAM Richtlinie für Aurora Postgre SQL finden Sie SQL unter. Erstellen und Verwenden einer IAM-Richtlinie für den IAM-Datenbankzugriff Siehe auch Tutorial: Erstellen Sie Ihre erste vom Kunden verwaltete Richtlinie und fügen Sie sie als Anlage hinzu im IAMBenutzerhandbuch.
Mit dem folgenden AWS CLI Befehl wird eine IAM Richtlinie
rds-s3-import-policy
mit diesen Optionen erstellt. Er gewährt Zugriff auf einen Bucket mit dem Namenamzn-s3-demo-bucket
.Anmerkung
Notieren Sie sich den Amazon-Ressourcennamen (ARN) der Richtlinie, die von diesem Befehl zurückgegeben wurde. Sie benötigen den ARN in einem nachfolgenden Schritt, wenn Sie die Richtlinie an eine IAM Rolle anhängen.
Beispiel
Wählen Sie in der &Snowconsole; Ihren Auftrag aus der Tabelle. Linux, macOS, oder Unix:
aws iam create-policy \ --policy-name rds-s3-import-policy \ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "s3import", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::
amzn-s3-demo-bucket
", "arn:aws:s3:::amzn-s3-demo-bucket
/*" ] } ] }'Wählen Sie in der &Snowconsole; Ihren Auftrag aus der Tabelle. Windows:
aws iam create-policy ^ --policy-name rds-s3-import-policy ^ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "s3import", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::
amzn-s3-demo-bucket
", "arn:aws:s3:::amzn-s3-demo-bucket
/*" ] } ] }' -
-
Erstellen Sie eine IAM Rolle.
Sie tun dies, damit Aurora Postgre SQL diese IAM Rolle für den Zugriff auf Ihre Amazon S3 S3-Buckets übernehmen RDS kann. Weitere Informationen finden Sie im Benutzerhandbuch unter Erstellen einer Rolle zur Delegierung von Berechtigungen an einen IAM Benutzer. IAM
Wir empfehlen die Verwendung der globalen Bedingungskontextschlüssel
aws:SourceArn
undaws:SourceAccount
in ressourcenbasierten Richtlinien, um die Berechtigungen des Services auf eine bestimmte Ressource zu beschränken. Dies ist der effektivste Weg, um sich vor dem verwirrtes Stellvertreterproblem zu schützen.Wenn Sie sowohl globale Kontextschlüssel nutzen und der
aws:SourceArn
-Wert enthält die Konto-ID, muss deraws:SourceAccount
-Wert und das Konto imaws:SourceArn
-Wert die gleiche Konto-ID verwenden, wenn er in der gleichen Richtlinienanweisung verwendet wird.Verwenden von
aws:SourceArn
wenn Sie einen serviceübergreifenden Zugriff für eine einzelne Ressource wünschen.-
Verwenden von
aws:SourceAccount
wenn Sie zulassen möchten, dass eine Ressource in diesem Konto mit der betriebsübergreifenden Verwendung verknüpft wird.
Achten Sie in der Richtlinie darauf, den
aws:SourceArn
globalen Bedingungskontextschlüssel mit ARN der gesamten Ressource zu verwenden. Das folgende Beispiel zeigt, wie Sie dazu den AWS CLI Befehl verwenden, um eine Rolle mit dem Namen zu erstellenrds-s3-import-role
.Beispiel
Wählen Sie in der &Snowconsole; Ihren Auftrag aus der Tabelle. Linux, macOS, oder Unix:
aws iam create-role \ --role-name rds-s3-import-role \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "
111122223333
", "aws:SourceArn": "arn:aws:rds:us-east-1:111122223333:cluster:clustername
" } } } ] }'Wählen Sie in der &Snowconsole; Ihren Auftrag aus der Tabelle. Windows:
aws iam create-role ^ --role-name rds-s3-import-role ^ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "
111122223333
", "aws:SourceArn": "arn:aws:rds:us-east-1:111122223333:cluster:clustername
" } } } ] }' -
Ordnen Sie die IAM Richtlinie, die Sie erstellt haben, der IAM Rolle zu, die Sie erstellt haben.
Mit dem folgenden AWS CLI Befehl wird die im vorherigen Schritt erstellte Richtlinie der Rolle
rds-s3-import-role
Replace
mit der Richtlinie hinzugefügtARN, die Sie in einem früheren Schritt notiert haben.your-policy-arn
Beispiel
Wählen Sie in der &Snowconsole; Ihren Auftrag aus der Tabelle. Linux, macOS, oder Unix:
aws iam attach-role-policy \ --policy-arn
your-policy-arn
\ --role-name rds-s3-import-roleWählen Sie in der &Snowconsole; Ihren Auftrag aus der Tabelle. Windows:
aws iam attach-role-policy ^ --policy-arn
your-policy-arn
^ --role-name rds-s3-import-role -
Fügen Sie die IAM Rolle der hinzu.
Sie tun dies, indem Sie das AWS Management Console oder verwenden AWS CLI, wie im Folgenden beschrieben.
Um mithilfe der Konsole eine IAM Rolle für eine SQL hinzuzufügen
Melden Sie sich bei der an AWS Management Console und öffnen Sie die RDS Amazon-Konsole unter https://console.aws.amazon.com/rds/
. -
Wählen Sie den Namen der SQL , um deren Details anzuzeigen.
-
Wählen Sie auf der Registerkarte Konnektivität und Sicherheit im Abschnitt IAMRollen verwalten unter Rollen zu dieser hinzufügen die Rolle aus, die hinzugefügt IAM werden soll.
-
Wählen Sie unter Feature (Funktion) die Option s3Import aus.
-
Wählen Sie Rolle hinzufügen.
Um eine IAM Rolle für einen SQL Postgre-DB-Cluster hinzuzufügen, verwenden Sie CLI
-
Verwenden Sie den folgenden Befehl, um die Rolle dem SQL Postgre-DB-Cluster mit dem Namen hinzuzufügen.
my-db-cluster
Ersetzen
mit der RolleARN, die Sie in einem vorherigen Schritt notiert haben. Verwenden Sieyour-role-arn
s3Import
für den Wert der--feature-name
-Option.Beispiel
Wählen Sie in der &Snowconsole; Ihren Auftrag aus der Tabelle. Linux, macOS, oder Unix:
aws rds add-role-to-db-cluster \ --db-cluster-identifier
my-db-cluster
\ --feature-name s3Import \ --role-arnyour-role-arn
\ --regionyour-region
Wählen Sie in der &Snowconsole; Ihren Auftrag aus der Tabelle. Windows:
aws rds add-role-to-db-cluster ^ --db-cluster-identifier
my-db-cluster
^ --feature-name s3Import ^ --role-arnyour-role-arn
^ --regionyour-region
Um eine IAM Rolle für eine SQL mithilfe von Amazon hinzuzufügen RDSAPI, rufen Sie den AddRoleToDBClusterVorgang auf.
Verwenden von Sicherheitsanmeldeinformationen für den Zugriff auf einen Amazon S3-Bucket
Wenn Sie möchten, können Sie Sicherheitsanmeldedaten verwenden, um Zugriff auf einen Amazon S3 S3-Bucket zu gewähren, anstatt den Zugriff mit einer IAM Rolle zu gewähren. Dazu geben Sie die credentials
-Parameter im aws_s3.table_import_from_s3-Funktionsaufruf an.
Der credentials
Parameter ist eine Struktur vom Typaws_commons._aws_credentials_1
, die AWS Anmeldeinformationen enthält. Verwenden Sie die Funktion aws_commons.create_aws_credentials, um den Zugriffs- und den Geheimschlüssel in einer aws_commons._aws_credentials_1
-Struktur festzulegen, wie nachfolgend dargestellt.
postgres=>
SELECT aws_commons.create_aws_credentials( 'sample_access_key
', 'sample_secret_key
', '') AS creds \gset
Nachdem Sie die aws_commons._aws_credentials_1
-Struktur erstellt haben, verwenden Sie die Funktion aws_s3.table_import_from_s3 mit dem Parameter credentials
, um die Daten zu importieren, wie nachfolgend gezeigt.
postgres=>
SELECT aws_s3.table_import_from_s3( 't', '', '(format csv)', :'s3_uri', :'creds' );
Sie können auch den Funktionsaufruf aws_commons.create_aws_credentials in den Funktionsaufruf aws_s3.table_import_from_s3
einbinden.
postgres=>
SELECT aws_s3.table_import_from_s3( 't', '', '(format csv)', :'s3_uri', aws_commons.create_aws_credentials('sample_access_key
', 'sample_secret_key
', '') );
Fehlerbehebung beim Zugriff auf Amazon S3
Wenn Sie beim Versuch, Daten aus Amazon S3 zu importieren, auf Verbindungsprobleme stoßen, finden Sie im Folgenden Empfehlungen:
-
Fehlerbehebung bei Amazon S3 im Entwicklerhandbuch für Amazon Simple Storage Service
-
Problembehebung bei Amazon S3 und IAM im IAMBenutzerhandbuch