Ceci est une ancienne révision du document !
Table des matières
AWS
AWS est le service cloud d'Amazon.
CLI
Pour configurer un compte avec un access key et secret:
$ aws configure
Variables d'environnement
$ export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE $ export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY $ export AWS_DEFAULT_REGION=us-west-2
Dans le cas d'utilisation d'un session token, on peut ajouter:
AWS_SESSION_TOKEN
Utiliser un rôle qui requiert un MFA
Dans le fichier ~/.aws/credentials
, ajouter par exemple les credentials nécessaires:
[aws_account_name_or_username] aws_access_key_id = AKIAQ75CXLP2PEXAMPLE aws_secret_access_key = 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
Après dans le fichier ~/.aws/config
ajouter un profil:
[profile nom_du_profil] output = json region = us-east-1 role_arn = arn:aws:iam::976567865786:role/super_duper_power_users source_profile = aws_account_name mfa_serial=arn:aws:iam::987653456789:mfa/myusername
La valeur de source_profile
fait référence au nom de la section dans le fichier credential
, dans l'exemple plus haut c'est aws_account_name_or_username
(qui est lui-même un exemple bidon).
Outils qui peuvent aider à gérer ça:
Exemple:
$ aws sts assume-role --role-arn arn:aws:iam::XXXXXXXXXXXX:role/org-super_users --role-session-name "RoleSessionName1" --profile org-super_users --output json > assume-role-output.txt
Source: Using an IAM role in the AWS CLI
Sortie au stdout
Les sorties de commandes peuvent se faire dans nano, ce qui n'est pas idéal pour copier les informations. L'option cli_pager=
(avec aucune valeur) dans le ~/.aws/config
[default]
ne semble pas fonctionner, comme la documentation le suggère.
Plutôt faire avec un export:
$ export AWS_PAGER=
IAM
Créer un rôle IAM:
aws iam create-role --role-name SomeRoleName --assume-role-policy-document file://./subdir/some-file.json
Attach to policy:
aws iam attach-role-policy --role-name SomeRoleName --policy-arn arn:aws:iam::aws:policy/GameLiftGameServerGroupPolicy
Cognito
Login par requêtes directes
Les requêtes ci-dessous sont effectuées avec REST Client, extension de VS Code.
Prérequis:
- L'application dans le User Pool n'a pas de Client Secret de configuré
- L'utilisateur existe dans le user pool. Il peut y avoir un mot de passe initial avec le statut _Force change password_.
Pour effectuer des tests, par exemple pour obtenir un JWT d'identification, il faut appeler le service IDP de Cognito avec un initAuth:
POST https://cognito-idp.us-east-1.amazonaws.com/ Content-Type: application/x-amz-json-1.1 X-Amz-Target: AWSCognitoIdentityProviderService.InitiateAuth { "AuthParameters" : { "USERNAME" : "test@domain", "PASSWORD" : "initialPassword" }, "AuthFlow" : "USER_PASSWORD_AUTH", "ClientId" : "{{cognitoClientId}}" }
Si la réponse retourne un challenge NEW_PASSWORD_REQUIRED
, il faut envoyer une requête RespondToAuthChallenge
:
POST https://cognito-idp.us-east-1.amazonaws.com/ Content-Type: application/x-amz-json-1.1 X-Amz-Target: AWSCognitoIdentityProviderService.RespondToAuthChallenge { "ChallengeName": "NEW_PASSWORD_REQUIRED", "ChallengeResponses": { "USERNAME" : "test@domain", "NEW_PASSWORD" : "newPassword" }, "ClientId": "{{cognitoClientId}}", "Session": "{{initAuth.response.body.Session}}" }
On peut s'identifier avec un initAuth
(avec un password confirmé) qui est la même chose que la première requête, mais avec le nouveau mot de passe:
POST https://cognito-idp.us-east-1.amazonaws.com/ Content-Type: application/x-amz-json-1.1 X-Amz-Target: AWSCognitoIdentityProviderService.InitiateAuth { "AuthParameters" : { "USERNAME" : "test@domain", "PASSWORD" : "newPassword" }, "AuthFlow" : "USER_PASSWORD_AUTH", "ClientId" : "{{cognitoClientId}}" }
Ressources
- Amazon Cognito Identity SDK for JavaScript (package npm)
- amazon-archives/amazon-cognito-identity-js (repo GitHub archivé)