Amazon web services 无服务器-如何将多个文件添加到IAroleStatement?
在我的Amazon web services 无服务器-如何将多个文件添加到IAroleStatement?,amazon-web-services,yaml,serverless-framework,Amazon Web Services,Yaml,Serverless Framework,在我的serverless.yml文件中,我希望能够从两个不同的文件中添加iamRoleStatements(这不能更改)。所以我试着这样做: provider: iamRoleStatements: - ${file(__environments.yml):dev.iamRoleStatements, ''} - ${file(custom.yml):provider.iamRoleStatements, ''} { "provider": { "iamRo
serverless.yml
文件中,我希望能够从两个不同的文件中添加iamRoleStatements
(这不能更改)。所以我试着这样做:
provider:
iamRoleStatements:
- ${file(__environments.yml):dev.iamRoleStatements, ''}
- ${file(custom.yml):provider.iamRoleStatements, ''}
{
"provider": {
"iamRoleStatements": [
[
{
"Effect": "Allow",
"Action": "execute-api:Invoke",
"Resource": "*"
}
],
[
{
"Effect": "Allow",
"Action": [
"lambda:InvokeFunction"
],
"Resource": [
"*"
]
}
]
]
}
}
每个文件都有一个iarolestatements
部分
__environments.yml:
custom.yml:
就个人而言,它们每一个都非常有效。但是,当我尝试使用这两个工具运行sls deploy
时,我遇到以下错误:
IAroleStatements应该是一个对象数组,其中每个对象都有Effect、Action/NotAction、Resource/NotResource字段。具体来说,语句0缺少以下属性:Effect、Action/NotAction、Resource/NotResource;语句1缺少以下属性:Effect、Action/NotAction、Resource/NotResource
我在网上搜索过,这似乎适用于无服务器文件的其他部分,如参考资料
:
# This works perfectly well.
resources:
- ${file(custom.yml):resources, ''}
- ${file(__environments.yml):resources, ''}
因此,我想知道是否有任何解决方案,或者它是否是无服务器框架目前不支持的
谢谢你的帮助。你要想到达那里,得先跳过几圈 文件合并限制 无服务器框架允许在配置中的任何位置导入文件,但不包括节 你的例子是:
provider:
iamRoleStatements:
- ${file(__environments.yml):dev.iamRoleStatements, ''}
- ${file(custom.yml):provider.iamRoleStatements, ''}
结果会产生如下数组:
provider:
iamRoleStatements:
- ${file(__environments.yml):dev.iamRoleStatements, ''}
- ${file(custom.yml):provider.iamRoleStatements, ''}
{
"provider": {
"iamRoleStatements": [
[
{
"Effect": "Allow",
"Action": "execute-api:Invoke",
"Resource": "*"
}
],
[
{
"Effect": "Allow",
"Action": [
"lambda:InvokeFunction"
],
"Resource": [
"*"
]
}
]
]
}
}
您可以提交一个非常小的请求来纠正这个问题
IAM使用引用管理策略
可以将每个IAM角色定义为自定义资源,并使用指向这些资源的。比如:
provider:
name: aws
iamManagedPolicies:
- Ref: DevIamRole
- Ref: CustomIamRole
resources:
- ${file(__environments.yml):resources, ''}
- ${file(custom.yml):resources, ''}
当然,您需要将这两个文件的结构更改为AWS::IAM::Role
resources
自定义IAM角色
该框架还为您提供了完全控制的选项,即
我希望这有帮助