【问题标题】:Access SSM parameters from parameter store从参数存储访问 SSM 参数
【发布时间】:2018-08-19 07:22:30
【问题描述】:

我有 SAM 模板,它部署了一些 lambda,我想使用我在 SSM 参数存储中创建的一些参数。

我为我的测试创建了 2 个参数:

  • /test/param 这是一个简单的字符串
  • /test/param/encrypt 包含与 /test/param 相同的字符串,但由 KMS 密钥加密

在我的 SAM 模板中,我试图通过关注 this blog post 来获取 /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 问题/PR 上找到。关于这里发生了什么的任何想法?

【问题讨论】:

标签: amazon-web-services aws-lambda aws-sam-cli aws-ssm


【解决方案1】:

aws-sam-cli 使用docker-lambda 容器,根据docs 创建:

一个沙盒本地环境,几乎完全相同地复制实时 AWS Lambda 环境...

这意味着不会在 docker 容器中重新创建 AWS SSM 等组件。您可以查看开放的 Github 问题here

因此您可能不得不求助于从主机检索 SSM 参数(配置了 aws cli),并在调用 sam-cli 时将它们传递到容器中:

PASSWORD_PUBLIC=$(aws ssm get-parameter --with-decryption --name "/test/param/encrypt") sam local start-api

【讨论】:

    猜你喜欢
    • 2018-09-06
    • 1970-01-01
    • 2021-11-28
    • 2021-07-23
    • 2019-02-19
    • 2020-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多