amazon-web-services - 从参数存储访问 SSM 参数
问题描述
我有 SAM 模板,它部署了一些 lambda,我想使用我在 SSM 参数存储中创建的一些参数。
我为我的测试创建了 2 个参数:
/test/param
这是一个简单的字符串/test/param/encrypt
包含与 KMS 密钥相同/test/param
但由 KMS 密钥加密的字符串
在我的 SAM 模板中,我试图/test/params
通过关注这篇博文来获得 的价值。这是我的模板的截图:
Parameters:
AuthPasswordPublic:
Type: AWS::SSM::Parameter::Value<String>
NoEcho: true
MinLength: 8
Description: Password for the "public" part of the website
Default: /test/param
...
Resources:
Auth:
Type: AWS::Serverless::Function
Properties:
Runtime: nodejs8.10
Handler: auth.handler
CodeUri: ./dist
Environment:
Variables:
PASSWORD_PUBLIC: !Ref AuthPasswordPublic
SEED: !Ref AuthSeed
Events:
GetResource:
Type: Api
Properties:
Path: /auth
Method: post
这在理论上应该在部署到 AWS 上时有效。但是,我想先在本地测试它。我已经aws-sam-local
在本地计算机上正确配置了我的凭证,因为我能够使用 AWS CLI。但是在本地运行时,envvar 的PASSWORD_PUBLIC
值为空。我测试了明文和加密的 SSM 参数,但结果是一样的。
我怀疑aws-sam-cli
它还不支持 SSM 参数,但在网上找不到任何关于该参数的信息,也找不到关于 GitHub 问题/公关的信息。关于这里发生了什么的任何想法?
解决方案
aws-sam-cli
使用docker-lambda
容器,根据文档创建:
一个沙盒本地环境,几乎完全相同地复制实时 AWS Lambda 环境......
这意味着不会在 docker 容器中重新创建 AWS SSM 等组件。你可以在这里查看开放的 Github 问题。
因此,您可能不得不求助于从主机(已aws cli
配置)检索 SSM 参数,并在调用 sam-cli 时将它们传递到容器中:
PASSWORD_PUBLIC=$(aws ssm get-parameter --with-decryption --name "/test/param/encrypt") sam local start-api
推荐阅读
- python - pyinstaller EXE后如何生成图形?
- yocto - 在 yocto-linux bitbake 上安装 apt-get 包失败
- python - 使用 gridsearchcv 或 randomsearchcv 时 Jupyter Notebook 不显示分数
- vue.js - 如何允许在 Element UI 中使用 select 创建重复项?
- python - 在 DataFrame 创建中使用先前列创建新列
- ios - 更改首选内容大小后,我的一些可重用单元格标签中的字体大小仍然不变
- arrays - 写入文本文件时删除最后一个字符
- c# - 如何在我的库中添加扩展点?
- python-3.x - 如何从 Python 3 中的函数内部删除全局变量
- android - 将 Ktor 添加到 Kotlin Multiplatform Mobile 导致未解决的参考:HttpClient