Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Gunakan ARN Amazon S3 bukan meneruskan muatan besar
Eksekusi yang meneruskan muatan data yang besar antar status dapat dihentikan. Jika data yang Anda lewati antar status mungkin bertambah hingga lebih dari 256 KB, gunakan Amazon Simple Storage Service (Amazon S3) untuk menyimpan data, dan mengurai Amazon Resource Name (ARN) bucket dalam Payload
parameter untuk mendapatkan nama bucket dan nilai kunci. Atau, sesuaikan implementasi Anda sehingga Anda meneruskan muatan yang lebih kecil dalam eksekusi Anda.
Dalam contoh berikut, mesin status meneruskan input ke AWS Lambda fungsi, yang memproses file JSON di bucket Amazon S3. Setelah Anda menjalankan mesin status ini, fungsi Lambda membaca isi file JSON, dan mengembalikan konten file sebagai output.
Buat fungsi Lambda
Fungsi Lambda berikut bernama
membaca konten file JSON yang disimpan dalam bucket Amazon S3 tertentu.pass-large-payload
catatan
Setelah Anda membuat fungsi Lambda ini, pastikan Anda memberikan peran IAM-nya izin yang sesuai untuk membaca dari bucket Amazon S3. Misalnya, lampirkan ReadOnlyAccess izin AmazonS3 ke peran fungsi Lambda.
import json import boto3 import io import os s3 = boto3.client('s3') def lambda_handler(event, context): event = event['Input'] final_json = str() s3 = boto3.resource('s3') bucket = event['bucket'].split(':')[-1] filename = event['key'] directory = "/tmp/{}".format(filename) s3.Bucket(bucket).download_file(filename, directory) with open(directory, "r") as jsonfile: final_json = json.load(jsonfile) os.popen("rm -rf /tmp") return final_json
Buat mesin negara
Mesin status berikut memanggil fungsi Lambda yang sebelumnya Anda buat.
{ "StartAt":"Invoke Lambda function", "States":{ "Invoke Lambda function":{ "Type":"Task", "Resource":"arn:aws:states:::lambda:invoke", "Parameters":{ "FunctionName":"arn:aws:lambda:us-east-2:123456789012:function:
pass-large-payload
", "Payload":{ "Input.$":"$" } }, "OutputPath": "$.Payload", "End":true } } }
Daripada meneruskan sejumlah besar data dalam input, Anda dapat menyimpan data tersebut di bucket Amazon S3, dan meneruskan Amazon Resource Name (ARN) bucket dalam Payload
parameter untuk mendapatkan nama bucket dan nilai kunci. Fungsi Lambda Anda kemudian dapat menggunakan ARN tersebut untuk mengakses data secara langsung. Berikut ini adalah contoh input untuk eksekusi mesin status, di mana data disimpan data.json
dalam bucket Amazon S3 bernama. large-payload-json
{
"key": "data.json",
"bucket": "arn:aws:s3:::large-payload-json
"
}