2017-10-08 1 views
1

Ich verwende Amazon Web Services CLI. Ich verwende ein Makefile, um mein Lambda-Projekt aufzubauen und es auf aws lambda hochzuladen. Ich bin auf einem Windows-Rechner und mit Powershell zu rufen machen.Amazon Web Services: NoCredentialsError: Anmeldeinformationen können nicht gefunden werden

Ich versuche, meine Lambda-Funktion mit den folgenden Zeilen

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 

ich diesen Fehler zu löschen ..

NoCredentialsError: Nicht imstande, Anmeldeinformationen zu lokalisieren kann nicht Anmeldeinformationen suchen. Sie können Anmeldeinformationen konfigurieren, indem Sie "aws configure" ausführen.

Durch Ausführen der aws-Konfigurationsliste wird ein gültiges Standardprofil ausgedruckt.

Ich denke, das Problem liegt daran, dass ich gnu make von Cygwin auf einer Windows-Maschine installiert verwenden. Powershell verwenden, um make aufzurufen.

So sieht der Pfad zu Anmeldeinformationen wie folgt aus: "cygdrive/c/users/testbox/.aws/credentials" anstatt "c: \ users \ testbox.aws \ credentials", wenn ~/.aws/credentials ausgewertet wird aws. Ich denke :)

Ich hatte das gleiche Problem mit dem Pfad zu aws selbst und musste $ (shell cygpath -aw $ {AWS_PATH}) verwenden, um es in einen Pfad zu konvertieren, den Windows Python verwenden könnte.

Gibt es eine Möglichkeit, die Anmeldeinformationen direkt an die Lambda-Lösch-Funktion oder indirekt über einen Pfad zu einer Datei zu übergeben? Ich denke nicht, dass der Code, der nach den Anmeldeinformationen sucht, in Botocore enthalten ist.

Gibt es einen Weg, den Sie kennen?

+0

Standard-Shell GNU make ist/bin/sh, "Wenn diese Variable nicht in Ihrem Makefile festgelegt ist, wird das Programm/bin/sh als Shell verwendet." https: //www.gnu.org/software/make/manual/html_node/Choose-the-Shell.html – strongjz

+0

@strongjz Können Sie die Lösung etwas genauer erklären? – SRG

Antwort

0

Alternative Lösung, betrachten AWS SAM templates

Verwenden AWS SAM Vorlagen Ihre Lambda-Funktionen und AWS-Ressourcen bereitstellen Cloudformation verwenden.

  • Bearbeiten Sie Ihre SAM-Vorlage und definieren Sie Ihre AWS-Ressourcen. Definieren Sie beispielsweise Lambda-Funktionen/Pfad zu Ihrem Code.
  • aws cloudformation package zu packen und laden Sie Ihren lokalen Code auf S3.
  • aws cloudformation deploy zum Bereitstellen und Aktualisieren von AWS-Ressourcen mit dem aktualisierten Code auf S3.

Dies würde in CMD/Powershell ohne die make Ärger arbeiten. Sie haben auch den Vorteil, dass Ihre Ressourcen als Code versioniert werden und Sie sich keine Gedanken darüber machen müssen, ob Sie neue AWS-APIs in Ihrer Make-Datei nachverfolgen oder hinzufügen.

Komplexere serverless Gerüste Referenz:

+0

Ah ok, es ist mein Tech-Stack. Mischen von Cygwin und Windows kann Probleme verursachen. Ich habe ein Youtube Video Tutorial über Lambdas verfolgt, aber ich glaube die Person, die es gemacht hat, war auf einem Linux/Mac Computer. Ich werde deine Lösung ausprobieren und sehen, ob es für mich funktioniert und dann deine Antwort markieren. – SRG

+0

Blick in Apex und AWS SAM für den Einsatz meiner Lambdas jetzt. Verwenden Sie wahrscheinlich noch make-Datei zum Erstellen und Vorbereiten meines Lambda-Pakets. Vielen Dank. – SRG

Verwandte Themen