J'essaye d'exécuter des commandes CDK pour vérifier le diff de ma pile locale et distante.
J'utilise la commande suivante.
Unable to resolve AWS account to use. It must be either configured when you define your CDK or through the environment
Je reçois le message d'erreur suivant
cdk diff --profile saml
Je cherche des moyens de résoudre ce problème.
8 Réponses :
Vous devez spécifier vos informations d'identification. Consultez cet article: https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html#getting_started_credentials
Il donne des détails sur la façon de procéder:
Spécification de vos informations d'identification et de votre région
Vous devez spécifier vos informations d'identification et une région AWS pour utiliser l'AWS CDK CLI. Le CDK recherche les informations d'identification et la région dans l'ordre suivant:
Utilisation de l'option --profile pour les commandes cdk.
Utilisation des variables d'environnement.
Utilisation du profil par défaut défini par l'AWS Command Line Interface (AWS CLI).
Vous pouvez configurer un profil à l'aide de l'AWS CLI. Voir https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html pour plus de détails sur la façon de procéder. Vous pouvez spécifier des profils nommés, comme un profil pour chaque compte, puis spécifier le nom de profil à utiliser pour votre appel CDK.
Donc j'ai fait cela et j'ai utilisé le --profile <profile_name> mais cela n'a pas fonctionné
Vous devez définir explicitement votre compte et votre région lors de l'initialisation de vos piles. AWS CDK CLI fournit deux variables d'environnement, CDK_DEFAULT_ACCOUNT et CDK_DEFAULT_REGION, pour déterminer la cible au moment de la synthèse.
new MyDevStack(app, 'dev', { env: { account: process.env.CDK_DEFAULT_ACCOUNT, region: process.env.CDK_DEFAULT_REGION }});
Si vous utilisez ces variables d'environnement, le compte cible et la région sont extraits de votre profil AWS actif, par exemple l'option --profile.
https://docs.aws.amazon.com/cdk/latest/guide/environments.html
Ok, cela a du sens mais quand je lance 'cdk diff --profile <profile_name>' cela me donne toujours la même erreur.
La suppression de [profile default]
de ~/.aws/config
résolu pour moi.
Enfin, j'ai utilisé ce qui suit dans C: \ XXXX.aws \ credentials
[project1] aws_access_key_id = ANOTHER_AWS_ACCESS_KEY_ID aws_secret_access_key = ANOTHER_AWS_SECRET_ACCESS_KEY
et cmd:> cdk deploy --profile default
Cependant, cela n'a pas fonctionné.
[default] aws_access_key_id=XXXXXXXXXXXXXX aws_secret_access_key=XXXXXXXXXXXX
et cmd:> cdk deploy --profile project1
Erreur: la région AWS doit être configurée lorsque vous configurez votre pile CDK ou via l'environnement
Vous pourriez souffrir de https://github.com/aws/aws-cdk/issues/5455
Pour contourner le problème, n'utilisez pas de profil, récupérez les clés d'accès (votre organisation devrait avoir un moyen) et exportez-les vers l'environnement
Je ne sais pas si cela aide, mais dans mon organisation, nous utilisons AWS SSO, avec plus de 90 comptes AWS, avec MFA, il était donc impossible de gérer CDK sans AWS CLIv2 avec des profils et la prise en charge d'AWS SSO.
J'ai trouvé un moyen de le résoudre, donc jusqu'à ce qu'il soit officiellement publié, vous pouvez l'utiliser, cela fonctionne très bien: blog MatsCloud - CDK avec profil multi-comptes AWS SSO
Dans votre dossier .aws
, créez / ajoutez un fichier vide nommé credentials
sans l'extension de fichier.
Dans mon cas, cela n'avait rien à voir avec les solutions proposées.
Si vous ajoutez l'argument -v
(verbose) à la commande cdk, vous verrez l'erreur réelle: Unable to determine the default AWS account: TypeError [ERR_INVALID_PROTOCOL]: Protocol "https:" not supported. Expected "http:"
J'ai essayé différentes versions de CDK et rien, toujours la même erreur. Après de nombreux essais, je me suis retrouvé avec la cause première: la version du nœud. Avec la v15.2.1, j'ai eu cette erreur, mais après la rétrogradation vers la v14.15.1, le problème a été résolu.