Configurazione dell'accesso a un bucket Simple Storage Service (Amazon S3) - Amazon Relational Database Service

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Configurazione dell'accesso a un bucket Simple Storage Service (Amazon S3)

Per importare dati da un file Amazon S3, concedi al l'SQLautorizzazione ad accedere al bucket Amazon S3 contenente il file. Puoi concedere l'accesso a un bucket Amazon S3 in uno dei due modi descritti negli argomenti seguenti.

Utilizzo di un IAM ruolo per accedere a un bucket Amazon S3

Prima di caricare i dati da un file Amazon S3, concedi al l'SQLautorizzazione ad accedere al bucket Amazon S3 in cui si trova il file. In questo modo non dovrai gestire ulteriori informazioni sulle credenziali né fornirle nella chiamata della funzione aws_s3.table_import_from_s3.

A tale scopo, crea una IAM policy che fornisca l'accesso al bucket Amazon S3. Crea un IAM ruolo e associa la policy al ruolo. Quindi assegna il IAM ruolo all'istanza DB.

Fornire a un l'accesso ad Amazon S3 tramite un ruolo IAM
  1. Crea IAM una policy.

    Questa policy fornisce le autorizzazioni per bucket e oggetti che consentono al di accedere ad Amazon S3 SQL.

    • s3:GetObject

    • s3:ListBucket

    Includere nella policy le seguenti risorse per identificare il bucket Amazon S3 e gli oggetti nel bucket. Questo mostra il formato Amazon Resource Name (ARN) per accedere ad Amazon S3.

    • arn:aws:s3:::amzn-s3-demo-bucket

    • arn:aws:s3:::amzn-s3-demo-bucket/*

    Per ulteriori informazioni sulla creazione di una IAM politica per , vedere. SQL Creazione e utilizzo di una policy IAM per l'accesso al database IAM Vedi anche Tutorial: Crea e allega la tua prima politica gestita dai clienti nella Guida per l'utente. IAM

    Il AWS CLI comando seguente crea una IAM politica denominata rds-s3-import-policy con queste opzioni. Garantisce l'accesso a un bucket denominato amzn-s3-demo-bucket.

    Nota

    Prendi nota dell'Amazon Resource Name (ARN) della policy restituita da questo comando. Ti servirà ARN in un passaggio successivo quando associ la policy a un IAM ruolo.

    Esempio

    In Linux, macOS, oppure 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/*" ] } ] }'

    In 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/*" ] } ] }'
  2. Crea un IAM ruolo.

    Lo fai in modo che Amazon possa assumere IAM questo ruolo per accedere ai tuoi bucket Amazon S3. Per ulteriori informazioni, consulta Creazione di un ruolo per delegare le autorizzazioni a un utente nella Guida per l'utente. IAM IAM

    Si consiglia di utilizzare le chiavi di contesto delle condizioni globali aws:SourceArn e aws:SourceAccount nelle policy basate sulle risorse per limitare le autorizzazioni del servizio a una risorsa specifica. Questo è il modo più efficace per proteggersi dal problema di deputy confused.

    Se si utilizzano entrambe le chiavi di contesto delle condizioni globali e il valore aws:SourceArn contiene l'ID account, il valore aws:SourceAccount e l’account nel valore aws:SourceArn devono utilizzare lo stesso ID account quando viene utilizzato nella stessa dichiarazione di policy.

    • Utilizzare aws:SourceArn se si desidera un accesso cross-service per una singola risorsa.

    • Utilizzare aws:SourceAccount se si desidera consentire l'associazione di qualsiasi risorsa in tale account all'uso cross-service.

    Nella policy, assicurati di utilizzare la chiave di contesto della condizione aws:SourceArn globale con l'intera ARN risorsa. L'esempio seguente mostra come eseguire questa operazione utilizzando il AWS CLI comando per creare un ruolo denominatords-s3-import-role.

    Esempio

    In Linux, macOS, oppure 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:db:dbname" } } } ] }'

    In 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:db:dbname" } } } ] }'
  3. Allega la IAM politica che hai creato al IAM ruolo che hai creato.

    Il AWS CLI comando seguente associa la politica creata nel passaggio precedente al ruolo denominato rds-s3-import-role Replace your-policy-arn con la politica ARN annotato in un passaggio precedente.

    Esempio

    In Linux, macOS, oppure Unix:

    aws iam attach-role-policy \ --policy-arn your-policy-arn \ --role-name rds-s3-import-role

    In Windows:

    aws iam attach-role-policy ^ --policy-arn your-policy-arn ^ --role-name rds-s3-import-role
  4. Aggiungere il IAM ruolo all'istanza del DB.

    A tale scopo, utilizzare AWS Management Console o AWS CLI, come descritto di seguito.

Per aggiungere un IAM ruolo per un'istanza del Postgree SQL DB utilizzando la console
  1. Accedi a AWS Management Console e apri la RDS console Amazon all'indirizzo https://console.aws.amazon.com/rds/.

  2. Scegli il nome dell'istanza del Postgre SQL DB per visualizzarne i dettagli.

  3. Nella scheda Connettività e sicurezza, nella sezione Gestisci IAM ruoli, scegli il ruolo da aggiungere in Aggiungi IAM ruoli a questa istanza .

  4. In Feature (Caratteristica), scegliere s3Import.

  5. Scegliere Add role (Aggiungi ruolo).

Per aggiungere un IAM ruolo per un'istanza SQL DB Postgre utilizzando il CLI
  • Usa il comando seguente per aggiungere il ruolo all'istanza DB di Postgre denominata. SQL my-db-instance Replace (Sostituisci) your-role-arn con il ruolo ARN che hai annotato in un passaggio precedente. Utilizzare s3Import come valore dell'opzione --feature-name.

    Esempio

    In Linux, macOS, oppure Unix:

    aws rds add-role-to-db-instance \ --db-instance-identifier my-db-instance \ --feature-name s3Import \ --role-arn your-role-arn \ --region your-region

    In Windows:

    aws rds add-role-to-db-instance ^ --db-instance-identifier my-db-instance ^ --feature-name s3Import ^ --role-arn your-role-arn ^ --region your-region

Per aggiungere un IAM ruolo per un'istanza del Postgre SQL DB utilizzando Amazon RDSAPI, chiama l'operazione.

Utilizzo delle credenziali di sicurezza per accedere a un bucket Amazon S3

Se preferisci, puoi utilizzare le credenziali di sicurezza per fornire l'accesso a un bucket Amazon S3 anziché fornire l'accesso con un ruolo. IAM A tale scopo, specifica il parametro credentials nella chiamata di funzione aws_s3.table_import_from_s3.

Il credentials parametro è una struttura di tipo che contiene le aws_commons._aws_credentials_1 credenziali. AWS Utilizzare la funzione aws_commons.create_aws_credentials per impostare la chiave di accesso e la chiave segreta in una struttura aws_commons._aws_credentials_1, come illustrato di seguito.

postgres=> SELECT aws_commons.create_aws_credentials( 'sample_access_key', 'sample_secret_key', '') AS creds \gset

Dopo aver creato la struttura aws_commons._aws_credentials_1 , utilizzare la funzione aws_s3.table_import_from_s3 con il parametro credentials per importare i dati, come illustrato di seguito.

postgres=> SELECT aws_s3.table_import_from_s3( 't', '', '(format csv)', :'s3_uri', :'creds' );

Oppure si può includere la chiamata inline di funzione aws_commons.create_aws_credentials all'interno della chiamata di funzione aws_s3.table_import_from_s3.

postgres=> SELECT aws_s3.table_import_from_s3( 't', '', '(format csv)', :'s3_uri', aws_commons.create_aws_credentials('sample_access_key', 'sample_secret_key', '') );

Risoluzione dei problemi di accesso a Amazon S3

Se riscontri problemi di connessione quanto tenti di importare i dati da Amazon S3, segui questi suggerimenti: