2017-10-08 61 views
1

我正在使用亞馬遜網絡服務cli。我使用makefile來構建我的lambda項目並將其上傳到aws lambda。我在一臺Windows機器上使用PowerShell來調用make。亞馬遜網絡服務:NoCredentialsError:找不到憑據

我試圖刪除我的lambda函數與以下行

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」來配置憑據。

Running aws configure list打印出一個有效的默認配置文件。

我認爲這個問題是因爲我在Windows機器上使用由cygwin安裝的gnu make。使用PowerShell來調用make。

因此,當〜/ .aws/credentials被評估時,證書的路徑如下所示:「cygdrive/c/users/testbox/.aws/credentials」而不是「c:\ users \ testbox.aws \ credentials」 AWS。我認爲:)

我有與aws本身的路徑相同的問題,並不得不使用$(shell cygpath -aw $ {AWS_PATH})將其轉換爲一個窗口蟒蛇可以使用的路徑。

是否有任何方式直接將憑證直接傳遞給lambda刪除函數或間接通過文件路徑?我似乎不能想到一種方式,因爲搜索憑據的代碼是botocore的內部代碼。

有沒有辦法解決這個問題?

+0

GNU make的默認的shell /斌/ sh「,如果這個變量沒有在你的makefile中設置,程序/ bin/sh將被用作shell。」 HTTPS://www.gnu。org/software/make/manual/html_node/Choosing-the-Shell.html – strongjz

+0

@strongjz您能否更詳細地解釋解決方案? – SRG

回答

0

替代解決方案,可以考慮使用AWS SAM templates

使用AWS SAM模板部署使用CloudFormation您的lambda函數和AWS資源。

  • 編輯您的SAM模板並定義您的AWS資源。例如,定義代碼的Lambda函數/路徑。
  • aws cloudformation package將您的本地代碼打包並上傳到S3。
  • aws cloudformation deploy使用S3上的更新代碼供應和更新AWS資源。

這將工作在CMD/Powershell沒有make麻煩。您還可以將您的資源作爲代碼進行版本控制,您無需擔心在make文件中跟蹤或添加新的AWS API。

更多參考複雜的無服務器架構:

+0

好的,它是我的技術棧。混合使用cygwin和windows可能會導致問題。我正在關注一個關於lambda的YouTube視頻教程,但我認爲做這件事的人是在linux/mac機器上。我會嘗試你的解決方案,看看它是否適用於我,然後標記你的答案。 – SRG

+0

現在查看apex和AWS SAM以部署我的lambda表達式。仍然可能使用make文件來構建和準備我的lambda包。謝謝。 – SRG