我们试图在BitBucket管道上使用无服务器的方式部署lambda,但是在运行serverless config credentials命令时遇到了一个问题。这个问题也发生在码头集装箱,以及本地的我们的机器上。
这是我们正在运行的命令:
serverless config credentials --stage staging --provider aws --key $AWS_ACCESS_KEY --secret $AWS_ACCESS_SECRET它给了我们一个错误:
Error: Profile default does not exist配置文件在我们的serverless.yml文件中定义。如果在运行命令之前重命名无服务器文件,它就能工作,然后我们可以将serverless.yml文件放回并成功部署。
例如:
- mv serverless.yml serverless.old
- serverless config credentials --stage beta --provider aws --key $AWS_ACCESS_KEY --secret $AWS_ACCESS_SECRET
- mv serverless.old serverless.yml我们尝试过在那里添加--profile default开关,但是没有什么不同。
值得注意的是,直到我们开始在无服务器文件中使用started之前,这并不是一个问题,当我们添加它时,它开始给我们提供Profile default does not exist错误。
serverless.yml (部分)
service: our-service
provider:
name: aws
runtime: nodejs12.x
region: eu-west-1
profile: default
stage: ${opt:stage, 'dev'}
iamRoleStatements:
- Effect: 'Allow'
Action: 'ssm:GetParameter'
Resource:
- 'arn:aws:ssm:eu-west-1:0000000000:parameter/our-service-launchdarkly-key-dev'
- 'arn:aws:ssm:eu-west-1:0000000000:parameter/our-service-launchdarkly-key-beta'
- 'arn:aws:ssm:eu-west-1:0000000000:parameter/our-service-launchdarkly-key-staging'
- 'arn:aws:ssm:eu-west-1:0000000000:parameter/our-service-launchdarkly-key-live'
- Effect: 'Allow'
Action: 'kms:Decrypt'
Resource:
- 'arn:aws:kms:eu-west-1:0000000000:key/alias/aws/ssm'
environment:
LAUNCH_DARKLY_SDK_KEY: ${self:custom.launchDarklySdkKey.${self:provider.stage}}
custom:
stages:
- dev
- beta
- staging
- live
launchDarklySdkKey:
dev: ${ssm:/our-service-launchdarkly-key-dev~true}
beta: ${ssm:/our-service-launchdarkly-key-beta~true}
staging: ${ssm:/our-service-launchdarkly-key-staging~true}
live: ${ssm:/our-service-launchdarkly-key-live~true}
plugins:
- serverless-offline
- serverless-stage-manager
...TLDR:无服务器配置凭据只有在serverless.yml不存在时才能工作,否则它会抱怨配置文件默认不存在,只有在无服务器文件中使用SSM存储时才会出现问题。
发布于 2020-04-19 07:36:09
profile属性引用~/.aws/credentials中保存的凭据。如果该文件中不存在[default]条目,那么无服务器将发出投诉。我可以想出两种可能的解决方案:
serverless.yaml中删除profile,并且只使用环境变量。serverless.yaml中保留profile: default,但在~/.aws/credentials中设置凭据如下:H 213G 214[default]
aws_access_key_id=***************
aws_secret_access_key=***************如果使用#2,就不必再运行serverless config credentials了。
https://stackoverflow.com/questions/61266987
复制相似问题