亚马逊网络服务:NoCredentialsError:找不到凭据
我正在使用亚马逊网络服务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的内部代码。
有没有办法解决这个问题?
替代解决方案,可以考虑使用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。
更多参考复杂的无服务器架构:
- AWS圣杯https://github.com/aws/chalice
- 的Django /瓶+ LAMBDA https://github.com/Miserlou/Zappa
- 跨云无服务器解决方案https://github.com/serverless/serverless
GNU make的默认的shell /斌/ sh“,如果这个变量没有在你的makefile中设置,程序/ bin/sh将被用作shell。” HTTPS://www.gnu。org/software/make/manual/html_node/Choosing-the-Shell.html – strongjz
@strongjz您能否更详细地解释解决方案? – SRG