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, beri izin instans DB RDS for PostgreSQL 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.
Topik
Menggunakan peran IAM untuk mengakses bucket Amazon S3
Sebelum Anda memuat data dari file Amazon S3, beri izin instans DB RDS for PostgreSQL untuk mengakses bucket Amazon S3 tempat file 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 kebijakan IAM yang memberikan akses ke bucket Amazon S3. Buat peran IAM lampirkan kebijakan ke peran tersebut. Kemudian, tetapkan peran IAM ke instans DB Anda.
Untuk memberikan instans DB RDS for PostgreSQL akses ke Amazon S3 melalui peran IAM
-
Buat kebijakan IAM.
Kebijakan ini memberi bucket dan objek izin yang memungkinkan instans DB RDS for PostgreSQL Anda mengakses Amazon S3.
Sertakan tindakan yang diperlukan berikut dalam kebijakan untuk mengizinkan transfer file dari bucket Amazon S3 ke Amazon 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 selengkapnya tentang cara membuat kebijakan IAM untuk RDS for PostgreSQL, lihat Membuat dan menggunakan kebijakan IAM untuk akses basis data IAM. Lihat juga Tutorial: Membuat dan melampirkan kebijakan yang dikelola pelanggan pertama Anda di Panduan Pengguna IAM.
AWS CLI Perintah berikut membuat kebijakan IAM bernama
rds-s3-import-policy
dengan opsi ini. Perintah ini akan memberikan akses ke bucket bernamaamzn-s3-demo-bucket
.catatan
Catat Amazon Resource Name (ARN) dari kebijakan yang ditampilkan oleh perintah ini. Anda memerlukan ARN di langkah berikutnya saat Anda melampirkan kebijakan ke peran IAM.
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
/*" ] } ] }' -
-
Buat peran IAM.
Anda melakukan ini sehingga Amazon RDS dapat mengambil peran IAM ini untuk mengakses bucket Amazon S3 Anda. Untuk informasi selengkapnya, lihat Membuat peran untuk mendelegasikan izin ke pengguna IAM dalam Panduan Pengguna IAM.
Sebaiknya gunakan kunci konteks kondisi global
aws:SourceArn
danaws: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, nilaiaws:SourceAccount
dan akun dalam nilaiaws: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 global
aws:SourceArn
dengan ARN penuh sumber daya. Contoh berikut menunjukkan bagaimana melakukannya dengan 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
" } } } ] }' -
Lampirkan kebijakan IAM yang Anda buat pada peran IAM yang Anda buat.
AWS CLI Perintah berikut melampirkan kebijakan yang dibuat pada langkah sebelumnya ke peran bernama
rds-s3-import-role
Ganti
dengan ARN kebijakan yang Anda catat di langkah sebelumnya.your-policy-arn
contoh
Untuk Linux, macOS, atau Unix:
aws iam attach-role-policy \ --policy-arn
your-policy-arn
\ --role-name rds-s3-import-roleUntuk Windows:
aws iam attach-role-policy ^ --policy-arn
your-policy-arn
^ --role-name rds-s3-import-role -
Tambahkan peran IAM ke instans DB.
Anda melakukannya dengan menggunakan AWS Management Console atau AWS CLI, seperti yang dijelaskan berikut.
Untuk menambahkan peran IAM untuk instans DB PostgreSQL menggunakan konsol
Masuk ke AWS Management Console dan buka konsol Amazon RDS di https://console.aws.amazon.com/rds/
. -
Pilih nama instans DB PostgreSQL untuk menampilkan detailnya.
-
Di tab Konektivitas & keamanan, di bagian Kelola peran IAM, pilih peran yang akan ditambahkan pada bagian Tambahkan peran IAM ke instans ini.
-
Di bagian Fitur, pilih s3Import.
-
Pilih Tambahkan peran.
Untuk menambahkan peran IAM untuk instans DB PostgreSQL menggunakan CLI
-
Gunakan perintah berikut untuk menambahkan peran ke instans DB PostgreSQL bernama
my-db-instance
. Ganti
dengan ARN peran yang Anda catat pada langkah sebelumnya. Gunakanyour-role-arn
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-arnyour-role-arn
\ --regionyour-region
Untuk Windows:
aws rds add-role-to-db-instance ^ --db-instance-identifier
my-db-instance
^ --feature-name s3Import ^ --role-arnyour-role-arn
^ --regionyour-region
Untuk menambahkan peran IAM untuk instance PostgreSQL DB menggunakan Amazon RDS API, panggil operasi.
Menggunakan kredensial rahasia untuk mengakses bucket Amazon S3
Jika ingin, Anda dapat menggunakan kredensial rahasia untuk memberikan akses ke bucket Amazon S3, alih-alih memberikan akses ke peran IAM. Anda melakukannya dengan menentukan parameter credentials
dalam panggilan fungsi aws_s3.table_import_from_s3.
credentials
Parameternya adalah struktur tipeaws_commons._aws_credentials_1
, yang berisi AWS kredensyal. 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:
-
Memecahkan Masalah Amazon S3 di Panduan Pengguna Amazon Simple Storage Service
-
Memecahkan Masalah Amazon S3 dan IAM di Panduan Pengguna IAM