首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当serverless.yml文件出现时,Serverless配置凭据无法工作

当serverless.yml文件出现时,Serverless配置凭据无法工作
EN

Stack Overflow用户
提问于 2020-04-17 08:15:29
回答 1查看 7.3K关注 0票数 3

我们试图在BitBucket管道上使用无服务器的方式部署lambda,但是在运行serverless config credentials命令时遇到了一个问题。这个问题也发生在码头集装箱,以及本地的我们的机器上。

这是我们正在运行的命令:

代码语言:javascript
复制
serverless config credentials --stage staging --provider aws --key $AWS_ACCESS_KEY --secret $AWS_ACCESS_SECRET

它给了我们一个错误:

代码语言:javascript
复制
Error: Profile default does not exist

配置文件在我们的serverless.yml文件中定义。如果在运行命令之前重命名无服务器文件,它就能工作,然后我们可以将serverless.yml文件放回并成功部署。

例如:

代码语言:javascript
复制
            - 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 (部分)

代码语言:javascript
复制
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存储时才会出现问题。

EN

回答 1

Stack Overflow用户

发布于 2020-04-19 07:36:09

profile属性引用~/.aws/credentials中保存的凭据。如果该文件中不存在[default]条目,那么无服务器将发出投诉。我可以想出两种可能的解决方案:

  1. 尝试完全从serverless.yaml中删除profile,并且只使用环境变量。
  2. serverless.yaml中保留profile: default,但在~/.aws/credentials中设置凭据如下:H 213G 214

代码语言:javascript
复制
[default]
aws_access_key_id=***************
aws_secret_access_key=***************

如果使用#2,就不必再运行serverless config credentials了。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61266987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档