AWS Lambda 执行角色 - AWS Lambda
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

AWS Lambda 执行角色

AWS Lambda 函数的执行角色授予该函数访问 AWS 服务和资源的权限。您在创建函数时提供该角色,当您的函数被调用时,Lambda 代入该角色。您可以创建一个有权将日志发送到 Amazon CloudWatch 并将跟踪数据上传到 AWS X-Ray 的开发执行角色。

查看函数的执行角色

  1. 打开 Lambda 控制台 函数页面

  2. 选择函数。

  3. 选择 Permissions

  4. 资源摘要显示了函数有权访问的服务和资源。以下示例显示了当您在 Lambda 控制台中创建一个执行角色时,Lambda 向该执行角色添加的 CloudWatch Logs 权限。

    
          Lambda 控制台中的执行角色。
  5. 从下拉菜单中选择一个服务可查看与该服务相关的权限。

可以随时在函数的执行角色中添加或删除权限,或配置您的函数以使用不同的角色。为您的函数使用 AWS 开发工具包调用的任何服务以及为 Lambda 用来启用可选功能的服务添加权限。

当您向函数添加权限时,也要更新其代码或配置。这将强制停止并替换正在运行的带过期凭证的函数实例。

在 IAM 控制台中创建执行角色

默认情况下,当您在 Lambda 控制台中创建函数时,Lambda 会创建具有最少权限的执行角色。您也可以在 IAM 控制台中创建执行角色。

在 IAM 控制台中创建执行角色

  1. 打开 IAM 控制台中的“角色”页面

  2. 选择 Create role (创建角色)

  3. Common use cases (常见使用案例) 下,选择 Lambda

  4. 选择 Next: Permissions (下一步:权限)

  5. Attach permissions policies (附加权限策略) 下,选择 AWSLambdaBasicExecutionRoleAWSXRayDaemonWriteAccess 托管策略。

  6. 选择下一步: 标签

  7. 选择 下一步: 审核

  8. 对于 Role Name (角色名称),输入 lambda-role

  9. 选择创建角色

有关详细说明,请参阅 IAM 用户指南 中的创建角色

使用 IAM API 管理角色

执行角色是在您调用函数时 Lambda 有权代入的 IAM 角色。要使用 AWS CLI 创建执行角色,请使用 create-role 命令。

$ aws iam create-role --role-name lambda-ex --assume-role-policy-document file://trust-policy.json { "Role": { "Path": "/", "RoleName": "lambda-ex", "RoleId": "AROAQFOXMPL6TZ6ITKWND", "Arn": "arn:aws:iam::123456789012:role/lambda-ex", "CreateDate": "2020-01-17T23:19:12Z", "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } } }

trust-policy.json 文件是当前目录中的 JSON 文件,该文件定义了角色的信任策略。此信任策略通过向服务委托人授予调用 AWS Security Token Service AssumeRole 操作所需的 lambda.amazonaws.com 权限来允许 Lambda 使用角色的权限。

例 trust-policy.json

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

您也可以内联方式指定信任策略。JSON 字符串中转义引号的要求因您的 Shell 而异。

$ aws iam create-role --role-name lambda-ex --assume-role-policy-document '{"Version": "2012-10-17","Statement": [{ "Effect": "Allow", "Principal": {"Service": "lambda.amazonaws.com"}, "Action": "sts:AssumeRole"}]}'

要向角色添加权限,请使用 attach-policy-to-role 命令。首先,添加 AWSLambdaBasicExecutionRole 托管策略。

$ aws iam attach-role-policy --role-name lambda-ex --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole

Lambda 功能的托管策略

以下托管策略提供使用 Lambda 功能所需的权限:

  • AWSLambdaBasicExecutionRole – 将日志上传到 CloudWatch 的权限。

  • AWSLambdaKinesisExecutionRole – 读取来自 Amazon Kinesis 数据流或使用者的事件的权限。

  • AWSLambdaDynamoDBExecutionRole – 读取 Amazon DynamoDB 流记录的权限。

  • AWSLambdaSQSQueueExecutionRole – 读取 Amazon Simple Queue Service (Amazon SQS) 队列消息的权限。

  • AWSLambdaVPCAccessExecutionRole – 管理弹性网络接口以将您的函数连接到 VPC 的权限。

  • AWSXRayDaemonWriteAccess – 将跟踪数据上传到 X-Ray 的权限。

对于某些功能,Lambda 控制台会尝试在客户托管策略中向执行角色添加缺失的权限。这些策略可能会变得很多。在启用功能之前,请将相关的托管策略添加到您的执行角色以避免创建额外策略。

当您使用事件源映射调用您的函数时,Lambda 将使用执行角色读取事件数据。例如,Amazon Kinesis 的事件源映射从数据流读取事件并将事件成批发送到您的函数。可以将事件源映射用于以下服务:

Lambda 从其读取事件的服务

除了托管策略,Lambda 控制台还为创建包含与额外用例相关的权限的自定义策略提供模板。当您在 Lambda 控制台中创建函数时,可以选择利用来自一个或多个模板的权限创建新的执行角色。当您从蓝图创建函数,或者配置需要访问其他服务的选项时,也会自动应用这些模板。示例模板可从本指南的 GitHub 存储库中找到。