Mon modèle de cloudformation de pool d'utilisateurs cognito est déjà opérationnel et intégré à la passerelle api. Cependant, je dois encore configurer manuellement les paramètres du client d'application, le domaine et les identités fédérées pour disposer d'un portail de connexion fonctionnel pour les utilisateurs. J'ai cherché ici et là des solutions possibles pour les automatiser, mais je n'arrive pas à trouver quoi que ce soit près.
J'aimerais automatiser la configuration des paramètres du client d'application, du domaine et des identités fédérées via cloudformation sam template, de sorte que je n'ai pas à les effectuer manuellement.
Les suggestions sont très appréciées. Je vous remercie.
(pièces jointes postées pour des informations supplémentaires)
Il semble qu'il n'y ait aucun moyen de fournir Intégration d'application -> Nom de domaine et Fédération -> Fournisseurs d'identité via CloudFormation.
J'ai trouvé uniquement la référence pour Client de pool d'utilisateurs (Paramètres généraux -> Clients d'application), mais il ne configurera pas Intégration d'application -> Paramètres du client d'application.
Si vous devez automatiser le processus de fourniture de nom de domaine , fournisseurs d'identité et paramètres du client d'application pour le pool d'utilisateurs , vous pouvez le faire en créant un script personnalisé (AWS CLI) ou Lambda (AWS SDK) à exécuter après le déploiement de la pile.
METTRE À JOUR
Découvrez excellent exemple _ ( réponse ci-dessous ) qui montre l'utilisation de Ressources personnalisées CloudFormation avec Lambda.
J'ai créé deux ressources personnalisées CloudFormation pour appliquer les paramètres du client d'application Cognito et le nom de domaine. Avec ces ressources, vous pouvez avoir un script comme celui-ci:
UserPoolTestClient:
Type: 'AWS::Cognito::UserPoolClient'
Properties:
ClientName: UserPoolTestClient
GenerateSecret: true
UserPoolId: !Ref UserPoolTest
UserPoolTestClientSettings:
Type: 'Custom::CognitoUserPoolClientSettings'
Properties:
ServiceToken: !GetAtt CloudFormationCognitoUserPoolClientSettings.Arn
UserPoolId: !Ref UserPoolTest
UserPoolClientId: !Ref UserPoolTestClient
SupportedIdentityProviders:
- COGNITO
CallbackURL: 'https://www.Amazon.com'
LogoutURL: 'https://www.google.com'
AllowedOAuthFlowsUserPoolClient: true
AllowedOAuthFlows:
- code
AllowedOAuthScopes:
- openid
UserPoolTestDomain:
Type: 'Custom::CognitoUserPoolDomain'
Properties:
ServiceToken: !GetAtt CloudFormationCognitoUserPoolDomain.Arn
UserPoolId: !Ref UserPoolTest
Domain: 'userpool-test-01'
Le code complet est ici .
Je souhaite ajouter une solution différente (proposée par Mickael) car CloudFormation est complexe à mettre en place. cette ligne de commande créera votre domaine après la création de la pile CloudFormation:
aws cognito-idp create-user-pool-domain --domain test-domain --user-pool-id eu-west-1_xxxxxxxx
Dans votre déploiement automatisé, vous pouvez ajouter un script qui définit votre domaine. Pas aussi bien que tout ce qui est sur la FK, mais ça marche