Mengakses lintas akun AWS sumber daya di Step Functions - AWS Step Functions

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

Mengakses lintas akun AWS sumber daya di Step Functions

Dengan dukungan akses lintas akun di Step Functions, Anda dapat berbagi sumber daya yang dikonfigurasi dengan cara yang berbeda Akun AWS. Dalam tutorial ini, kami memandu Anda melalui proses mengakses fungsi Lambda lintas akun yang didefinisikan dalam akun yang disebut Produksi. Fungsi ini dipanggil dari mesin negara dalam akun yang disebut Pengembangan. Dalam tutorial ini, akun Pengembangan disebut sebagai akun sumber dan akun Produksi adalah akun target yang berisi IAM peran target.

Untuk memulai, dalam definisi Task status Anda, Anda menentukan IAM peran target yang harus diasumsikan oleh mesin status sebelum menjalankan fungsi Lambda lintas akun. Kemudian, ubah kebijakan kepercayaan dalam IAM peran target untuk memungkinkan akun sumber untuk mengambil peran target sementara. Juga, untuk memanggil AWS sumber daya, tentukan izin yang sesuai dalam IAM peran target. Terakhir, perbarui peran eksekusi akun sumber untuk menentukan izin yang diperlukan untuk mengambil peran target.

Anda dapat mengonfigurasi mesin status Anda untuk mengambil IAM peran untuk mengakses sumber daya dari beberapa Akun AWS. Namun, mesin negara hanya dapat mengambil satu IAM peran pada waktu tertentu berdasarkan definisi Task negara.

catatan

Saat ini, Lintas wilayah AWS SDKintegrasi dan lintas wilayah AWS akses sumber daya tidak tersedia di Step Functions.

Prasyarat

  • Tutorial ini menggunakan contoh fungsi Lambda untuk menunjukkan cara mengatur akses lintas akun. Anda dapat menggunakan yang lain AWS sumber daya, tetapi pastikan Anda telah mengonfigurasi sumber daya di akun yang berbeda.

    penting

    IAMperan dan kebijakan berbasis sumber daya mendelegasikan akses di seluruh akun hanya dalam satu partisi. Misalnya, anggap Anda memiliki akun di AS Barat (N. California) dalam partisi aws standar. Anda juga memiliki akun di Tiongkok (Beijing) dalam partisi aws-cn. Anda tidak dapat menggunakan kebijakan berbasis sumber daya Amazon S3 di akun Anda di Tiongkok (Beijing) untuk memungkinkan akses bagi pengguna dalam akun aws standar Anda.

  • Catat Amazon Resource Name (ARN) sumber daya lintas akun dalam file teks. Kemudian dalam tutorial ini, Anda akan memberikan ini ARN dalam definisi status mesin Task negara Anda. Berikut ini adalah contoh fungsi Lambda: ARN

    arn:aws:lambda:us-east-2:123456789012:function:functionName
  • Pastikan Anda telah membuat IAM peran target yang perlu diasumsikan oleh mesin status.

Langkah 1: Perbarui definisi status Tugas untuk menentukan peran target

Dalam Task keadaan alur kerja Anda, tambahkan Credentials bidang yang berisi identitas yang harus diasumsikan oleh mesin status sebelum menjalankan fungsi Lambda lintas akun.

Prosedur berikut menunjukkan cara mengakses fungsi Lambda lintas akun yang disebut. Echo Anda dapat menelepon apa saja AWS sumber daya dengan mengikuti langkah-langkah ini.

  1. Buka Konsol Step Functions dan pilih Buat mesin status.

  2. Pada halaman Pilih metode authoring, pilih Desain alur kerja Anda secara visual dan simpan semua pilihan default.

  3. Untuk membuka Workflow Studio, pilih Berikutnya.

  4. Pada tab Tindakan, seret dan lepas Task status di kanvas. Ini memanggil fungsi Lambda lintas akun yang menggunakan status ini. Task

  5. Pada tab Konfigurasi, lakukan hal berikut:

    1. Ubah nama negara menjadiCross-account call.

    2. Untuk nama Fungsi, pilih Masukkan nama fungsi, lalu masukkan fungsi Lambda ARN di kotak. Misalnya, arn:aws:lambda:us-east-2:111122223333:function:Echo.

    3. Untuk Memberikan IAM peran ARN, tentukan IAM peran targetARN. Misalnya, arn:aws:iam::111122223333:role/LambdaRole.

      Tip

      Atau, Anda juga dapat menentukan jalur referensi ke pasangan kunci-nilai yang ada di JSON input status yang berisi peran. IAM ARN Untuk melakukan ini, pilih Dapatkan IAM peran ARN saat runtime dari input status. Untuk contoh menentukan nilai dengan menggunakan jalur referensi, lihatMenentukan JSONPath sebagai peran IAM ARN.

  6. Pilih Berikutnya.

  7. Pada halaman Tinjau kode yang dihasilkan, pilih Berikutnya.

  8. Pada halaman Tentukan pengaturan mesin status, tentukan detail untuk mesin status baru, seperti nama, izin, dan tingkat pencatatan.

  9. Pilih Buat mesin status.

  10. Catat IAM peran mesin negara ARN dan mesin status ARN dalam file teks. Anda harus memberikan ini ARNs dalam kebijakan kepercayaan akun target.

