假設我有一支 Lambda function,內容如下:
import json def lambda_handler(event, context): # TODO implement return { 'statusCode': 200, 'body': json.dumps('Hello from Lambda! (Version 1)') }
並成功完成 Test:
Test Event Name MyTest Response { "statusCode": 200, "body": "\"Hello from Lambda! (Version 1)\"" } Function Logs START RequestId: f0a719c8-1ffb-499d-942f-206f73dd0045 Version: $LATEST END RequestId: f0a719c8-1ffb-499d-942f-206f73dd0045 REPORT RequestId: f0a719c8-1ffb-499d-942f-206f73dd0045 Duration: 11.58 ms Billed Duration: 12 ms Memory Size: 128 MB Max Memory Used: 34 MB Request ID f0a719c8-1ffb-499d-942f-206f73dd0045
透過 AWS CLI 發佈第一個版本:
[cloudshell-user@ip-10-132-51-15 ~]$ aws lambda publish-version --function-name HelloWorldFunction { "FunctionName": "HelloWorldFunction", "FunctionArn": "arn:aws:lambda:us-east-1:827888540138:function:HelloWorldFunction:1", "Runtime": "python3.12", "Role": "arn:aws:iam::827888540138:role/service-role/HelloWorldFunction-role-2pj1z9b2", "Handler": "lambda_function.lambda_handler", "CodeSize": 277, "Description": "", "Timeout": 3, "MemorySize": 128, "LastModified": "2024-02-19T00:51:48.000+0000", "CodeSha256": "FGaiUQRyAxEPhQmLcV9dUlGl1qIvgba7Ae1zCInXC3g=", "Version": "1", "TracingConfig": { "Mode": "PassThrough" }, "RevisionId": "d42bcc86-34a7-4ce4-a739-16e6d785c3af", "State": "Active", "LastUpdateStatus": "Successful", "PackageType": "Zip", "Architectures": [ "x86_64" ], "EphemeralStorage": { "Size": 512 }, "SnapStart": { "ApplyOn": "None", "OptimizationStatus": "Off" :...skipping...
修改 Lambda function,程式內容如下:
import json def lambda_handler(event, context): # TODO implement return { 'statusCode': 200, 'body': json.dumps('Hello from Lambda! (Version 2)') }
發佈第二個版本:
[cloudshell-user@ip-10-132-51-15 ~]$ aws lambda publish-version --function-name HelloWorldFunction { "FunctionName": "HelloWorldFunction", "FunctionArn": "arn:aws:lambda:us-east-1:827888540138:function:HelloWorldFunction:2", "Runtime": "python3.12", "Role": "arn:aws:iam::827888540138:role/service-role/HelloWorldFunction-role-2pj1z9b2", "Handler": "lambda_function.lambda_handler", "CodeSize": 276, "Description": "", "Timeout": 3, "MemorySize": 128, "LastModified": "2024-02-19T01:02:46.000+0000", "CodeSha256": "xzDR5dGezW2VtWOvVraE1yY6kIQXIKy7UBS/1WDMeyw=", "Version": "2", "TracingConfig": { "Mode": "PassThrough" }, "RevisionId": "299ba2c8-c055-4314-9b29-bbd9e9332e96", "State": "Active", "LastUpdateStatus": "Successful", "PackageType": "Zip", "Architectures": [ "x86_64" ], "EphemeralStorage": { "Size": 512 }, "SnapStart": {
建立 Alias,PROD 指向 Version 1、DEV 指向 Version 2
[cloudshell-user@ip-10-132-51-15 ~]$ aws lambda create-alias --function-name HelloWorldFunction --name PROD --function-version 1 { "AliasArn": "arn:aws:lambda:us-east-1:827888540138:function:HelloWorldFunction:PROD", "Name": "PROD", "FunctionVersion": "1", "Description": "", "RevisionId": "dfc0cdd9-5bf8-4483-bd0b-0cc098e4a70e" } [cloudshell-user@ip-10-132-51-15 ~]$ aws lambda create-alias --function-name HelloWorldFunction --name DEV --function-version 2 { "AliasArn": "arn:aws:lambda:us-east-1:827888540138:function:HelloWorldFunction:DEV", "Name": "DEV", "FunctionVersion": "2", "Description": "", "RevisionId": "2526ec87-e93b-4189-828a-bab954fcf019" }
執行 PROD alais,結果如下:
[cloudshell-user@ip-10-132-51-15 ~]$ aws lambda invoke --function-name "HelloWorldFunction:PROD" outputfile.txt { "StatusCode": 200, "ExecutedVersion": "1" }
執行 DEV alais,結果如下:
[cloudshell-user@ip-10-132-51-15 ~]$ aws lambda invoke --function-name "HelloWorldFunction:DEV" outputfile.txt { "StatusCode": 200, "ExecutedVersion": "2" }
Version 2 完成測試後,將 PROD 指向 Version 2:
[cloudshell-user@ip-10-132-51-15 ~]$ aws lambda update-alias --function-name "HelloWorldFunction" --name "PROD" --function-version "2" { "AliasArn": "arn:aws:lambda:us-east-1:827888540138:function:HelloWorldFunction:PROD", "Name": "PROD", "FunctionVersion": "2", "Description": "", "RevisionId": "9b3c5ce4-4c46-4bba-a5bf-ceb8291e090d" }
執行 PROD alais,結果如下:
[cloudshell-user@ip-10-132-51-15 ~]$ aws lambda invoke --function-name "HelloWorldFunction:PROD" outputfile.txt { "StatusCode": 200, "ExecutedVersion": "2" }
No comments:
Post a Comment