Aktifkan kueri federasi lintas akun - Amazon Athena

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

Aktifkan kueri federasi lintas akun

Kueri gabungan memungkinkan Anda untuk menanyakan sumber data selain Amazon S3 menggunakan konektor sumber data yang digunakan. AWS Lambda Fitur kueri federasi lintas akun memungkinkan fungsi Lambda dan sumber data yang akan ditanyakan ditempatkan di akun yang berbeda.

Sebagai administrator data, Anda dapat mengaktifkan kueri federasi lintas akun dengan membagikan konektor data Anda dengan akun analis data atau, sebagai analis data, dengan menggunakan Lambda bersama ARN dari administrator data untuk ditambahkan ke akun Anda. Ketika perubahan konfigurasi dibuat ke konektor di akun asal, konfigurasi yang diperbarui secara otomatis diterapkan ke instance bersama konektor di akun pengguna lain.

Pertimbangan dan batasan

  • Fitur kueri federasi lintas akun tersedia untuk konektor data metastore non-HIVE yang menggunakan sumber data berbasis Lambda.

  • Fitur ini tidak tersedia untuk tipe sumber AWS Glue Data Catalog data. Untuk informasi tentang akses lintas akun ke AWS Glue Data Catalog s, lihatKonfigurasikan akses lintas akun ke AWS Glue katalog data.

  • Jika respons dari fungsi Lambda konektor Anda melebihi batas ukuran respons Lambda sebesar 6MB, Athena secara otomatis mengenkripsi, mengelompokkan, dan menumpahkan respons ke bucket Amazon S3 yang Anda konfigurasikan. Entitas yang menjalankan kueri Athena harus memiliki akses ke lokasi tumpahan agar Athena dapat membaca data yang tumpah. Sebaiknya Anda menetapkan kebijakan siklus hidup Amazon S3 untuk menghapus objek dari lokasi tumpahan karena data tidak diperlukan setelah kueri selesai.

  • Menggunakan kueri federasi di seluruh tidak Wilayah AWS didukung.

Izin yang diperlukan

  • Agar administrator data Akun A berbagi fungsi Lambda dengan analis data Akun B, Akun B memerlukan fungsi pemanggilan Lambda dan akses tumpahan bucket. Oleh karena itu, Akun A harus menambahkan kebijakan berbasis sumber daya ke fungsi Lambda dan akses utama ke bucket tumpahannya di Amazon S3.

    1. Kebijakan berikut memberikan izin fungsi pemanggilan Lambda ke Akun B pada fungsi Lambda di Akun A.

      { "Version": "2012-10-17", "Statement": [ { "Sid": "CrossAccountInvocationStatement", "Effect": "Allow", "Principal": { "AWS": ["arn:aws:iam::account-B-id:user/username"] }, "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:aws-region:account-A-id:function:lambda-function-name" } ] }
    2. Kebijakan berikut memungkinkan akses bucket tumpahan ke prinsipal di Akun B.

      { "Version": "2008-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": ["arn:aws:iam::account-B-id:user/username"] }, "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::spill-bucket", "arn:aws:s3:::spill-bucket/*" ] } ] }
    3. Jika fungsi Lambda mengenkripsi bucket tumpahan dengan AWS KMS kunci, bukan enkripsi default yang ditawarkan oleh federasiSDK, kebijakan AWS KMS kunci di Akun A harus memberikan akses ke pengguna di Akun B, seperti pada contoh berikut.

      { "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": ["arn:aws:iam::account-B-id:user/username"] }, "Action": [ "kms:Decrypt" ], "Resource": "*" // Resource policy that gets placed on the KMS key. }
  • Agar Akun A dapat berbagi konektornya dengan Akun B, Akun B harus membuat peran AthenaCrossAccountCreate-account-A-id yang disebut Akun A mengasumsikan dengan memanggil AssumeRoleAPItindakan Layanan Token AWS Keamanan.

    Kebijakan berikut, yang memungkinkan CreateDataCatalog tindakan, harus dibuat di Akun B dan ditambahkan ke AthenaCrossAccountCreate-account-A-id peran yang dibuat Akun B untuk Akun A.

    { "Effect": "Allow", "Action": "athena:CreateDataCatalog", "Resource": "arn:aws:athena:*:account-B-id:datacatalog/*" }

Berbagi sumber data di Akun A dengan Akun B

Setelah izin diberlakukan, Anda dapat menggunakan halaman Sumber data di konsol Athena untuk berbagi konektor data di akun Anda (Akun A) dengan akun lain (Akun B). Akun A mempertahankan kontrol penuh dan kepemilikan konektor. Ketika Akun A membuat perubahan konfigurasi pada konektor, konfigurasi yang diperbarui berlaku untuk konektor bersama di Akun B.

Untuk berbagi sumber data Lambda di Akun A dengan Akun B
  1. Buka konsol Athena di https://console.aws.amazon.com/athena/.

  2. Jika panel navigasi konsol tidak terlihat, pilih menu ekspansi di sebelah kiri.

    Pilih menu ekspansi.
  3. Pilih Sumber data.

  4. Pada halaman Sumber data, pilih tautan konektor yang ingin Anda bagikan.

  5. Pada halaman detail untuk sumber data Lambda, pilih opsi Bagikan di sudut kanan atas.

    Pilih Bagikan.
  6. Di Share Lambda-name dengan kotak dialog akun lain, masukkan informasi yang diperlukan.

    • Untuk nama sumber data, masukkan nama sumber data yang disalin seperti yang Anda inginkan muncul di akun lain.

    • Untuk ID Akun, masukkan ID akun yang ingin Anda bagikan sumber data Anda (dalam hal ini, Akun B).

    Masukkan nama sumber data dan Akun AWS ID.
  7. Pilih Bagikan. Konektor data bersama yang Anda tentukan dibuat di Akun B. perubahan konfigurasi ke konektor di Akun A berlaku untuk konektor di Akun B.

Menambahkan sumber data bersama dari Akun A ke Akun B

Sebagai analis data, Anda mungkin diberikan konektor untuk ditambahkan ke akun Anda dari administrator data. ARN Anda dapat menggunakan halaman Sumber data konsol Athena untuk menambahkan Lambda yang ARN disediakan oleh administrator ke akun Anda.

Untuk menambahkan Lambda ARN konektor data bersama ke akun Anda
  1. Buka konsol Athena di https://console.aws.amazon.com/athena/.

  2. Jika Anda menggunakan pengalaman konsol baru dan panel navigasi tidak terlihat, pilih menu ekspansi di sebelah kiri.

  3. Pilih Sumber data.

  4. Pada halaman Sumber data, pilih Connect data source.

    PilihConnect sumber.
  5. Pilih Konektor khusus atau bersama.

    Pilih Konektor khusus atau bersama.
  6. Di bagian fungsi Lambda, pastikan bahwa opsi Gunakan fungsi Lambda yang ada dipilih.

    Menentukan ARN Lambda dari akun lain.
  7. Untuk Pilih atau masukkan fungsi Lambda, masukkan ARN Lambda Akun A.

  8. PilihConnect sumber.

Pemecahan Masalah

Jika Anda menerima pesan galat bahwa Akun A tidak memiliki izin untuk mengambil peran di Akun B, pastikan bahwa nama peran yang dibuat di Akun B dieja dengan benar dan bahwa itu memiliki kebijakan yang sesuai dilampirkan.