在 Lambda 中使用基于资源的 IAM 策略 - AWS Lambda

在 Lambda 中使用基于资源的 IAM 策略

Lambda 支持将基于资源的权限策略用于 Lambda 函数和层。您可以使用基于资源的策略向其他 AWS 账户组织服务授予访问权限。基于资源的策略应用于单个函数、版本、别名或层版本。

Console
查看函数的基于资源的策略
  1. 打开 Lamba 控制台的 Functions(函数)页面。

  2. 选择函数。

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

  4. 向下滚动到 Resource-based policy (基于资源的策略),然后选择 View policy document (查看策略文档)。基于资源的策略显示了在其他账户或 AWS 服务尝试访问该函数时应用的权限。以下示例显示了一个语句,该语句允许 Amazon S3 调用为账户 123456789012 中名为 amzn-s3-demo-bucket 的存储桶调用名为 my-function 的函数。

    例 基于资源的策略
    { "Version": "2012-10-17", "Id": "default", "Statement": [ { "Sid": "lambda-allow-s3-my-function", "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-east-2:123456789012:function:my-function", "Condition": { "StringEquals": { "AWS:SourceAccount": "123456789012" }, "ArnLike": { "AWS:SourceArn": "arn:aws:s3:::amzn-s3-demo-bucket" } } } ] }
AWS CLI

要查看函数的基于资源的策略,请使用 get-policy 命令。

aws lambda get-policy \ --function-name my-function \ --output text

您应看到以下输出:

{"Version":"2012-10-17","Id":"default","Statement":[{"Sid":"sns","Effect":"Allow","Principal":{"Service":"s3.amazonaws.com"},"Action":"lambda:InvokeFunction","Resource":"arn:aws:lambda:us-east-2:123456789012:function:my-function","Condition":{"ArnLike":{"AWS:SourceArn":"arn:aws:sns:us-east-2:123456789012:lambda*"}}}]} 7c681fc9-b791-4e91-acdf-eb847fdaa0f0

对于版本和别名,请在函数名后面附加版本号或别名。

aws lambda get-policy --function-name my-function:PROD

要从函数中删除权限,请使用 remove-permission

aws lambda remove-permission \ --function-name example \ --statement-id sns

使用 get-layer-version-policy 命令可查看层上的权限。

aws lambda get-layer-version-policy \ --layer-name my-layer \ --version-number 3 \ --output text

您应看到以下输出:

b0cd9796-d4eb-4564-939f-de7fe0b42236    {"Sid":"engineering-org","Effect":"Allow","Principal":"*","Action":"lambda:GetLayerVersion","Resource":"arn:aws:lambda:us-west-2:123456789012:layer:my-layer:3","Condition":{"StringEquals":{"aws:PrincipalOrgID":"o-t194hfs8cz"}}}"

使用 remove-layer-version-permission 可从策略中删除语句。

aws lambda remove-layer-version-permission --layer-name my-layer --version-number 3 --statement-id engineering-org

支持的 API 操作

以下 Lambda API 操作支持基于资源的策略: