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

Amazon Lambda 执行角色

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

查看函数的执行角色

  1. 打开 Lamba 控制台的 Functions(函数)页面

  2. 选择函数。

  3. 选择 Configuration (配置),然后选择 Permissions (权限)

  4. 资源摘要下,查看函数可以访问的服务和资源。

  5. 从下拉列表中选择一个服务以查看与该服务相关的权限。

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

向函数添加权限时,请同时更新其代码或配置。这会强制运行具有过期凭据的函数实例,以便停止并替换。

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

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

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

  1. 在 IAM 控制台中,打开“Roles (角色)”页面

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

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

  4. 选择下一步: 权限

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

  6. 选择下一步: 标签

  7. 选择 Next: Review (下一步: 审核)

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

  9. 选择创建角色

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

授予对 Lambda 执行角色的最低访问权限

在开发阶段首次为 Lambda 函数创建 IAM 角色时,有时授予的权限可能超出所需权限。在生产环境中发布函数之前,最佳实践是调整策略以仅包含所需权限。有关更多信息,请参阅授予最小权限

使用 IAM 访问分析器帮助确定 IAM 执行角色策略所需的权限。IAM 访问分析器将检查您指定的日期范围内的 Amazon CloudTrail 日志,并生成仅具有该函数在该时间内使用的权限的策略模板。您可以使用模板创建具有精细权限的托管策略,然后将其附加到 IAM 角色。这样,您仅需授予角色与特定使用案例中的 Amazon 资源进行交互所需的权限。

要了解更多信息,请参阅 IAM 用户指南中的基于访问活动生成策略

使用 IAM API 管理角色

要使用 Amazon Command Line Interface (Amazon CLI) 创建执行角色,请使用 create-role 命令。

在以下示例中,您可以指定内联信任策略。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"}]}'

您还可以使用 JSON 文件为角色定义信任策略。在下面的示例中,trust-policy.json 是位于当前目录中的一个文件。该信任策略允许 Lambda 通过授予服务委托人调用 Amazon Security Token Service AssumeRole 操作的 lambda.amazonaws.com 权限来使用角色的权限。

例 trust-policy.json

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
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" } ] } } }

要向角色添加权限,请使用 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 功能的Amazon托管式策略

以下 Amazon 托管式策略提供使用 Lambda 函数所需的权限。

更改 描述 日期

AWSLambdaBasicExecutionRole – Lambda 开始跟踪对此策略所做的更改。

AWSLambdaBasicExecutionRole 授予将日志上传至 CloudWatch 的权限。

2022 年 2 月 14 日

AWSLambdaDynamoDBExecutionRole – Lambda 开始跟踪对此策略所做的更改。

AWSLambdaDynamoDBExecutionRole 授予读取 Amazon DynamoDB 流中的记录并写入到 CloudWatch Logs 的权限。

2022 年 2 月 14 日

AWSLambdaKinesisExecutionRole – Lambda 开始跟踪对此策略所做的更改。

AWSLambdaKinesisExecutionRole 授予读取 Amazon Kinesis 数据流中的事件并写入到 CloudWatch Logs 的权限。

2022 年 2 月 14 日

AWSLambdaMSKExecutionRole – Lambda 开始跟踪对此策略所做的更改。

AWSLambdaMSKExecutionRole 授予读取和访问 Amazon Managed Streaming for Apache Kafka (Amazon MSK) 集群中的记录、管理网络接口 (ENI) 并写入到 CloudWatch Logs 的权限。

2022 年 2 月 14 日

AWSLambdaSQSQueueExecutionRole – Lambda 开始跟踪对此策略所做的更改。

AWSLambdaSQSQueueExecutionRole 授予读取 Amazon Simple Queue Service (Amazon SQS) 队列中的消息并写入到 CloudWatch Logs 的权限。

2022 年 2 月 14 日

AWSLambdaVPCAccessExecutionRole – Lambda 开始跟踪对此策略所做的更改。

AWSLambdaVPCAccessExecutionRole 授予管理 Amazon VPC 中的 ENI 并写入到 CloudWatch Logs 的权限。

2022 年 2 月 14 日

AWSXRayDaemonWriteAccess – Lambda 开始跟踪对此策略所做的更改。

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

2022 年 2 月 14 日

CloudWatchLambdaInsightsExecutionRolePolicy – Lambda 开始跟踪对此策略所做的更改。

CloudWatchLambdaInsightsExecutionRolePolicy 授予将运行时指标写入到 CloudWatch Lambda Insights 的权限。

2022 年 2 月 14 日

AmazonS3ObjectLambdaExecutionRolePolicy – Lambda 开始跟踪对此策略所做的更改。

AmazonS3ObjectLambdaExecutionRolePolicy 授予与 Amazon S3 对象 Lambda 交互并写入到 CloudWatch Logs 的权限。

2022 年 2 月 14 日

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

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

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