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

在 Lambda 函数中使用环境变量

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

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

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

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

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

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

设置 Lambda 环境

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

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

    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

创建执行角色

创建您在创建 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 函数时,您将需要此值。

创建 Lambda 函数并测试

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

要创建 Lambda 函数,请打开一个命令提示符窗口并运行以下 Lambda AWS CLI create-function 命令。您需要提供 .zip 文件路径和执行角色 ARN。

$ aws lambda create-function --function-name ReturnBucketName \ --zip-file fileb://file-path/Test_Environment_Variables.zip \ --role role-arn \ --environment Variables={S3_BUCKET=Test} \ --handler index.handler --runtime nodejs8.10

然后运行以下 Lambda CLI invoke 命令以调用函数。

$ aws lambda invoke --function-name ReturnBucketName outputfile.txt

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

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

$ aws lambda update-function-configuration --function-name ReturnBucketName \ --environment Variables={S3_BUCKET=Prod}

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