尝试执行放大推送时,AWS Amplify SNSRole错误

时间:2020-01-30 16:01:46

标签: amazon-web-services aws-lambda amazon-cloudformation aws-amplify

我的公司有一个带有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: "*"

1 个答案:

答案 0 :(得分:1)

您是否检查了管理环境的S3存储桶的内容?我们遇到了类似的问题,我们发现尽管我们的本地SNSRole配置正确,但是S3存储桶的CloudFormation模板文件很旧,仍然存在'cognito-.amazon ...'问题。

尝试在本地更改此错误,然后推送到云中,它将使用正确的文件覆盖远程CloudFormation模板文件。

希望它能解决!