Tutorial: Mengakses sumber daya lintas akun AWS - AWS Step Functions

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

Tutorial: Mengakses sumber daya lintas akun AWS

Dengan dukungan akses lintas akun di Step Functions, Anda dapat berbagi sumber daya yang dikonfigurasi secara 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 peran IAM target.

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

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

catatan

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

Prasyarat

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

    penting

    Peran IAM dan kebijakan berbasis sumber daya mendelegasikan akses ke seluruh akun hanya dalam satu partisi tunggal. 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 Nama Sumber Daya Amazon (ARN) sumber daya lintas akun dalam file teks. Kemudian dalam tutorial ini, Anda akan memberikan ARN ini dalam definisi status mesin Task negara Anda. Berikut ini adalah contoh dari fungsi Lambda ARN:

    arn:aws:lambda:us-east-2:123456789012:function:functionName
  • Pastikan Anda telah membuat peran IAM 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 memanggil AWS sumber daya apa pun 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 ARN fungsi Lambda di dalam kotak. Misalnya, arn:aws:lambda:us-east-2:111122223333:function:Echo.

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

      Tip

      Atau, Anda juga dapat menentukan jalur referensi ke pasangan kunci-nilai yang ada di input JSON status yang berisi ARN peran IAM. Untuk melakukan ini, pilih Dapatkan peran IAM 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 peran IAM mesin negara ARN dan ARN mesin status dalam file teks. Anda harus memberikan ARN ini 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

Peran IAM 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 peran IAM target.

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

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

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

  3. Pilih tab Trust relationship.

  4. Pilih Edit kebijakan kepercayaan dan tempel kebijakan kepercayaan berikut. Pastikan untuk mengganti Akun AWS nomor dan peran IAM ARN. sts:ExternalIdBidang lebih lanjut mengontrol siapa yang dapat mengambil peran. Nama mesin status harus menyertakan hanya karakter yang didukung AWS Security Token Service AssumeRole API. Untuk informasi selengkapnya, lihat AssumeRoledi Referensi AWS Security Token Service API.

    { "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 kebijakan IAM menentukan apakah permintaan tertentu diizinkan atau ditolak. Peran IAM 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 tab JSON dan ganti konten yang ada dengan izin berikut. Pastikan untuk mengganti ARN fungsi Lambda Anda.

    { "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 peran IAM target dalam satu atau lebih Akun AWS.

  1. Buka peran eksekusi mesin status Anda di konsol IAM 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 peran IAM ARN.

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

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

    { "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.