无服务器:从 SecretsManager 值创建 api 键

Serverless: create api key from SecretsManager value

我有一个将 API 部署到 AWS 的无服务器堆栈。我想使用存储在 Secrets Manager 中的 API 密钥来保护它。我的想法是在 SSM 中获得密钥的值,在部署时拉取它并将其用作我的 API 密钥。

serverless.yml

service: my-app
frameworkVersion: '2'

provider:
  name: aws
  runtime: nodejs12.x
  ...
  apiKeys:
    - name: apikey
      value: ${ssm:myapp-api-key}

据我所知,部署的 API 网关密钥应该与 SSM 密钥相同,但是当我查看控制台时,这两个值不同。我忽略了什么?也没有错误消息。

我 运行 前一段时间遇到了同样的问题,我求助于使用 serverless-add-api-key 插件,因为当 Serverless 创建或重用新的 API 密钥时,我无法理解它对于 API 网关。

有了这个插件,你的 serverless.yml 看起来像这样:

service: my-app
frameworkVersion: '2'

plugins:
  - serverless-add-api-key

custom:
  apiKeys:
    - name: apikey
      value: ${ssm:myapp-api-key}

functions:
  your-function:
    runtime: ...
    handler: ...
    name: ...
    events:
      - http:
          ...
          private: true

您还可以使用阶段特定的配置:

custom:
  apiKeys:
    dev:
      - name: apikey
        value: ${ssm:myapp-api-key}