Lambda 函数执行角色权限和调用权限有什么区别?

上次更新日期:2022 年 3 月 9 日

我想了解 AWS Lambda 函数执行角色权限和调用权限之间的区别。适用于 Lambda 的两种类型的 AWS Identity and Access Management(IAM)权限有何不同?

解决方法

重要提示:在创建 IAM 策略时,最佳实践是仅授予执行特定任务所需的权限。有关更多信息,请参阅 IAM 用户指南中的授予最低权限

Lambda 函数执行角色权限

Lambda 执行角色权限是 IAM 权限,授予 Lambda 函数访问特定 AWS 云服务和资源的权限。如果您未授予函数执行角色对 AWS 云服务或资源的权限,则函数将无法访问该服务或资源。

重要提示:对于轮询其他 AWS 云服务的 Lambda 函数,需要允许函数从这些服务中检索记录的执行角色权限。

如何授予执行角色权限

Lambda 执行角色权限以特定 API 操作标识符(例如 s3:GetObject)的形式授予。这些操作标识符列在 IAM 策略声明的操作元素中。然后,该策略将附加到名为执行角色的 IAM 角色,您的 Lambda 函数被调用时会担任该角色。

对于生成队列或数据流的服务,您必须配置事件源映射以让 Lambda 轮询队列或数据流。事件源映射使用函数执行角色中的权限来读取和管理事件源中的项目。

注意:权限、事件结构、设置和轮询行为因事件源而异。有关包含 Lambda 轮询权限的 IAM 策略的示例,请参阅允许 AWS Lambda 函数访问 DynamoDB 流记录的 IAM 策略

Lambda 函数调用权限

Lambda 函数调用权限是 IAM 权限,授予特定 AWS 云服务或资源调用 Lambda 函数的权限。如果您没有为 Lambda 函数授予服务或资源调用权限,则该服务或资源将无法调用您的函数。

重要提示:对于由将事件源推送到函数的 AWS 云服务调用的 Lambda 函数,需要调用权限。

如何授予调用权限

Lambda 调用权限以特定 API 操作标识符(lambda:InvokeFunction)的形式授予。此操作标识符列在 Lambda 函数的基于 IAM 资源的策略声明的操作元素中。Lambda 函数的基于资源的策略与函数的执行角色是分开配置的。

注意:这是操作标识符(lambda:InvokeFunction)与 API 操作(Invoke)不同的特殊情况。对于其他操作,操作标识符是以 lambda: 为前缀的操作名称。

当您使用 Lambda 控制台向函数添加触发时,所需的调用权限会自动添加到函数的基于资源的策略中。要向控制台中不可用的账户或服务授予权限,您必须使用 Lambda AddPermission API 操作。

有关更多信息,请参阅授予函数访问 AWS 服务的权限


AWS Lambda 权限

应用最低权限原则(Lambda 操作指南)

这篇文章对您有帮助吗?


您是否需要账单或技术支持?