Amazon Lambda 执行角色
Lambda 函数的执行角色是一个 Amazon Identity and Access Management (IAM) 角色,用于向函数授予访问Amazon服务和资源的权限。您在创建函数时提供该角色,当您的函数被调用时,Lambda 代入该角色。您可以创建一个有权将日志发送到 Amazon CloudWatch 并将跟踪数据上载到 Amazon X-Ray 的开发执行角色。
查看函数的执行角色
打开 Lamba 控制台的 Functions(函数)页面
。 -
选择函数。
-
选择 Configuration (配置),然后选择 Permissions (权限)。
-
在资源摘要下,查看函数可以访问的服务和资源。
-
从下拉列表中选择一个服务以查看与该服务相关的权限。
可以随时在函数的执行角色中添加或删除权限,或配置您的函数以使用不同的角色。为您的函数使用Amazon开发工具包调用的任何服务以及为 Lambda 用来启用可选功能的服务添加权限。
向函数添加权限时,请同时更新其代码或配置。这会强制运行具有过期凭据的函数实例,以便停止并替换。
在 IAM 控制台中创建执行角色
预设情况下,当您在 Lambda 控制台中创建函数时,Lambda 会创建具有最少权限的执行角色。您也可以在 IAM 控制台中创建执行角色。
在 IAM 控制台中创建执行角色
-
在 IAM 控制台中,打开“Roles (角色)”页面
。 -
选择 Create role (创建角色)。
-
在Common use cases(常用使用案例)下,选择 Lambda。
-
选择下一步: 权限。
-
在附加权限策略下,选择 Amazon 托管策略 AWSLambdaBasicExecutionRole 和 AWSXRayDaemonWriteAccess。
-
选择下一步: 标签。
-
选择 Next: Review (下一步: 审核)。
-
对于 Role name(角色名称),输入
lambda-role
。 -
选择创建角色。
有关详细说明,请参阅 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 |
|
2022 年 2 月 14 日 |
AWSLambdaDynamoDBExecutionRole |
|
2022 年 2 月 14 日 |
AWSLambdaKinesisExecutionRole |
|
2022 年 2 月 14 日 |
AWSLambdaMSKExecutionRole |
|
2022 年 2 月 14 日 |
AWSLambdaSQSQueueExecutionRole |
|
2022 年 2 月 14 日 |
AWSLambdaVPCAccessExecutionRole |
|
2022 年 2 月 14 日 |
AWSXRayDaemonWriteAccess |
|
2022 年 2 月 14 日 |
CloudWatchLambdaInsightsExecutionRolePolicy |
|
2022 年 2 月 14 日 |
AmazonS3ObjectLambdaExecutionRolePolicy |
|
2022 年 2 月 14 日 |
对于某些功能,Lambda 控制台会尝试在客户托管式策略中向执行角色添加缺失的权限。这些策略可能会变得很多。为避免创建额外的策略,在启用功能之前,请将相关的 Amazon 托管策略添加到您的执行角色。
当您使用事件源映射调用您的函数时,Lambda 将使用执行角色读取事件数据。例如,Kinesis 的事件源映射从数据流读取事件并将事件成批发送到您的函数。可以将事件源映射用于以下服务:
Lambda 从中读取事件的服务
除了Amazon托管式策略,Lambda 控制台还提供模板,以创建包含用于额外使用案例的权限的自定义策略。当您在 Lambda 控制台中创建函数时,可以选择利用来自一个或多个模板的权限创建新的执行角色。当您从蓝图创建函数,或者配置需要访问其他服务的选项时,也会自动应用这些模板。示例模板可从本指南的 GitHub 存储库