Мы пытаемся развернуть нашу лямбду, используя безсерверный режим на конвейерах BitBucket, но у нас возникает проблема при запуске команды serverless config credentials
. Эта проблема также возникает в docker контейнерах и локально на наших машинах.
Это команда, которую мы выполняем:
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
, но это не имеет значения.
Стоит отметить, что это не было проблемой, пока мы не начали использовать хранилище параметров 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
...
TLDR: только учетные данные конфигурации без сервера работает, когда serverless.yml отсутствует, в противном случае он жалуется на несуществующий профиль по умолчанию, только проблема при использовании SSM Param store в файле без сервера.