我的公司有一个带有2个不同环境(prod,dev)的Amplify项目,其中包含Cognito以及一些lambda和api。一切正常,直到我尝试执行amplify push
命令来更新一个lambda函数。
这是AWS仪表板上CloudFormation的错误:
策略中无效的委托人:“ SERVICE”:“ cognito-.amazonaws.com” (服务:AmazonIdentityManagement;状态代码:400;错误代码: 格式错误的政策文件;要求编号: 169462d5-58fb-40af-9c2d-69178442ecd6)
这是amplify push
输出中的错误:
UPDATE_FAILED SNSRole
AWS :: IAM :: Role Thu 2020年1月30日13:46:08 GMT-0200(巴西 夏令时)政策中的主体无效: “ SERVICE”:“ cognito-.amazonaws.com”(服务:AmazonIdentityManagement; 状态码:400;错误代码:MalformedPolicyDocument;要求编号: 56f492a2-c40e-4827-8c53-07cdf44bc780)
如您所见,Cognito的云形成文件存在错误,但是存在当前的SNSRole配置:
# BEGIN SNS ROLE RESOURCE
SNSRole:
# Created to allow the UserPool SMS Config to publish via the Simple Notification Service during MFA Process
Type: AWS::IAM::Role
Properties:
RoleName: !Ref roleName
AssumeRolePolicyDocument:
Version: "2012-10-17"
Statement:
- Sid: ""
Effect: "Allow"
Principal:
Service: "cognito-idp.amazonaws.com"
Action:
- "sts:AssumeRole"
Condition:
StringEquals:
sts:ExternalId: !Ref roleExternalId
Policies:
-
PolicyName: !Ref policyName
PolicyDocument:
Version: "2012-10-17"
Statement:
-
Effect: "Allow"
Action:
- "sns:Publish"
Resource: "*"
答案 0 :(得分:1)
您是否检查了管理环境的S3存储桶的内容?我们遇到了类似的问题,我们发现尽管我们的本地SNSRole配置正确,但是S3存储桶的CloudFormation模板文件很旧,仍然存在'cognito-.amazon ...'问题。
尝试在本地更改此错误,然后推送到云中,它将使用正确的文件覆盖远程CloudFormation模板文件。
希望它能解决!