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

AWS Lambda 执行角色

Lambda 函数的执行角色是一个 AWS Identity and Access Management (IAM) 角色,用于向函数授予访问 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. 选择创建角色

  3. 常用案例下,选择 Lambda

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

  5. 附加权限策略下,选择 AWS 托管策略 AWSLambdaBasicExecutionRoleAWSXRayDaemonWriteAccess

  6. 选择下一步: 标签

  7. 选择 下一步: 审核

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

  9. 选择创建角色

有关详细说明,请参阅 IAM 用户指南 中的为 AWS 服务创建角色(控制台)

使用 IAM API 管理角色

要使用 AWS Command Line Interface (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 功能的 AWS 托管策略

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

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

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

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

  • AWSLambdaMSKExecutionRole – 从 Amazon Managed Streaming for Apache Kafka (Amazon MSK) 集群读取记录的权限。

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

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

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

  • CloudWatchLambdaInsightsExecutionRolePolicy – 向 CloudWatch Lambda Insights 写入运行时指标的权限。

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

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

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