2017-10-08 9 views
1

J'utilise cli services web amazon. J'utilise un makefile pour construire mon projet lambda et le télécharger sur aws lambda. Je suis sur une machine Windows et en utilisant PowerShell pour appeler make.Amazon Web Services: NoCredentialsError: Impossible de localiser les informations d'identification

je tente de supprimer ma fonction lambda avec les lignes suivantes

AWS_PATH = /cygdrive/c/Users/TestBox/AppData/Roaming/Python/Scripts/aws 
AWS_WIN_PATH = $(shell cygpath -aw ${AWS_PATH}) 
AWS_REGION = eu-west-2 

lambda_delete: 
    $(AWS_WIN_PATH) lambda delete-function --function-name LambdaTest --region $(AWS_REGION) --debug 

Je reçois cette erreur ..

NoCredentialsError: Impossible de trouver les informations d'identification Impossible de localiser les informations d'identification. Vous pouvez configurer les informations d'identification en exécutant "aws configure". En cours d'exécution aws configure list imprime un profil par défaut valide.

Je pense que le problème vient du fait que j'utilise gnu make installé par cygwin sur une machine Windows. Utiliser powershell pour appeler make. Le chemin d'accès aux informations d'identification ressemble donc à "cygdrive/c/utilisateurs/testbox/.aws/credentials" à la place "c: \ users \ testbox.aws \ credentials", lorsque ~/.aws/credentials est évalué par aws. Je pense :)

J'ai eu le même problème avec le chemin vers aws lui-même et j'ai dû utiliser $ (shell cygpath -aw $ {AWS_PATH}) pour le convertir en un chemin que python pourrait utiliser.

Est-il possible de transmettre les informations d'identification directement à la fonction de suppression lambda ou indirectement via un chemin d'accès à un fichier? Je ne peux pas penser à un moyen parce que le code qui recherche les informations d'identification est interne à botocore.

Y a-t-il un moyen de contourner cela que vous connaissez?

+0

shell par défaut de GNU make est/bin/sh, "Si cette variable n'est pas définie dans votre makefile, le programme/bin/sh est utilisé comme shell." https: //www.gnu.org/software/make/manual/html_node/Choisir-le-Shell.html – strongjz

+0

@strongjz Pouvez-vous expliquer la solution un peu plus en détail? – SRG

Répondre

0

Autre solution, pensez à utiliser AWS SAM templates

Utiliser des modèles AWS SAM pour déployer vos fonctions Lambda et ressources AWS en utilisant CloudFormation. Modifiez votre modèle SAM et définissez vos ressources AWS.

  • Par exemple, définissez les fonctions Lambda/chemin d'accès à votre code.
  • aws cloudformation package pour empaqueter et télécharger votre code local vers S3.
  • aws cloudformation deploy pour provisionner et mettre à jour les ressources AWS avec le code mis à jour sur S3.

Cela fonctionnerait dans CMD/Powershell sans les tracas make. Vous aurez également l'avantage d'avoir vos ressources versionnées en tant que code et vous n'aurez pas besoin de vous soucier du suivi ou de l'ajout de nouvelles API AWS dans votre fichier make.

Plus cadres de Serverless complexes pour référence:

+0

Ah ok, c'est ma pile de technologie. Mélanger cygwin et windows peut causer des problèmes. Je suivais un tutoriel vidéo sur Youtube sur lambdas mais je pense que la personne qui le faisait était sur une machine Linux/Mac. Je vais essayer votre solution et voir si cela fonctionne pour moi et ensuite marquer votre réponse. – SRG

+0

En regardant dans l'apex et AWS SAM pour le déploiement de mes lambdas maintenant. J'utilise probablement toujours make pour construire et préparer mon paquet lambda. Merci. – SRG