Lambda 支持将基于资源的权限策略用于 Lambda 函数和层。您可以使用基于资源的策略向其他 AWS 账户、组织或服务授予访问权限。基于资源的策略应用于单个函数、版本、别名或层版本。
打开 Lamba 控制台的 Functions(函数)页面。
选择函数。
选择 Configuration (配置),然后选择 Permissions (权限)。
向下滚动到 Resource-based policy (基于资源的策略),然后选择 View policy document (查看策略文档)。基于资源的策略显示了在其他账户或 AWS 服务尝试访问该函数时应用的权限。以下示例显示了一个语句,该语句允许 Amazon S3 调用为账户 123456789012 中名为 amzn-s3-demo-bucket 的存储桶调用名为 my-function 的函数。
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" } } } ] }
要查看函数的基于资源的策略,请使用 get-policy 命令。
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。
remove-permission
aws lambda remove-permission \ --function-name example \ --statement-id sns
使用 get-layer-version-policy 命令可查看层上的权限。
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 可从策略中删除语句。
remove-layer-version-permission
aws lambda remove-layer-version-permission --layer-name my-layer --version-number 3 --statement-id engineering-org
以下 Lambda API 操作支持基于资源的策略:
CreateAlias
DeleteAlias
DeleteFunction
DeleteFunctionConcurrency
DeleteFunctionEventInvokeConfig
DeleteProvisionedConcurrencyConfig
GetAlias
GetFunction
GetFunctionConcurrency
GetFunctionConfiguration
GetFunctionEventInvokeConfig
GetPolicy
GetProvisionedConcurrencyConfig
Invoke
ListAliases
ListFunctionEventInvokeConfigs
ListProvisionedConcurrencyConfigs
ListTags
ListVersionsByFunction
PublishVersion
PutFunctionConcurrency
PutFunctionEventInvokeConfig
PutProvisionedConcurrencyConfig
TagResource
UntagResource
UpdateAlias
UpdateFunctionCode
UpdateFunctionEventInvokeConfig
Javascript 在您的浏览器中被禁用或不可用。
要使用 Amazon Web Services 文档,必须启用 Javascript。请参阅浏览器的帮助页面以了解相关说明。
感谢您对我们工作的肯定!
如果不耽误您的时间,请告诉我们做得好的地方,让我们做得更好。
感谢您告诉我们本页内容还需要完善。很抱歉让您失望了。
如果不耽误您的时间,请告诉我们如何改进文档。