问题描述
aws configure
我使用
创建了一个无服务器应用程序 serverless create --template aws-nodejs --path ssm5
/.aws/credentials
[workflow]
aws_access_key_id=<<My Access Key>>
aws_secret_access_key=<<My Secret Key>>
/.aws/config
[profile workflow]
region = us-east-1
无服务器.yml
service: ssm5
frameworkVersion: "2"
provider:
name: aws
runtime: nodejs12.x
lambdaHashingVersion: 20201221
我尝试使用
部署应用程序 serverless deploy --aws-profile workflow
不幸的是,我遇到了以下错误。
Serverless: Packaging service...
Serverless: Excluding development dependencies...
Serverless Error ----------------------------------------
AWS profile ""workflow"" doesn't seem to be configured
然后我从命令提示符设置了以下环境变量。
set AWS_PROFILE="workflow"
set AWS_ACCESS_KEY=<<My Access Key>>
set AWS_SECRET_ACCESS_KEY=<<My Secret Key>>
set AWS_SDK_LOAD_CONfig=1
不幸的是,这也没有帮助我,错误仍然存在。
注意:我使用 terraform 来配置基础设施。 terraform 从上述配置和凭据文件中成功选择了 workflow 配置文件。问题仅在于无服务器。
如果有人能在这方面帮助我,那就太好了。
解决方法
我遇到了这个问题,在调试代码后,我发现了这个:
由于默认情况下 AWS.SharedIniFileCredentials 不返回 roleArn,sls 假定配置文件无效。修复方法是按照评论中的建议设置 AWS_SDK_LOAD_CONFIG=1。当您使用共享配置文件时,该变量会告诉 AWS 开发工具包加载配置文件。
基于此,我可以假设设置 AWS_SHARED_CREDENTIALS_FILE 可能也能正常工作,因为另一个文件应该只包含一个配置文件。