Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Memberikan akses fungsi Lambda ke akun lain
Untuk berbagi fungsi dengan yang lain Akun AWS, tambahkan pernyataan izin lintas akun ke kebijakan berbasis sumber daya fungsi tersebut. Sebaiknya gunakan put-resource-policy untuk membuat kebijakan JSON lengkap. Denganput-resource-policy, Anda dapat menentukan beberapa prinsipal, menambahkan kondisi, dan membuat pernyataan tolak. Anda juga dapat menggunakan add-permission untuk kasus penggunaan sederhana.
penting
Menggunakan put-resource-policy menggantikan kebijakan berbasis sumber daya yang ada pada sumber daya. Jika sumber daya sudah memiliki izin yang ditentukan denganadd-permission, tul put-resource-policy islah. Gunakan get-resource-policy untuk mengambil kebijakan yang ada sebelum membuat perubahan.
Menggunakan kebijakan JSON lengkap (disarankan)
Kebijakan contoh berikut memberikan dua Akun AWS izin untuk memanggil fungsi, dengan satu dibatasi untuk peran IAM tertentu:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "allow-account-invoke", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root", "arn:aws:iam::444455556666:role/cross-account-role" ] }, "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-east-2:123456789012:function:my-function" } ] }
Simpan kebijakan ke file bernama policy.json dan terapkan. resource-arnDapat menentukan fungsi, versi, atau alias:
aws lambda put-resource-policy \ --resource-arn arn:aws:lambda:us-east-2:123456789012:function:my-function\ --policy file://policy.json
Anda juga dapat membatasi akses lintas akun ke versi tertentu menggunakan alias. Kebijakan berikut memberikan akses panggil hanya melalui prod alias:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "allow-account-prod-alias", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-east-2:123456789012:function:my-function:prod" } ] }
Simpan kebijakan ini ke file bernama alias-policy.json dan terapkan ke alias:
aws lambda put-resource-policy \ --resource-arn arn:aws:lambda:us-east-2:123456789012:function:my-function:prod\ --policy file://alias-policy.json
Kebijakan berbasis sumber daya memberikan izin bagi akun lain untuk mengakses fungsi, tetapi tidak mengizinkan pengguna dalam akun tersebut untuk melebihi izin mereka. Pengguna di akun lain harus memiliki izin pengguna yang sesuai untuk menggunakan API Lambda.
Anda dapat memberikan akses lintas akun untuk sebagian besar tindakan API yang beroperasi pada fungsi yang sudah ada. Misalnya, Anda dapat memberikan akses ke lambda:ListAliases agar akun bisa mendapatkan daftar alias, atau lambda:GetFunction agar mengunduh kode fungsi Anda.
Untuk memberi akun lain izin untuk beberapa fungsi, atau untuk tindakan yang tidak beroperasi pada fungsi, kami sarankan Anda menggunakan peran IAM.
Menggunakan izin tambahan
Untuk kasus penggunaan sederhana, Anda dapat menggunakan add-permission untuk menambahkan pernyataan individual. Contoh berikut memberikan 111122223333 izin akun untuk memanggil my-function dengan prod alias:
aws lambda add-permission \ --function-name my-function:prod\ --statement-id xaccount \ --action lambda:InvokeFunction \ --principal111122223333\ --output text
Anda akan melihat output berikut:
{"Sid":"xaccount","Effect":"Allow","Principal":{"AWS":"arn:aws:iam::111122223333:root"},"Action":"lambda:InvokeFunction","Resource":"arn:aws:lambda:us-east-1:123456789012:function:my-function"}
catatan
Jika Anda memang add-permission gil set put-resource-policy elahnya, pernyataan baru ditambahkan ke kebijakan JSON yang ada.
Untuk membatasi akses ke pengguna atau peran di akun lain, tentukan ARN lengkap dari identitas sebagai prinsip. Misalnya, arn:aws:iam::123456789012:user/developer.