Menyiapkan akses ke bucket Amazon S3 - Layanan Basis Data Relasional Amazon

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menyiapkan akses ke bucket Amazon S3

Untuk mengimpor data dari file Amazon S3, berikan SQLizin instans Postgre untuk mengakses bucket Amazon S3 yang berisi file tersebut. Berikan akses ke bucket Amazon S3 dengan satu dari dua cara, seperti yang dijelaskan dalam topik berikut.

Menggunakan IAM peran untuk mengakses bucket Amazon S3

Sebelum Anda memuat data dari file Amazon S3, berikan SQLizin instans Postgre RDS untuk Postgre DB untuk mengakses bucket Amazon S3 tempat file tersebut berada. Dengan cara ini, Anda tidak perlu mengelola informasi kredensial tambahan atau menyediakannya di panggilan fungsi aws_s3.table_import_from_s3.

Untuk melakukannya, buat IAM kebijakan yang menyediakan akses ke bucket Amazon S3. Buat IAM peran dan lampirkan kebijakan ke peran tersebut. Kemudian tetapkan IAM peran tersebut ke instance DB Anda.

Untuk memberikan untuk SQL akses instans Postgre DB ke Amazon S3 melalui peran IAM
  1. Buat IAM kebijakan.

    Kebijakan ini menyediakan izin bucket dan objek yang memungkinkan RDSklaster mengakses Amazon S3.

    Sertakan dalam kebijakan tindakan yang diperlukan berikut untuk mengizinkan transfer file dari bucket Amazon S3 ke Postgre Amazon: SQL RDS

    • s3:GetObject

    • s3:ListBucket

    Sertakan sumber daya berikut dalam kebijakan untuk mengidentifikasi bucket dan objek Amazon S3 dalam bucket. Ini menunjukkan format Amazon Resource Name (ARN) untuk mengakses Amazon S3.

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

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

    Untuk informasi lebih lanjut tentang membuat IAM kebijakan untuk , lihat. SQL Membuat dan menggunakan kebijakan IAM untuk akses basis data IAM Lihat juga Tutorial: Buat dan lampirkan kebijakan terkelola pelanggan pertama Anda di Panduan IAM Pengguna.

    AWS CLI Perintah berikut membuat IAM kebijakan bernama rds-s3-import-policy dengan opsi ini. Ini memberikan akses ke ember bernama amzn-s3-demo-bucket.

    catatan

    Catat Amazon Resource Name (ARN) kebijakan yang dikembalikan oleh perintah ini. Anda memerlukan langkah berikutnya ketika Anda melampirkan kebijakan ke suatu IAM peran. ARN

    contoh

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

    Untuk 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. Buat IAM peran.

    Anda melakukan ini sehingga Amazon dapat mengambil peran IAM ini untuk mengakses ember Amazon S3 Anda. Untuk informasi selengkapnya, lihat Membuat peran untuk mendelegasikan izin kepada IAM pengguna di Panduan IAM Pengguna.

    Sebaiknya gunakan kunci konteks kondisi global aws:SourceArn dan aws:SourceAccount dalam kebijakan berbasis sumber daya untuk membatasi izin layanan ke sumber daya tertentu. Ini adalah cara paling efektif untuk melindungi dari masalah deputi yang membingungkan.

    Jika Anda menggunakan kunci konteks kondisi global dan nilai aws:SourceArn berisi ID akun, nilai aws:SourceAccount dan akun dalam nilai aws:SourceArn harus menggunakan ID akun yang sama saat digunakan dalam pernyataan kebijakan yang sama.

    • Gunakan aws:SourceArn jika Anda menginginkan akses lintas layanan untuk satu sumber daya.

    • Gunakan aws:SourceAccount jika Anda ingin mengizinkan sumber daya apa pun di akun tersebut dikaitkan dengan penggunaan lintas layanan.

    Dalam kebijakan, pastikan untuk menggunakan kunci konteks kondisi aws:SourceArn global dengan penuh ARN sumber daya. Contoh berikut menunjukkan bagaimana melakukannya menggunakan AWS CLI perintah untuk membuat peran bernamards-s3-import-role.

    contoh

    Untuk Linux, macOS, atau 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" } } } ] }'

    Untuk 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. Lampirkan IAM kebijakan yang Anda buat ke IAM peran yang Anda buat.

    AWS CLI Perintah berikut melampirkan kebijakan yang dibuat pada langkah sebelumnya ke peran bernama rds-s3-import-role Ganti your-policy-arn dengan kebijakan ARN yang Anda catat di langkah sebelumnya.

    contoh

    Untuk Linux, macOS, atau Unix:

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

    Untuk Windows:

    aws iam attach-role-policy ^ --policy-arn your-policy-arn ^ --role-name rds-s3-import-role
  4. Tambahkan IAM peran ke instance DB.

    Anda melakukannya dengan menggunakan AWS Management Console atau AWS CLI, seperti yang dijelaskan berikut.

Untuk menambahkan IAM peran untuk instance Postgre SQL DB menggunakan konsol
  1. Masuk ke AWS Management Console dan buka RDS konsol Amazon di https://console.aws.amazon.com/rds/.

  2. Pilih nama instance Postgre SQL DB untuk menampilkan detailnya.

  3. Pada tab Konektivitas & keamanan, di bagian Kelola IAM peran, pilih peran yang akan ditambahkan di bawah Tambahkan IAM peran ke instance ini.

  4. Di bagian Fitur, pilih s3Import.

  5. Pilih Tambahkan peran.

Untuk menambahkan IAM peran untuk instance Postgre SQL DB menggunakan CLI
  • Gunakan perintah berikut untuk menambahkan peran ke instance Postgre SQL DB bernama. my-db-instance Ganti your-role-arn dengan peran ARN yang Anda catat di langkah sebelumnya. Gunakan s3Import untuk nilai opsi --feature-name.

    contoh

    Untuk Linux, macOS, atau 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

    Untuk 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

Untuk menambahkan IAM peran untuk instance Postgre SQL DB menggunakan Amazon RDSAPI, panggil operasi.

Menggunakan kredensial rahasia untuk mengakses bucket Amazon S3

Jika mau, Anda dapat menggunakan kredensil keamanan untuk menyediakan akses ke bucket Amazon S3 alih-alih menyediakan akses dengan peran. IAM Anda melakukannya dengan menentukan parameter credentials dalam panggilan fungsi aws_s3.table_import_from_s3.

credentialsParameter adalah struktur tipeaws_commons._aws_credentials_1, yang berisi AWS kredensil. Gunakan fungsi aws_commons.create_aws_credentials untuk mengatur kunci akses dan kunci rahasia dalam struktur aws_commons._aws_credentials_1, seperti yang ditunjukkan berikut ini.

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

Setelah membuat struktur aws_commons._aws_credentials_1 , gunakan fungsi aws_s3.table_import_from_s3 yang dengan parameter credentials untuk mengimpor data, seperti yang ditunjukkan berikut.

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

Atau Anda dapat menyertakan panggilan fungsi aws_commons.create_aws_credentials sebaris dalam panggilan fungsi 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', '') );

Memecahkan masalah akses ke Amazon S3

Jika Anda mengalami masalah koneksi saat mencoba mengimpor data dari Amazon S3, lihat rekomendasi berikut: