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 partisiaws-cn
. Anda tidak dapat menggunakan kebijakan berbasis sumber daya Amazon S3 di akun Anda di Tiongkok (Beijing) untuk memungkinkan akses bagi pengguna dalam akunaws
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: ARNarn: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.
-
Buka Konsol Step Functions
dan pilih Buat mesin status. -
Pada halaman Pilih metode authoring, pilih Desain alur kerja Anda secara visual dan simpan semua pilihan default.
-
Untuk membuka Workflow Studio, pilih Berikutnya.
Pada tab Tindakan, seret dan lepas
Task
status di kanvas. Ini memanggil fungsi Lambda lintas akun yang menggunakan status ini.Task
-
Pada tab Konfigurasi, lakukan hal berikut:
-
Ubah nama negara menjadi
Cross-account call
. -
Untuk nama Fungsi, pilih Masukkan nama fungsi, lalu masukkan fungsi Lambda ARN di kotak. Misalnya,
arn:aws:lambda:us-east-2:111122223333:function:
.Echo
-
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.
-
-
Pilih Berikutnya.
-
Pada halaman Tinjau kode yang dihasilkan, pilih Berikutnya.
-
Pada halaman Tentukan pengaturan mesin status, tentukan detail untuk mesin status baru, seperti nama, izin, dan tingkat pencatatan.
-
Pilih Buat mesin status.
-
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.
-
Buka IAM konsol di https://console.aws.amazon.com/iam/
. -
Pada panel navigasi konsol, pilih Peran, lalu gunakan kotak Pencarian untuk mencari IAM peran target. Misalnya,
.LambdaRole
-
Pilih tab Trust relationship.
-
Pilih Edit kebijakan kepercayaan dan tempel kebijakan kepercayaan berikut. Pastikan untuk mengganti Akun AWS jumlah dan IAM peranARN.
sts:ExternalId
Bidang lebih lanjut mengontrol siapa yang dapat mengambil peran. Nama mesin negara harus menyertakan hanya karakter yang AWS Security Token ServiceAssumeRole
APImendukung. 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. } } } ] }
-
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.
-
Pilih tab Izin.
-
Pilih Tambahkan izin, lalu pilih Buat kebijakan sebaris.
-
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 } ] } -
Pilih Tinjau kebijakan.
-
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.
-
Buka peran eksekusi mesin status Anda di IAM konsol di https://console.aws.amazon.com/iam/
. Untuk melakukannya: -
Buka mesin status yang Anda buat di Langkah 1 di akun sumber.
-
Pada halaman detail mesin negara, pilih IAMperan ARN.
-
-
Pada tab Izin, pilih Tambahkan izin, lalu pilih Buat kebijakan sebaris.
-
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 } ] } -
Pilih Tinjau kebijakan.
-
Pada halaman Kebijakan ulasan, masukkan nama untuk izin, lalu pilih Buat kebijakan.