AWS Lambda
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

教程:使用 AWS Lambda 别名

这个基于 AWS CLI 的教程将创建 Lambda 函数版本以及指向该版本的别名(如示例:使用别名管理 Lambda 函数版本中所述)。

该示例使用 us-west-2 (美国西部俄勒冈) 区域创建 Lambda 函数和别名。

  1. 创建一个部署程序包,您可以上传该程序包以创建 Lambda 函数:

    1. 打开文本编辑器,然后复制以下代码。

      console.log('Loading function'); exports.handler = function(event, context, callback) { console.log('value1 =', event.key1); console.log('value2 =', event.key2); console.log('value3 =', event.key3); callback(null, "message"); };
    2. 将该文件保存为 helloworld.js

    3. helloworld.js 文件压缩为 helloworld.zip

  2. 创建您在创建 AWS Identity and Access Management (IAM) 函数时指定的 Lambda 角色(执行角色)。

    1. 登录 AWS 管理控制台 并通过以下网址打开 IAM 控制台 https://console.amazonaws.cn/iam/

    2. 按照 IAM 用户指南IAM 角色的步骤操作,创建 IAM 角色(执行角色)。遵循步骤创建角色时,请注意以下事项:

      • Select Role Type (选择角色类型) 中,选择 AWS Service Roles (AWS 服务角色),然后选择 AWS Lambda

      • 对于附加策略,请选择名为 AWSLambdaBasicExecutionRole 的策略。

    3. 写下 IAM 角色的 Amazon 资源名称 (ARN)。在下一步中创建 Lambda 函数时,您将需要此值。

  3. 创建 Lambda 函数 (helloworld)。

    aws lambda create-function --function-name helloworld --runtime nodejs10.x \ --zip-file fileb://helloworld.zip --handler helloworld.handler \ --role arn:aws:iam::123456789012:role/lambda-role

    响应返回将 $LATEST 显示为函数版本的配置信息,如以下示例响应所示。

    { "CodeSha256": "OjRFuuHKizEE8tHFIMsI+iHR6BPAfJ5S0rW31Mh6jKg=", "FunctionName": "helloworld", "CodeSize": 287, "MemorySize": 128, "FunctionArn": "arn:aws:lambda:us-west-2:account-id:function:helloworld", "Version": "$LATEST", "Role": "arn:aws:iam::account-id:role/lambda_basic_execution", "Timeout": 3, "LastModified": "2015-09-30T18:39:53.873+0000", "Handler": "helloworld.handler", "Runtime": "nodejs10.x", "Description": "" }
  4. 创建指向 helloworld Lambda 函数的 $LATEST 版本的别名 (DEV)。

    aws lambda create-alias --function-name helloworld --name DEV \ --description "sample alias" --function-version "\$LATEST"

    响应返回别名信息,包括它指向的函数版本以及别名 ARN。ARN 与具有别名后缀的函数 ARN 相同。以下是一项示范响应。

    { "AliasArn": "arn:aws:lambda:us-west-2:account-id:function:helloworld:DEV", "FunctionVersion": "$LATEST", "Name": "DEV", "Description": "sample alias" }
  5. 发布 helloworld Lambda 函数的版本。

    aws lambda publish-version --function-name helloworld

    响应返回函数版本的配置信息,包括版本号和具有版本后缀的函数 ARN。以下是一项示范响应。

    { "CodeSha256": "OjRFuuHKizEE8tHFIMsI+iHR6BPAfJ5S0rW31Mh6jKg=", "FunctionName": "helloworld", "CodeSize": 287, "MemorySize": 128, "FunctionArn": "arn:aws:lambda:us-west-2:account-id:function:helloworld:1", "Version": "1", "Role": "arn:aws:iam::account-id:role/lambda_basic_execution", "Timeout": 3, "LastModified": "2015-10-03T00:48:00.435+0000", "Handler": "helloworld.handler", "Runtime": "nodejs10.x", "Description": "" }
  6. helloworld Lambda 函数版本 1 创建名为 BETA 的别名:

    aws lambda create-alias --function-name helloworld \ --description "sample alias" --function-version 1 --name BETA

    现在您为 helloworld 函数创建了两个别名。DEV 别名指向 $LATEST 函数版本,BETA 别名指向 Lambda 函数的版本 1。

  7. 假设您要将 helloworld 函数的版本 1 放在生产环境中。创建另一个指向版本 1 的别名 (PROD)。

    aws lambda create-alias --function-name helloworld \ --description "sample alias" --function-version 1 --name PROD

    此时,您有指向 Lambda 函数的版本 1 的 BETAPROD 别名。

  8. 您现在可以发布更新的版本(例如,版本 2),但首先您需要更新代码并上传修改后的部署程序包。如果 $LATEST 版本未更改,则无法发布其多个版本。假设您已更新部署程序包、将其上传并发布了版本 2,您现在可以更改 BETA 别名以指向 Lambda 函数的版本 2。

    aws lambda update-alias --function-name helloworld \ --function-version 2 --name BETA

    现在您具有指向 Lambda 函数的不同版本的三个别名(DEV 别名指向 $LATEST 版本、BETA 别名指向版本 2、PROD 别名指向 Lambda 函数的版本 1)。