2017-10-08 21 views
1

私はamazon Webサービスcliを使用しています。私はmakefileを使って私のラムダプロジェクトをビルドし、それをaws lambdaにアップロードします。私はWindowsマシン上で、PowerShellを使ってmakeを呼び出します。Amazon Web Services:NoCredentialsError:資格情報を見つけることができません

私は..次の行

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 

私はこのエラーを取得すると

NoCredentialsError私のラムダ関数を削除しよう:資格情報 資格情報を見つけることができませんを見つけることができません。 「aws configure」を実行すると、資格情報を設定できます。

aws configure listを実行すると、有効なデフォルトプロファイルが出力されます。

私はgnu makeをcygwinによってWindowsマシンにインストールしているので、問題があると思います。 powershellを使ってmakeを呼び出します。

〜/ .aws/credentialsが以下のように評価された場合、資格情報へのパスは "cygdrive/c/users/testbox/.aws/credentials"の代わりに "c:\ users \ testbox.aws \ credentials" aws。私は思う:)

私はaws自体のパスに同じ問題があり、$(shell cygpath -aw $ {AWS_PATH})を使用して、Pythonが使用できるパスのウィンドウに変換する必要がありました。

ラムダ削除機能に直接資格情報を渡す方法はありますか、またはファイルへのパスを通じて間接的に資格情報を渡す方法はありますか?資格情報を検索するコードがボトコアの内部にあるので、私は考え方がないようです。

これを回避する方法はありますか?

+0

GNUのmakeのデフォルトのシェルは/ binに/ sh、 "この変数があなたのmakefileに設定されていない場合、プログラム/ bin/shはシェルとして使用されます。" https://www.gnu。org/software/make/manual/html_node/Choosing-the-Shell.html – strongjz

+0

@strongjzもう少し詳細に解を説明できますか? – SRG

答えて

0

代替ソリューション、CloudFormationを使用して、ラムダ関数とAWSのリソースを展開するAWS SAM templates

使用AWS SAMテンプレートを使用することを検討してください。

  • SAMテンプレートを編集し、AWSリソースを定義します。たとえば、ラムダ関数/パスをコードに定義します。
  • aws cloudformation packageローカルコードをパッケージ化してS3にアップロードします。
  • aws cloudformation deploy AWSリソースをS3上の更新されたコードでプロビジョニングして更新する。

これはmakeの手間を省き、CMD/Powershellで動作します。また、コードとしてバージョン管理されたリソースを持つメリットがあり、新しいAWS APIを追跡したり、makeファイルに追加することを心配する必要はありません。参照用

より複雑なサーバレスフレームワーク:

+0

ああ、それは私の技術のスタック。 Cygwinとウィンドウを混在させると問題が発生する可能性があります。私はラムダのYouTubeビデオチュートリアルに従っていたが、それをやっている人はLinux/Macマシン上にあったと思う。私はあなたの解決策を試し、それが私のために働くかどうかを見て、あなたの答えに印をつけます。 – SRG

+0

私のラムダを展開するためのapexとAWS SAMを探しています。おそらく、私のラムダパッケージを構築し準備するために、makeファイルを使用します。ありがとう。 – SRG

関連する問題