我正在使用亚马逊网络服务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的内部代码。
有没有办法解决这个问题?
答案 0 :(得分:0)
替代解决方案,请考虑使用AWS SAM templates
使用AWS SAM模板使用CloudFormation部署Lambda函数和AWS资源。
aws cloudformation package
打包并将您的本地代码上传到S3。 aws cloudformation deploy
使用S3上的更新代码配置和更新AWS资源。 这可以在没有make
麻烦的CMD / Powershell中使用。您还可以将您的资源版本化为代码,并且您不必担心在make文件中跟踪或添加新的AWS API。
更复杂的无服务器框架供参考: