【问题标题】:Accessing SSM variables with Serverless使用无服务器访问 SSM 变量
【发布时间】:2018-07-26 18:05:33
【问题描述】:

我想使用SSM Parameters in Serverless Variables

按照文档,我运行了这个命令:

aws ssm put-parameter --name foo --value bar --type SecureString

我将此添加到我的serverless.yml

custom:
  foo: ${ssm:foo}

但是,当我部署时,我会收到以下警告:

Serverless Warning --------------------------------------

  A valid SSM parameter to satisfy the declaration 'ssm:foo' could not be found.

如何访问此变量?谢谢!

【问题讨论】:

    标签: node.js amazon-web-services serverless-framework


    【解决方案1】:

    检查您的 IAM 政策。要获取参数,进行部署的用户需要访问 SSM。这提供了完全访问权限。 See the docs to narrow it down a bit (ie: GetParameters, GetParameter).

      "Effect": "Allow",
      "Action": [
        "ssm:*"
      ],
      "Resource": [
        "*"
      ]
    

    【讨论】:

    • 明确地说,这是您给“sls deploy”的用户的 IAM 策略
    【解决方案2】:

    将此添加到 serverless.yml 文件中的提供程序部分

     iamRoleStatements:
    - Effect: "Allow"
      Action: 
        - "ssm:GetParameters"
      Resource: "*"
    

    【讨论】:

      【解决方案3】:

      要使用 SSM 变量,您需要前缀 /aws/reference/secretsmanager/

      例子

      ${ssm:/aws/reference/secretsmanager/${self:provider.stage}/service/mysecret~true}
      

      【讨论】:

      【解决方案4】:

      如果参数是SecureString,则需要在serverless.yml文件的参数路径后面加上~true,解释如下:https://serverless.com/framework/docs/providers/aws/guide/variables#reference-variables-using-the-ssm-parameter-store

      这将告诉框架解密该值。确保您有权使用用于加密参数的密钥。

      【讨论】:

        【解决方案5】:

        我需要为无服务器函数以及 ssm 变量赋值设置相同的区域:

        aws ssm put-parameter --name foo--value bar --type SecureString --region us-east-1
        

        【讨论】:

          猜你喜欢
          • 2020-02-20
          • 2011-08-08
          • 2015-07-25
          • 1970-01-01
          • 1970-01-01
          • 2019-04-14
          • 2015-11-16
          • 2019-11-03
          • 1970-01-01
          相关资源
          最近更新 更多