AWS Lambda
开发人员指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

使用环境变量创建 Lambda 函数

本节将详细说明如何在无需更改 Lambda 函数代码的情况下通过配置更改来修改 Lambda 函数的行为。

在本教程中,您将执行以下操作:

  • 使用指定 Amazon S3 存储桶名称的环境变量的值返回的示例代码创建部署程序包。

  • 调用一个 Lambda 函数并确认返回的 Amazon S3 存储桶的名称与相应环境变量设置的值一致。

  • 通过更改相应环境变量指定的 Amazon S3 存储桶的名称更新 Lambda 函数。

  • 再次调用 Lambda 函数并确认返回的 Amazon S3 存储桶的名称与更新后的值一致。

步骤 1:准备

确保您已完成以下步骤:

  • 注册 AWS 账户并在该账户中创建管理员用户。

  • 安装并设置 AWS CLI。

有关说明,请参阅步骤 1:设置 AWS 账户和 AWS CLI

步骤 2:设置 Lambda 环境

请在此部分中执行以下操作:

  • 使用提供的示例代码创建 Lambda 函数部署程序包。

  • 创建 Lambda 执行角色。

  • 通过上传部署程序包创建 Lambda 函数,然后手动调用该函数以便对其进行测试。

步骤 2.1:创建部署程序包

以下代码示例将读取返回 Amazon S3 存储桶名称的 Lambda 函数的环境变量。

  1. 打开文本编辑器,并复制以下代码:

    Copy
    var AWS = require('aws-sdk'); exports.handler = function(event, context, callback) { var bucketName = process.env.S3_BUCKET; callback(null, bucketName); }
  2. 将该文件保存为 index.js

  3. index.js 文件压缩为 Test_Environment_Variables.zip

步骤 2.2:创建执行角色

创建您在创建 Lambda 函数时指定的 IAM 角色(执行角色)。

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

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

    • Select Role Type 中,选择 AWS Service Roles,然后选择 AWS Lambda

    • Attach Policy 中,选择名为 AWSLambdaBasicExecutionRole 的策略。

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

步骤 2.3:创建 Lambda 函数并对其进行测试

在本节中,您将创建一个 Lambda 函数,其中包含指定名称为 Test 的 Amazon S3 存储桶的环境变量。调用此函数时,它将直接返回 Amazon S3 存储桶的名称。然后,通过将 Amazon S3 存储桶的名称更改为 Prod 更新相应配置,这样一来,再次调用此函数时,它会返回 Amazon S3 存储桶更新后的名称。

要创建 Lambda 函数,请打开一个命令提示符窗口并运行以下 Lambda AWS CLI create-function 命令。您需要提供 .zip 文件路径和执行角色 ARN。请注意,Runtime 参数使用 nodejs6.10,但您还可以指定 nodejs4.3

Copy
aws lambda create-function \ --region us-east-1 \ --function-name ReturnBucketName \ --zip-file fileb://file-path/Test_Environment_Variables.zip \ --role role-arn \ --environment Variables={S3_BUCKET=Test} \ --handler index.handler \ --runtime nodejs6.10 \ --version version \ --profile default

注意

或者,您也可以将 .zip 文件上传到同一 AWS 区域中的 Amazon S3 存储桶,然后在之前的命令中指定该存储桶和对象名称。您需要将 --zip-file 参数替换为 --code 参数。例如:

Copy
--code S3Bucket=bucket-name,S3Key=zip-file-object-key

然后运行以下 Lambda CLI invoke 命令以调用函数。请注意,该命令会请求异步执行。(可选)可通过将 RequestResponse 指定为 invocation-type 参数值来同步调用它。

Copy
aws lambda invoke \ --invocation-type Event \ --function-name ReturnBucketName \ --region us-east-1 \ --profile default \ outputfile.txt

Lambda 函数会将 Amazon S3 存储桶的名称返回为“Test”。

然后运行以下 Lambda CLI update-function-configuration 命令,通过将 Amazon S3 环境变量指向 Prod 存储桶对其进行更新。

Copy
aws lambda update-function-configuration --function-name ReturnBucketName \ --region us-east-1 \ --environment Variables={S3_BUCKET=Prod} \

再次使用相同参数运行 aws lambda invoke 命令。这一次,Lambda 函数会将 Amazon S3 存储桶的名称返回为 Prod