当我尝试使用bitbucket将新API推向AWS时,管道在 serverless exploy 步骤中失败,并说:
iamrolelambdaexecution-最大策略大小10240字节超过角色xxxxxx
最后一个成功创建的角色xxxxxx具有以下内容:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"logs:CreateLogStream"
],
"Resource": [
"arn:aws:logs:eu-central-1:123456789012:log-group:/aws/lambda/functionname1:*“,
…
"arn:aws:logs:eu-central-1:123456789012:log-group:/aws/lambda/functionname50:*“
],
"Effect": "Allow"
},
{
"Action": [
"logs:PutLogEvents"
],
"Resource": [
"arn:aws:logs:eu-central-1:123456789012:log-group:/aws/lambda/functionname1:*“,
…
"arn:aws:logs:eu-central-1:123456789012:log-group:/aws/lambda/functionname50:*“
],
"Effect": "Allow"
}
]
}
当我剥离每个线馈送和空间时,我收到的几个字母和符号少于10240个。因此,我很确定我角色的大量日志许可就是我的问题。
当我删除我的一个功能时,它起作用,并且API被部署。当我添加一个功能时,它再次显示同一错误。
我正在使用以下插件:无服务器 - plugin-browserify,无服务器式填充,无服务器 - 域 - 管理器,无服务器-plugin-split-stacks,无server-openapi-pocumentation
我正在搜索解决方案并尝试将近一周的时间。有人知道我如何摆脱这个问题吗?
最后我找到了解决方案。这是一个称为无服务的插件
可以在此处找到插件:https://www.npmjs.com/package/serverless-plugin-custom-roles
并感谢Maycon Viana Bordin的文章,将我指向解决方案并解释了问题:https://medium.com/@mayconbordin/@mayconbordin/lessers-leless-leless-larned-building-a-large-a-large-serverless-serverless-serverless-prohens-prohens-project-on-AWS-74D40F5B0B46
作为快速修复我删除了一个功能,部署成功了。
灵感来自此
查看无服务器简称 - 默认 - exec-lole-plugin插件。
从NPM安装它,然后将其添加到您的serverless.yml
文件:
plugins:
- '@shelf/serverless-simplify-default-exec-role-plugin'
这是因为无服务器框架为CloudWatch访问生成了非常详细的IAM策略。
此插件通过简化了数十种资源来工作:
"arn:${AWS::Partition}:logs:${AWS::Region}:${AWS::AccountId}:log-group:/aws/lambda/production-users-createUser:*"
具有1个通配符资源,例如:
"arn:${AWS::Partition}:logs:${AWS::Region}:${AWS::AccountId}:log-group:*"
我发现这个有用:https://github.com/shelfio/serverless-simplify-default-exec--role-plugin
我遇到了一个与https://www.npmjs.com/package/serverless-plugin-custom-roles一起工作的问题。我认为我看到的问题是因为无服务器 - 拼写 - custom-custom-roles似乎没有为AWS GovCloud拾取正确的AWS分区,并继续引用AWS商业分区。