8

我使用create_user_pool来创建新的 Cognito 用户池。我看到有一个SmsConfiguration选项需要一个ExternalId. 如果您使用 Cognito 门户为您的用户池设置 MFA,则此外部 ID(看起来像 UUID)将用于自动生成的 IAM SMS-Role。

ExternalId如果我想手动(使用 boto3 或 AWS CLI)创建用户池和 IAM SMS 角色,我在哪里可以找到/生成值?

我的 MFA 设置如下所示: 在此处输入图像描述

4

1 回答 1

6

没错,它是您在 IAM 角色中定义的 UUID。这是具有外部 ID 的示例 CloudFormation 模板 -

CognitoSMSRole:
  Type: AWS::IAM::Role
  Properties:
    AssumeRolePolicyDocument: 
      Version: "2012-10-17"
      Statement: 
        - Effect: "Allow"
          Principal: 
            Service: 
              - "cognito-idp.amazonaws.com"
          Action: 
            - "sts:AssumeRole"
          Condition:
            StringEquals:
              "sts:ExternalId": 'this-is-my-external-id'
    Path: "/"
CognitoSMSPolicy: 
  Type: "AWS::IAM::Policy"
  Properties: 
    PolicyName: "CognitoSMSPolicy"
    PolicyDocument: 
      Version: "2012-10-17"
      Statement: 
        - Effect: "Allow"
          Action: 
            - "sns:publish"
          Resource: 
            - "*"
    Roles: 
      - Ref: CognitoSMSRole

您还可以在控制台中找到外部 ID。

IAM -> 角色 -> 选择您的角色 -> 受信任的关系

ExternalID - AWS 控制台

于 2018-03-12T20:35:54.213 回答