【问题标题】:AWS Amplify SNSRole error when trying to do an amplify push尝试执行放大推送时出现 AWS Amplify SNSRole 错误
【发布时间】:2020-05-16 07:11:32
【问题描述】:

我的公司有一个 Amplify 项目,该项目具有 2 个不同的环境(产品、开发),其中包含 Cognito 以及一些 lambda 和 api。一切正常,直到我尝试执行amplify pushcommand 来更新一个 lambda 函数。 这是 AWS 仪表板上 CloudFormation 的错误:

策略中的主体无效:“SERVICE”:“cognito-.amazonaws.com” (服务:AmazonIdentityManagement;状态代码:400;错误代码: 格式错误的政策文件;请求编号: 169462d5-58fb-40af-9c2d-69178442ecd6)

这是来自amplify push 输出的错误:

UPDATE_FAILED SNSRole
AWS::IAM::Role 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: "*"

【问题讨论】:

  • 您是否运行了“放大身份验证更新”或手动编辑 IAM 角色?您可以使用命令 'amplify env pull --restore' 来恢复标志以用云中的内容覆盖您的本地后端配置。否则,如果您仍然遇到此问题,请随时联系 Amplify 团队:github.com/aws-amplify/amplify-cli/issues
  • 我觉得这个错误有些问题。上面写着Invalid principal in policy: "SERVICE":"cognito-.amazonaws.com",但应该是cognito-idp.amazonaws.com。我对 Amplify 不是很熟悉,所以我不知道它是从哪里来的。
  • 你说的都是对的。在全新的 amplify-cli 安装上执行“pull --restore”是可行的,但如果它不是全新的安装,我认为不知何故,“amplify-cli”正在使用“cognito-.amazonaws.com”缓存错误的文件而不是新的,正确的,“cognito-idp.amazonaws.com”

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


【解决方案1】:

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

尝试在本地更改更正,然后推送到云端,它会用正确的文件覆盖远程 CloudFormation 模板文件。

希望能成功!

【讨论】:

    猜你喜欢
    • 2019-07-25
    • 2016-03-18
    • 1970-01-01
    • 2017-02-18
    • 2021-07-26
    • 1970-01-01
    • 1970-01-01
    • 2022-11-11
    • 2021-05-23
    相关资源
    最近更新 更多