Amazon Web Services:NoCredentialsError:无法找到凭据

时间:2017-10-08 20:09:34

标签: amazon-web-services makefile cygwin aws-lambda

我正在使用亚马逊网络服务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 configure”来配置凭据。

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

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

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

我遇到了与aws本身相同的问题,不得不使用$(shell cygpath -aw $ {AWS_PATH})将其转换为python可以使用的路径。

有没有办法将凭证直接传递给lambda delete-function或通过文件路径间接传递?我似乎无法想到一种方法,因为搜索凭据的代码是botocore的内部代码。

有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:0)

替代解决方案,请考虑使用AWS SAM templates

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

  • 编辑SAM模板并定义AWS资源。例如,定义代码的Lambda函数/路径。
  • aws cloudformation package打包并将您的本地代码上传到S3。
  • aws cloudformation deploy使用S3上的更新代码配置和更新AWS资源。

这可以在没有make麻烦的CMD / Powershell中使用。您还可以将您的资源版本化为代码,并且您不必担心在make文件中跟踪或添加新的AWS API。

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