Definisi Task status Anda sekarang harus terlihat mirip dengan definisi berikut.

{ "StartAt": "Cross-account call", "States": { "Cross-account call": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "Credentials": { "RoleArn": "arn:aws:iam::111122223333:role/LambdaRole" }, "Parameters": { "FunctionName": "arn:aws:lambda:us-east-2:111122223333:function:Echo", }, "End": true } } }

Langkah 2: Perbarui kebijakan kepercayaan peran target

IAMPeran harus ada di akun target dan Anda harus mengubah kebijakan kepercayaannya agar akun sumber dapat mengambil peran ini sementara. Selain itu, Anda dapat mengontrol siapa yang dapat mengambil IAM peran target.

Setelah Anda membuat hubungan kepercayaan, pengguna dari akun sumber dapat menggunakan AWS Security Token Service (AWS STS) AssumeRoleAPIoperasi. Operasi ini menyediakan kredensi keamanan sementara yang memungkinkan akses ke AWS sumber daya dalam akun target.

  1. Buka IAM konsol di https://console.aws.amazon.com/iam/.

  2. Pada panel navigasi konsol, pilih Peran, lalu gunakan kotak Pencarian untuk mencari IAM peran target. Misalnya, LambdaRole.

  3. Pilih tab Trust relationship.

  4. Pilih Edit kebijakan kepercayaan dan tempel kebijakan kepercayaan berikut. Pastikan untuk mengganti Akun AWS jumlah dan IAM peranARN. sts:ExternalIdBidang lebih lanjut mengontrol siapa yang dapat mengambil peran. Nama mesin negara harus menyertakan hanya karakter yang AWS Security Token Service AssumeRoleAPImendukung. Untuk informasi lebih lanjut, lihat AssumeRoledi AWS Security Token Service APIReferensi.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Principal": { "AWS": "arn:aws:iam::123456789012:role/ExecutionRole" // The source account's state machine execution role ARN }, "Condition": { // Control which account and state machine can assume the target IAM role "StringEquals": { "sts:ExternalId": "arn:aws:states:us-east-1:123456789012:stateMachine:testCrossAccount" //// ARN of the state machine that will assume the role. } } } ] }
  5. Biarkan jendela ini terbuka dan lanjutkan ke langkah berikutnya untuk tindakan lebih lanjut.

Langkah 3: Tambahkan izin yang diperlukan dalam peran target

Izin dalam IAM kebijakan menentukan apakah permintaan tertentu diizinkan atau ditolak. IAMPeran target harus memiliki izin yang benar untuk menjalankan fungsi Lambda.

  1. Pilih tab Izin.

  2. Pilih Tambahkan izin, lalu pilih Buat kebijakan sebaris.

  3. Pilih JSONtab dan ganti konten yang ada dengan izin berikut. Pastikan untuk mengganti fungsi Lambda Anda. ARN

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-east-2:111122223333:function:Echo" // The cross-account AWS resource being accessed } ] }
  4. Pilih Tinjau kebijakan.

  5. Pada halaman Kebijakan ulasan, masukkan nama untuk izin, lalu pilih Buat kebijakan.

Langkah 4: Tambahkan izin dalam peran eksekusi untuk mengambil peran target

Step Functions tidak secara otomatis menghasilkan AssumeRolekebijakan untuk semua integrasi layanan lintas akun. Anda harus menambahkan izin yang diperlukan dalam peran eksekusi mesin status untuk memungkinkannya mengambil IAM peran target dalam satu atau lebih Akun AWS.

  1. Buka peran eksekusi mesin status Anda di IAM konsol di https://console.aws.amazon.com/iam/. Untuk melakukannya:

    1. Buka mesin status yang Anda buat di Langkah 1 di akun sumber.

    2. Pada halaman detail mesin negara, pilih IAMperan ARN.

  2. Pada tab Izin, pilih Tambahkan izin, lalu pilih Buat kebijakan sebaris.

  3. Pilih JSONtab dan ganti konten yang ada dengan izin berikut. Pastikan untuk mengganti fungsi Lambda Anda. ARN

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::111122223333:role/LambdaRole" // The target role to be assumed } ] }
  4. Pilih Tinjau kebijakan.

  5. Pada halaman Kebijakan ulasan, masukkan nama untuk izin, lalu pilih Buat kebijakan.