Aws api gateway 无服务器:从SecretsManager值创建api密钥

Aws api gateway 无服务器:从SecretsManager值创建api密钥,aws-api-gateway,serverless-framework,aws-secrets-manager,Aws Api Gateway,Serverless Framework,Aws Secrets Manager,我有一个无服务器堆栈,将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:mya

我有一个无服务器堆栈,将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为API网关创建或重用新的API密钥时,我无法理解插件

使用此插件,您的
serverless.yml
将如下所示:

服务:我的应用
框架版本:“2”
插件:
-无服务器添加api密钥
自定义:
Apikey:
-姓名:apikey
值:${ssm:myapp api密钥}
功能:
你的职能:
运行时:。。。
处理程序:。。。
姓名:。。。
活动:
-http:
...
二等兵:对
您还可以使用特定于阶段的配置:

自定义:
Apikey:
开发人员:
-姓名:apikey
值:${ssm:myapp api密钥}

我最后就是这么做的,效果非常好。谢谢你的回答!值得一提的是,当
plugins
部分不在yml文件的顶部时,它似乎不起作用(上面的
provider
可能就足够了)