AWS Lambda
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

Lambda 操作的资源和条件

您可以通过在 IAM 策略中指定资源和条件来限制用户权限的范围。每个 API 操作都支持资源和条件类型的组合,这些类型根据操作的行为而有所不同。

每条 IAM 策略语句为对一个资源执行的一个操作授予权限。如果操作不对指定资源执行操作,或者您授予对所有资源执行操作的权限,则策略中资源的值为通配符 (*)。对于许多 API 操作,可以通过指定资源的 Amazon 资源名称 (ARN) 或与多个资源匹配的 ARN 模式来限制用户可修改的资源。

要按资源限制权限,请指定资源的 ARN。

Lambda 资源 ARN 格式

  • 函数 – arn:aws:lambda:us-west-2:123456789012:function:my-function

  • 函数版本 – arn:aws:lambda:us-west-2:123456789012:function:my-function:1

  • 函数别名 – arn:aws:lambda:us-west-2:123456789012:function:my-function:TEST

  • 事件源映射 – arn:aws:lambda:us-west-2:123456789012:event-source-mapping:fa123456-14a1-4fd2-9fec-83de64ad683de6d47

  • 层 – arn:aws:lambda:us-west-2:123456789012:layer:my-layer

  • 层版本 – arn:aws:lambda:us-west-2:123456789012:layer:my-layer:1

例如,以下策略允许 123456789012 账户中的用户调用 美国西部(俄勒冈) 区域中名为 my-function 的函数。

例 调用函数策略

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Invoke", "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:us-west-2:123456789012:function:my-function" } ] }

这是一种特殊情形,其中,操作标识符 (lambda:InvokeFunction) 不同于 API 操作 (Invoke)。对于其他操作,操作标识符为操作名称加上 lambda: 前缀。

条件是可选的策略元素,它应用其他逻辑来确定是否允许执行操作。除了所有操作支持的公用条件之外,Lambda 定义了一些条件类型,您可以用来限制某些操作的额外参数的值。

例如,lambda:Principal 条件允许您限制用户可以在函数的基于资源的策略上为其授予调用权限的服务或账户。以下策略允许用户授予对 SNS 主题的权限,以调用名为 test 的函数。

例 管理函数策略权限

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ManageFunctionPolicy", "Effect": "Allow", "Action": [ "lambda:AddPermission", "lambda:RemovePermission" ], "Resource": "arn:aws:lambda:us-west-2:123456789012:function:test:*", "Condition": { "StringEquals": { "lambda:Principal": "sns.amazonaws.com" } } } ] }

该条件要求委托人是 Amazon SNS 而不是其他服务或账户。资源模式要求函数名称为 test 并包含版本号或别名。例如:test:v1

有关 Lambda 和其他 AWS 服务的资源和条件的更多信息,请参阅 IAM 用户指南 中的操作、资源和条件键

小节目录

函数

对函数进行的操作可以通过函数、版本或别名 ARN 限制为特定函数,如下表中所述。只能为所有资源 (*) 授予不支持资源限制的操作。

事件源映射

对于事件源映射,可以将删除和更新权限限制为特定事件源。lambda:FunctionArn 条件允许您限制用户可配置事件源以调用的函数。

对于这些操作,资源是事件源映射,因此 Lambda 提供了一个条件,允许您根据事件源映射调用的函数来限制权限。

事件源映射

操作 资源 Condition

DeleteEventSourceMapping

UpdateEventSourceMapping

事件源映射

lambda:FunctionArn

CreateEventSourceMapping

*

lambda:FunctionArn

GetEventSourceMapping

ListEventSourceMappings

*

通过层操作,您可以限制用户可通过函数管理或使用的层。与层使用和权限相关的操作作用于层的版本,而 PublishLayerVersion 作用于层名称。两者都可以与通配符一起使用,以通过名称限制用户可以使用的层。

本页内容: