Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Anda dapat menggunakan operasi batch Amazon S3 untuk memanggil fungsi Lambda pada serangkaian besar objek Amazon S3. Amazon S3 melacak kemajuan operasi batch, mengirimkan pemberitahuan, dan menyimpan laporan penyelesaian yang menunjukkan status setiap tindakan.
Untuk menjalankan operasi batch, Anda membuat pekerjaan operasi batch Amazon S3. Saat Anda membuat pekerjaan, Anda memberikan manifest (daftar objek) dan mengonfigurasi tindakan yang akan dilakukan pada objek tersebut.
Saat pekerjaan batch dimulai, Amazon S3 memanggil fungsi Lambda secara sinkron untuk setiap objek dalam manifest. Parameter kejadian mencakup nama bucket dan objek.
Contoh berikut menunjukkan peristiwa yang dikirimkan Amazon S3 ke fungsi Lambda untuk objek yang diberi nama customerImage1.jpg di bucket amzn-s3-demo-bucket.
contoh Kejadian permintaan batch Amazon S3
{
"invocationSchemaVersion": "1.0",
"invocationId": "YXNkbGZqYWRmaiBhc2RmdW9hZHNmZGpmaGFzbGtkaGZza2RmaAo",
"job": {
"id": "f3cc4f60-61f6-4a2b-8a21-d07600c373ce"
},
"tasks": [
{
"taskId": "dGFza2lkZ29lc2hlcmUK",
"s3Key": "customerImage1.jpg",
"s3VersionId": "1",
"s3BucketArn": "arn:aws:s3:::amzn-s3-demo-bucket"
}
]
}
Fungsi Lambda Anda harus mengembalikan objek JSON yang bidang seperti yang ditunjukkan dalam contoh berikut. Anda dapat menyalin invocationId
dan taskId
dari parameter kejadian. Anda dapat mengembalikan string di resultString
. Amazon S3 menyimpan nilai resultString
dalam laporan penyelesaian.
contoh Respons permintaan batch Amazon S3
{
"invocationSchemaVersion": "1.0",
"treatMissingKeysAs" : "PermanentFailure",
"invocationId" : "YXNkbGZqYWRmaiBhc2RmdW9hZHNmZGpmaGFzbGtkaGZza2RmaAo",
"results": [
{
"taskId": "dGFza2lkZ29lc2hlcmUK",
"resultCode": "Succeeded",
"resultString": "[\"Alice\", \"Bob\"]"
}
]
}
Memanggil fungsi Lambda dari operasi batch Amazon S3
Anda dapat memanggil fungsi Lambda dengan ARN fungsi yang tidak terkualifikasi atau terkualifikasi. Jika Anda ingin menggunakan versi fungsi yang sama untuk seluruh pekerjaan batch, konfigurasikan versi fungsi tertentu di parameter FunctionARN
saat membuat pekerjaan Anda. Jika Anda mengonfigurasi sebuah alias atau pengualifikasi $LATEST, pekerjaan batch segera mulai memanggil versi baru dari fungsi tersebut jika alias atau $LATEST diperbarui selama pelaksanaan pekerjaan.
Perhatikan bahwa Anda tidak dapat menggunakan kembali fungsi berbasis kejadian Amazon S3 yang sudah ada untuk operasi batch. Ini karena operasi batch Amazon S3 mengirimkan parameter kejadian yang berbeda ke fungsi Lambda dan mengharapkan pesan pengembalian dengan struktur JSON yang spesifik.
Di kebijakan berbasis sumber daya yang Anda buat untuk pekerjaan batch Amazon S3, pastikan Anda menetapkan izin untuk pekerjaan tersebut untuk memanggil fungsi Lambda Anda.
Di peran eksekusi untuk fungsi tersebut, tetapkan kebijakan kepercayaan bagi Amazon S3 untuk mengambil peran tersebut saat menjalankan fungsi Anda.
Jika fungsi Anda menggunakan AWS SDK untuk mengelola resource Amazon S3, Anda perlu menambahkan izin Amazon S3 dalam peran eksekusi.
Saat pekerjaan berjalan, Amazon S3 memulai beberapa instans fungsi untuk memproses objek Amazon S3 secara paralel, hingga mencapai batas konkurensi fungsi. Amazon S3 membatasi peningkatan instans awal guna menghindari biaya berlebih untuk pekerjaan kecil.
Jika fungsi Lambda mengembalikan kode respons TemporaryFailure
, Amazon S3 akan mengulangi operasi.
Untuk informasi lebih lanjut tentang operasi batch Amazon S3, lihat Melakukan operasi batch dalam Panduan Developer Amazon S3.
Untuk contoh cara menggunakan fungsi Lambda di operasi batch Amazon S3, lihat Memanggil fungsi Lambda dari operasi batch Amazon S3 dalam Panduan Developer Amazon S3.