Menggunakan AWS Lambda dengan AWS CloudFormation - 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 AWS CloudFormation

Dalam AWS CloudFormation template, Anda dapat menentukan fungsi Lambda sebagai target sumber daya khusus. Gunakan sumber daya khusus untuk memproses parameter, mengambil nilai konfigurasi, atau memanggil AWS layanan lain selama peristiwa siklus hidup tumpukan.

Contoh berikut memanggil fungsi yang ditentukan di bagian lain dalam templat.

contoh – Penentuan sumber daya kustom
Resources: primerinvoke: Type: AWS::CloudFormation::CustomResource Version: "1.0" Properties: ServiceToken: !GetAtt primer.Arn FunctionName: !Ref randomerror

Token layanan adalah Nama Sumber Daya Amazon (ARN) dari fungsi yang AWS CloudFormation dipanggil saat Anda membuat, memperbarui, atau menghapus tumpukan. Anda juga dapat menyertakan properti tambahan sepertiFunctionName, yang AWS CloudFormation lolos ke fungsi Anda apa adanya.

AWS CloudFormation memanggil fungsi Lambda Anda secara asinkron dengan peristiwa yang menyertakan URL panggilan balik.

contoh — acara AWS CloudFormation pesan
{ "RequestType": "Create", "ServiceToken": "arn:aws:lambda:us-east-1:123456789012:function:lambda-error-processor-primer-14ROR2T3JKU66", "ResponseURL": "https://cloudformation-custom-resource-response-useast1.s3-us-east-1.amazonaws.com/arn%3Aaws%3Acloudformation%3Aus-east-1%3A123456789012%3Astack/lambda-error-processor/1134083a-2608-1e91-9897-022501a2c456%7Cprimerinvoke%7C5d478078-13e9-baf0-464a-7ef285ecc786?AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE&Expires=1555451971&Signature=28UijZePE5I4dvukKQqM%2F9Rf1o4%3D", "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/lambda-error-processor/1134083a-2608-1e91-9897-022501a2c456", "RequestId": "5d478078-13e9-baf0-464a-7ef285ecc786", "LogicalResourceId": "primerinvoke", "ResourceType": "AWS::CloudFormation::CustomResource", "ResourceProperties": { "ServiceToken": "arn:aws:lambda:us-east-1:123456789012:function:lambda-error-processor-primer-14ROR2T3JKU66", "FunctionName": "lambda-error-processor-randomerror-ZWUC391MQAJK" } }

Fungsi ini bertanggung jawab untuk mengembalikan respons ke URL callback yang menunjukkan keberhasilan atau kegagalan. Untuk sintaksis respons lengkap, lihat Objek respons sumber daya kustom.

contoh — respon sumber daya AWS CloudFormation kustom
{ "Status": "SUCCESS", "PhysicalResourceId": "2019/04/18/[$LATEST]b3d1bfc65f19ec610654e4d9b9de47a0", "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/lambda-error-processor/1134083a-2608-1e91-9897-022501a2c456", "RequestId": "5d478078-13e9-baf0-464a-7ef285ecc786", "LogicalResourceId": "primerinvoke" }

AWS CloudFormation menyediakan perpustakaan bernama cfn-response yang menangani pengiriman respons. Jika Anda menentukan fungsi Anda dalam template, Anda dapat meminta perpustakaan berdasarkan nama. AWS CloudFormation kemudian menambahkan pustaka ke paket penerapan yang dibuatnya untuk fungsi tersebut.

Jika fungsi yang digunakan Sumber Daya Kustom memiliki Antarmuka Jaringan Elastis yang melekat padanya, tambahkan sumber daya berikut ke kebijakan VPC di mana region Wilayah fungsi berada tanpa tanda hubung. Sebagai contoh, us-east-1 adalahuseast1. Ini akan memungkinkan Custom Resource untuk merespons URL callback yang mengirimkan sinyal kembali ke AWS CloudFormation tumpukan.

arn:aws:s3:::cloudformation-custom-resource-response-region", "arn:aws:s3:::cloudformation-custom-resource-response-region/*",

Contoh fungsi berikut memanggil suatu fungsi kedua. Jika panggilan berhasil, fungsi mengirimkan respons sukses AWS CloudFormation, dan pembaruan tumpukan berlanjut. Template menggunakan jenis AWS::Serverless::Functionsumber daya yang disediakan oleh AWS Serverless Application Model.

contoh — Fungsi sumber daya khusus
Transform: 'AWS::Serverless-2016-10-31' Resources: primer: Type: AWS::Serverless::Function Properties: Handler: index.handler Runtime: nodejs16.x InlineCode: | var aws = require('aws-sdk'); var response = require('cfn-response'); exports.handler = function(event, context) { // For Delete requests, immediately send a SUCCESS response. if (event.RequestType == "Delete") { response.send(event, context, "SUCCESS"); return; } var responseStatus = "FAILED"; var responseData = {}; var functionName = event.ResourceProperties.FunctionName var lambda = new aws.Lambda(); lambda.invoke({ FunctionName: functionName }, function(err, invokeResult) { if (err) { responseData = {Error: "Invoke call failed"}; console.log(responseData.Error + ":\n", err); } else responseStatus = "SUCCESS"; response.send(event, context, responseStatus, responseData); }); }; Description: Invoke a function to create a log stream. MemorySize: 128 Timeout: 8 Role: !GetAtt role.Arn Tracing: Active

Jika fungsi yang dipanggil sumber daya kustom tidak ditentukan dalam templat, Anda bisa mendapatkan kode sumbernya cfn-response dari modul cfn-response di Panduan Pengguna. AWS CloudFormation

Untuk informasi selengkapnya tentang sumber daya kustom, lihat Sumber daya kustom dalam Panduan Pengguna AWS CloudFormation .