Amazon web services Amazon Web服务:NoCredentialsError:找不到凭据

Amazon web services Amazon Web服务:NoCredentialsError:找不到凭据,amazon-web-services,makefile,cygwin,aws-lambda,Amazon Web Services,Makefile,Cygwin,Aws Lambda,我正在使用amazon web services cli。我使用一个makefile来构建我的lambda项目并将其上传到aws lambda。我在windows计算机上,使用powershell调用make 我尝试用以下几行删除lambda函数 AWS_PATH = /cygdrive/c/Users/TestBox/AppData/Roaming/Python/Scripts/aws AWS_WIN_PATH = $(shell cygpath -aw ${AWS_PATH}) AWS_RE

我正在使用amazon web services cli。我使用一个makefile来构建我的lambda项目并将其上传到aws lambda。我在windows计算机上,使用powershell调用make

我尝试用以下几行删除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配置”来配置凭据

运行aws配置列表打印出有效的默认配置文件

我想问题是因为我使用的是cygwin在windows机器上安装的gnu make。使用powershell调用make

因此,当aws评估~/.aws/凭证时,凭证的路径看起来像“cygdrive/c/users/testbox/.aws/credentials”,而不是“c:\users\testbox.aws\credentials”。我想:)

我对aws本身的路径也有同样的问题,必须使用$(shell cygpath-aw${aws_path})将其转换为windows python可以使用的路径

有没有办法将凭据直接传递给lambda delete函数,或者通过文件路径间接传递?我似乎想不出办法,因为搜索凭证的代码是botocore的内部代码


这是不是有办法知道?

< P>另类解决方案,考虑使用

使用AWS SAM模板使用CloudFormation部署Lambda函数和AWS资源

  • 编辑SAM模板并定义AWS资源。例如,定义代码的Lambda函数/路径
  • aws cloudformation package
    打包并将本地代码上载到S3
  • aws cloudformation部署
    使用S3上的更新代码提供和更新aws资源
这将在CMD/Powershell中工作,而无需
make
麻烦。您还可以将资源版本化为代码,而不必担心在make文件中跟踪或添加新的awsapi

更复杂的无服务器框架供参考:

  • AWS圣杯
  • Django/烧瓶+Lambda
  • 跨云无服务器解决方案

啊,好的,这是我的技术堆栈。混合使用cygwin和windows可能会导致问题。我在关注一个关于lambdas的youtube视频教程,但我认为做这个的人是在linux/mac机器上。我将尝试您的解决方案,看看它是否适合我,然后标记您的答案。现在查看apex和AWS SAM以部署我的lambdas。仍然可能使用makefile来构建和准备lambda包。Thank.GNU make的默认shell为/bin/sh,“如果make文件中未设置此变量,则程序/bin/sh将用作shell。”@strongjz您能更详细地解释一下解决方案吗?