Tom*_*Tom 3 aws-lambda bitbucket-pipelines serverless
我们尝试在 BitBucket 管道上使用无服务器方式部署 lambda,但在运行命令时遇到了问题serverless config credentials。这个问题也发生在 docker 容器和我们本地的机器上。
这是我们正在运行的命令:
serverless config credentials --stage staging --provider aws --key $AWS_ACCESS_KEY --secret $AWS_ACCESS_SECRET
Run Code Online (Sandbox Code Playgroud)
它给了我们错误:
Error: Profile default does not exist
Run Code Online (Sandbox Code Playgroud)
该配置文件在我们的 serverless.yml 文件中定义。如果我们在运行命令之前重命名 serverless 文件,它就会起作用,然后我们可以将 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
Run Code Online (Sandbox Code Playgroud)
我们尝试--profile default在那里添加开关,但没有什么区别。
值得注意的是,直到我们开始在无服务器文件中使用 SSM 参数存储之前,这并不是一个问题,当我们添加它时,它就开始给我们带来错误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
...
Run Code Online (Sandbox Code Playgroud)
TLDR:无服务器配置凭据仅在 serverless.yml 不存在时才有效,否则它会抱怨配置文件默认值不存在,只有在无服务器文件中使用 SSM 参数存储时才会出现问题。
profile您中的属性指serverless.yaml的是 中保存的凭据~/.aws/credentials。如果[default]该文件中不存在某个条目,无服务器将会抱怨。我可以想到两种可能的解决方案:
尝试profile从您的环境中serverless.yaml完全删除并仅使用环境变量。
保留profile: default您的serverless.yaml但设置凭据,~/.aws/credentials如下所示:
[default]
aws_access_key_id=***************
aws_secret_access_key=***************
Run Code Online (Sandbox Code Playgroud)
如果你选择#2,你就不用再跑了serverless config credentials。
| 归档时间: |
|
| 查看次数: |
10766 次 |
| 最近记录: |