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 Layanan AWS
Saat Anda menggunakan AWS layanan untuk memanggil fungsi Anda, Anda memberikan izin dalam pernyataan tentang kebijakan berbasis sumber daya. Anda dapat menerapkan pernyataan ke seluruh fungsi, atau membatasi pernyataan ke versi tunggal atau alias.
catatan
Saat Anda menambahkan pemicu ke fungsi Anda dengan konsol Lambda, konsol memperbarui kebijakan berbasis sumber daya fungsi untuk memungkinkan layanan memicunya. Untuk memberikan izin ke akun atau layanan lain yang tidak tersedia di konsol Lambda, Anda dapat menggunakan AWS CLI.
Sebaiknya gunakan put-resource-policy untuk menentukan kebijakan JSON lengkap. Denganput-resource-policy, Anda dapat menambahkan pernyataan tolak, menggunakan berbagai kunci kondisi IAM, dan mengelola semua izin dalam satu dokumen. Anda juga dapat menggunakan add-permission untuk menambahkan pernyataan individual 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 izin Layanan Pemberitahuan Sederhana Amazon untuk memanggil fungsi bernamamy-function, tetapi hanya untuk topik tertentu. Itu juga menyangkal doa dari topik tertentu.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "allow-sns-my-topic", "Effect": "Allow", "Principal": { "Service": "sns.amazonaws.com" }, "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-east-2:123456789012:function:my-function", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:sns:us-east-2:123456789012:my-topic" } } }, { "Sid": "deny-sns-other-topic", "Effect": "Deny", "Principal": { "Service": "sns.amazonaws.com" }, "Action": "lambda:InvokeFunction", "Resource": [ "arn:aws:lambda:us-east-2:123456789012:function:my-function", "arn:aws:lambda:us-east-2:123456789012:function:my-function:*" ], "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:sns:us-east-2:123456789012:restricted-topic" } } } ] }
Simpan kebijakan ke file bernama policy.json dan terapkan denganput-resource-policy:
aws lambda put-resource-policy \ --resource-arn arn:aws:lambda:us-east-2:123456789012:function:my-function\ --policy file://policy.json
Untuk Amazon S3, sumbernya adalah bucket yang ARN-nya tidak menyertakan ID akun. Ada kemungkinan bahwa Anda dapat menghapus bucket dan akun lain dapat membuat bucket dengan nama yang sama. Gunakan kunci aws:SourceAccount kondisi untuk memastikan bahwa hanya sumber daya di akun Anda yang dapat memanggil fungsi:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "allow-s3", "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-east-2:123456789012:function:my-function", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" }, "ArnLike": { "aws:SourceArn": "arn:aws:s3:::my-bucket" } } } ] }
Menggunakan izin tambahan
Untuk kasus penggunaan sederhana, Anda dapat menggunakan add-permission untuk menambahkan pernyataan individual. Perintah berikut memberikan izin Layanan Pemberitahuan Sederhana Amazon untuk memanggil fungsi bernama: my-function
aws lambda add-permission \ --function-name my-function \ --action lambda:InvokeFunction \ --statement-id sns \ --principal sns.amazonaws.com \ --output text
Anda akan melihat output berikut:
{"Sid":"sns","Effect":"Allow","Principal":{"Service":"sns.amazonaws.com"},"Action":"lambda:InvokeFunction","Resource":"arn:aws:lambda:us-east-2: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 pemanggilan ke sumber daya tertentu, gunakan opsi: source-arn
aws lambda add-permission \ --function-name my-function \ --action lambda:InvokeFunction \ --statement-id sns-my-topic \ --principal sns.amazonaws.com \ --source-arn arn:aws:sns:us-east-2:123456789012:my-topic
Untuk Amazon S3, gunakan source-account opsi dengan ID akun Anda:
aws lambda add-permission \ --function-name my-function \ --action lambda:InvokeFunction \ --statement-id s3-account \ --principal s3.amazonaws.com \ --source-arn arn:aws:s3:::amzn-s3-demo-bucket\ --source-account123456789012