【问题标题】:Deploy AWS UserPool via CloudFormation with attribute update通过 CloudFormation 部署 AWS UserPool 并更新属性
【发布时间】:2020-04-10 18:36:34
【问题描述】:

如果您通过 CloudFormation 部署 UserPool,例如:

Resources:
  UserPool:
    Type: 'AWS::Cognito::UserPool'
    Properties:
      ...
      Schema:
        - Name: email
          AttributeDataType: String
          Mutable: true
          Required: true

然后更新属性以使 name 成为必需:

Schema:
  - Name: email
    AttributeDataType: String
    Mutable: true
    Required: true
  - Name: name
    AttributeDataType: String
    Mutable: true
    Required: true

AWS 认为 name 是自定义属性并失败:

当前不支持必需的自定义属性。 (服务:AWSCognitoIdentityProviderService;状态代码:400;错误代码:InvalidParameterException;请求 ID:...)

这只是一个失败的更新,部署一个干净的堆栈正确地将emailname 标准属性设置为必需。

有什么方法可以更新成功吗?

【问题讨论】:

    标签: amazon-web-services amazon-cloudformation amazon-cognito


    【解决方案1】:

    不幸的是,这是来自 CloudFormation 的某种错误。与其他问题非常相似,例如更新具有多个索引的 DynamoDB 表。

    进行更新的唯一可行方法是分两步进行:

    1. 删除必须更改的属性(在您的情况下为 name),部署 CloudFormation
    2. 添加具有正确值的属性(因此在您的情况下添加 Require: true),部署 CloudFormation

    如前所述,与该案例类似的问题非常多,您最好将您的问题告知 AWS,以获得支持并修复错误。

    【讨论】:

    • 谢谢,在这种情况下,似乎在首次部署堆栈后无法配置标准属性,因为任何更新都会导致同名的自定义属性,因此这些步骤会导致相同的错误。
    • DynamoDB GSI 更新行为在这里稍微解释一下:github.com/aws-cloudformation/…
    猜你喜欢
    • 2018-12-26
    • 2017-08-03
    • 2017-10-21
    • 2020-06-24
    • 2017-07-14
    • 2020-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多