amazon-web-services - 无法在 SAM 模板资源中获取策略定义的语法(无服务器功能)
问题描述
AWS 托管策略( ) 的策略定义AWSLambdaExecute
为:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [ "logs:*" ],
"Resource": "arn:aws:logs:*:*:*"
},
{
"Effect": "Allow",
"Action": [ "s3:GetObject", "s3:PutObject" ],
"Resource": "arn:aws:s3:::*"
}
]
}
但是AWS_documentation提供了一个使用相同策略名称的示例无服务器函数AWSLambdaExecute
,如下所示:
Type: AWS::Serverless::Function
Properties:
Handler: index.js
Runtime: nodejs8.10
CodeUri: 's3://my-code-bucket/my-function.zip'
Description: Creates thumbnails of uploaded images
MemorySize: 1024
Timeout: 15
Policies:
- AWSLambdaExecute # Managed Policy
- Version: '2012-10-17' # Policy Document
Statement:
- Effect: Allow
Action:
- s3:GetObject
- s3:GetObjectACL
Resource: 'arn:aws:s3:::my-bucket/*'
与上述定义不符。
编辑:
下面是示例函数的执行角色...我没有看到 AWS 托管的执行角色名称(例如AWSLambdaBasicExecutionRole
)。因为我的理解是, AWSLambdaBasicExecutionRole
角色应该默认分配给 Lambda
我们是否覆盖了AWSLambdaExecute
本示例中的策略定义?
解决方案
当您指定策略时,您基本上是在为您的 lambda 函数构建一个执行角色。
Policies
是一个策略列表,因为角色可以在其中包含多个策略。
这条线
- AWSLambdaExecute # Managed Policy
声明您正在创建的 lambda 函数应包含此 AWS 托管策略
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [ "logs:*" ],
"Resource": "arn:aws:logs:*:*:*"
},
{
"Effect": "Allow",
"Action": [ "s3:GetObject", "s3:PutObject" ],
"Resource": "arn:aws:s3:::*"
}
]
}
以下几行:
- Version: '2012-10-17' # Policy Document
Statement:
- Effect: Allow
Action:
- s3:GetObject
- s3:GetObjectACL
Resource: 'arn:aws:s3:::my-bucket/*'
正在指定要包含在 lambda 执行角色中的下一个策略。
在此示例中,我们是否覆盖了 AWSLambdaExecute 的策略定义?
不,我们正在向 lambda 执行角色添加多个策略,其中之一是 AWS 托管策略,另一个是我们自己的自定义策略。因此 lambda 函数将具有在它们两者中定义的权限。或者更准确地说,这些策略的联合将被合并并且 lambda 函数将具有由该联合定义的权限,这意味着如果一个策略允许 lambda 函数做某事而另一个拒绝相同的事情,结果将是该操作将被拒绝。
推荐阅读
- dspace - Creating new user on fresh Dspace Install on Ubuntu
- html - img 不符合网格行高
- python - 从一个新列中提取x坐标?
- ruby-on-rails - Rails:在传递给模型之前根据用户类型修改参数的设计模式
- flutter - Flutter-onTap 和 Display 快餐栏时如何关闭底部模态表?
- gitlab - 为组中的用户与特定项目中的用户设置不同的角色
- java - 以编程方式模仿 @Bean 方法将多个实例注册为 bean
- testing - QTP - 确定是否继续操作
- python - CSV 文件,错误。Python
- javascript - 修改 Spree Cart.js 以显示正确的购物车项目计数和数量