AWS CloudFormation Cognito Identity Provider (SAML) - PullRequest
1 голос
/ 08 января 2020

Я пытаюсь создать Cognito Identity Provider с помощью документации на https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpoolidentityprovider.html. Вот пример фрагмента, где FederationMetadata. xml находится в той же папке, что и определение шаблона CF.

AWSTemplateFormatVersion: 2010-09-09
Description: Identity Provider

Resources: 
  CognitoUserPoolAIdProvider:
    Type: "AWS::Cognito::UserPoolIdentityProvider"
    Properties:
      AttributeMapping:
        email: http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
      IdpIdentifiers: []
      ProviderDetails:
        IDPSignout: 'false'
        MetadataFile: './FederationMetadata.xml'
        SLORedirectBindingURI: https://<IP of ADFS>/adfs/ls/
        SSORedirectBindingURI: https://<IP of ADFS>/adfs/ls/
      ProviderName: MyIdProvider
      ProviderType: SAML
      UserPoolId: us_abcdef123

При попытке запустить я получаю ошибку с

Invalid XML (Service: AWSCognitoIdentityProviderService; Status Code: 400; Error Code: InvalidParameterException; Request ID: c047641b-7c69-4944-b4e4-e110cf8c2605)

Я вижу, что содержимое файла не предоставляется во время выполнения:

{
    "ProviderName": "MyIdProvider",
    "UserPoolId": "us_abcdef123",
    "AttributeMapping": {
        "email": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"
    },
    "ProviderDetails": {
        "MetadataFile": "./FederationMetadata.xml",
        "SSORedirectBindingURI": "https://<IP>/adfs/ls/",
        "IDPSignout": "false",
        "SLORedirectBindingURI": "https://<IP>/adfs/ls/"
    },
    "ProviderType": "SAML",
    "IdpIdentifiers": []
}

Вопрос: Как я должен ссылаться на файл FederationMetadata. xml в шаблоне CF? Кроме того, вставка содержимого файла XML работает нормально, но я хочу полностью преобразовать содержимое метаданных в файл.

1 Ответ

0 голосов
/ 08 января 2020

Ввод MetadataFile - это содержимое XML, а не путь к файлу. Таким образом, у вас есть несколько альтернативных вариантов:

  1. Переключитесь на использование MetadataURL, которое принимает опубликованный c URL-адрес файла метаданных

  2. или Если вы используете AWS CLI для развертывания CFN, вы можете использовать MetadataFile в качестве CFN в качестве параметра и передавать содержимое XML для развертывания сценария, например:

    metadata=$(cat FederationMetadata.xml)

    aws cloudformation deploy --stack-name YOUR_STACK --parameter-overrides MetadataFile="${metadata}"

Ваш CFN будет использоваться: MetadataFile: Ref !MetadataFile

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...