Konfigurasikan fungsi Lambda yang tahan lama - AWS Lambda

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

Konfigurasikan fungsi Lambda yang tahan lama

Untuk mengaktifkan eksekusi tahan lama untuk fungsi Lambda Anda, Anda perlu mengonfigurasi pengaturan spesifik yang mengontrol berapa lama fungsi Anda dapat berjalan, berapa lama data status dipertahankan, dan izin apa yang diperlukan.

Aktifkan eksekusi yang tahan lama

Untuk mengaktifkan eksekusi tahan lama untuk fungsi Lambda Anda, konfigurasikan DurableConfig konfigurasi fungsi Anda. Setelan ini mengontrol batas waktu eksekusi, retensi status, dan perilaku pembuatan versi.

AWS CLI
aws lambda update-function-configuration \ --function-name my-durable-function \ --durable-config '{ "ExecutionTimeout": 3600, "RetentionPeriodInDays": 30, "AllowInvokeLatest": true }'
CloudFormation
Resources: MyDurableFunction: Type: AWS::Lambda::Function Properties: FunctionName: my-durable-function Runtime: nodejs18.x Handler: index.handler Code: ZipFile: | // Your durable function code DurableConfig: ExecutionTimeout: 3600 RetentionPeriodInDays: 30 AllowInvokeLatest: true

Parameter konfigurasi:

  • ExecutionTimeout- Waktu eksekusi maksimum dalam hitungan detik (hingga 31.536.000 untuk satu tahun)

  • RetentionPeriodInDays- Berapa lama untuk mempertahankan status eksekusi dan riwayat (1-365 hari)

  • AllowInvokeLatest- Apakah akan mengizinkan pemanggilan versi $LATEST untuk eksekusi yang tahan lama

Izin IAM untuk fungsi tahan lama

Fungsi tahan lama memerlukan izin IAM tambahan di luar peran eksekusi Lambda standar. Peran eksekusi fungsi Anda harus menyertakan izin untuk manajemen status dan eksekusi APIs tahan lama.

Izin minimum yang diperlukan:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:InvokeFunction", "lambda:GetFunction", "lambda:ManageDurableState", "lambda:GetDurableExecution", "lambda:ListDurableExecutions" ], "Resource": "arn:aws:lambda:*:*:function:*" }, { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:*:*" } ] }

CloudFormation contoh peran eksekusi:

DurableFunctionRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: lambda.amazonaws.com Action: sts:AssumeRole ManagedPolicyArns: - arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole Policies: - PolicyName: DurableFunctionPolicy PolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Action: - lambda:ManageDurableState - lambda:GetDurableExecution - lambda:ListDurableExecutions Resource: '*'

Praktik terbaik konfigurasi

Ikuti praktik terbaik ini saat mengonfigurasi fungsi tahan lama untuk penggunaan produksi:

  • Tetapkan batas waktu eksekusi yang sesuai - Konfigurasikan ExecutionTimeout berdasarkan durasi maksimum yang diharapkan alur kerja Anda. Jangan menetapkan batas waktu lama yang tidak perlu karena memengaruhi alokasi biaya dan sumber daya.

  • Retensi saldo dengan biaya penyimpanan - Tetapkan RetentionPeriodInDays berdasarkan persyaratan debugging dan audit Anda. Periode retensi yang lebih lama meningkatkan biaya penyimpanan.

  • Gunakan pembuatan versi dalam produksi - Setel AllowInvokeLatest ke false lingkungan produksi dan gunakan versi fungsi atau alias tertentu untuk eksekusi yang tahan lama.

  • Ukuran status monitor - Objek status besar meningkatkan biaya penyimpanan dan dapat memengaruhi kinerja. Jaga status minimal dan gunakan penyimpanan eksternal untuk data besar.

  • Konfigurasikan logging yang sesuai - Aktifkan pencatatan terperinci untuk memecahkan masalah alur kerja yang berjalan lama, tetapi perhatikan volume dan biaya log.

Contoh konfigurasi produksi:

{ "ExecutionTimeout": 86400, "RetentionPeriodInDays": 7, "AllowInvokeLatest": false }