繁体   English   中英

从参数存储访问SSM参数

[英]Access SSM parameters from parameter store

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

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

  • /test/param是一个简单的字符串
  • /test/param/encrypt包含与/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的问题/ PR上找到有关该参数的任何信息。 对这里发生的事情有任何想法吗?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM