Menggunakan AWS Lambda dengan Amazon S3 - AWS Lambda

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

Menggunakan AWS Lambda dengan Amazon S3

Anda dapat menggunakan Lambda untuk memproses pemberitahuan kejadian dari Amazon Simple Storage Service. Amazon S3 dapat mengirimkan kejadian ke fungsi Lambda saat objek dibuat atau dihapus. Anda mengonfigurasi pengaturan pemberitahuan di bucket, dan memberikan izin kepada Amazon S3 untuk memanggil fungsi di kebijakan izin berbasis sumber daya milik fungsi.

Awas

Jika fungsi Lambda Anda menggunakan bucket yang sama dengan bucket yang memicunya, hal ini dapat menyebabkan fungsi berjalan secara berulang-ulang. Misalnya, jika bucket memicu fungsi setiap kali suatu objek diunggah, dan fungsi mengunggah sebuah objek ke bucket, fungsi tersebut secara tidak langsung akan memicu dirinya sendiri. Untuk menghindari hal ini, gunakan dua bucket, atau konfigurasikan pemicu agar hanya diterapkan ke awalan yang digunakan untuk objek masuk.

Amazon S3 memanggil fungsi Anda secara asinkron dengan kejadian yang berisi detail tentang objek. Contoh berikut menunjukkan kejadian yang dikirimkan Amazon S3 saat paket deployment diunggah ke Amazon S3.

contoh Kejadian pemberitahuan Amazon S3
{ "Records": [ { "eventVersion": "2.1", "eventSource": "aws:s3", "awsRegion": "us-east-2", "eventTime": "2019-09-03T19:37:27.192Z", "eventName": "ObjectCreated:Put", "userIdentity": { "principalId": "AWS:AIDAINPONIXQXHT3IKHL2" }, "requestParameters": { "sourceIPAddress": "205.255.255.255" }, "responseElements": { "x-amz-request-id": "D82B88E5F771F645", "x-amz-id-2": "vlR7PnpV2Ce81l0PRw6jlUpck7Jo5ZsQjryTjKlc5aLWGVHPZLj5NeC6qMa0emYBDXOo6QBU0Wo=" }, "s3": { "s3SchemaVersion": "1.0", "configurationId": "828aa6fc-f7b5-4305-8584-487c791949c1", "bucket": { "name": "DOC-EXAMPLE-BUCKET", "ownerIdentity": { "principalId": "A3I5XTEXAMAI3E" }, "arn": "arn:aws:s3:::lambda-artifacts-deafc19498e3f2df" }, "object": { "key": "b21b84d653bb07b05b1e6b33684dc11b", "size": 1305107, "eTag": "b21b84d653bb07b05b1e6b33684dc11b", "sequencer": "0C0F6F405D6ED209E1" } } } ] }

Untuk memanggil fungsi Anda, Amazon S3 memerlukan izin dari kebijakan berbasis sumber daya milik fungsi. Saat Anda mengonfigurasi pemicu Amazon S3 di konsol Lambda, konsol memodifikasi kebijakan berbasis sumber daya untuk mengizinkan Amazon S3 memanggil fungsi jika nama bucket dan ID akun cocok. Jika Anda mengonfigurasi pemberitahuan di Amazon S3, Anda menggunakan API Lambda untuk memperbarui kebijakan. Anda juga dapat menggunakan API Lambda untuk memberikan izin kepada akun lain, atau membatasi izin pada alias yang ditunjuk.

Jika fungsi Anda menggunakan AWS SDK untuk mengelola sumber daya Amazon S3, fungsi juga memerlukan izin Amazon S3 di peran eksekusinya.