f-lombardo/secrets-loader

从SSM加载密钥值到环境变量 - 从bref/secrets-loader分支

1.1.0 2024-04-05 15:35 UTC

This package is auto-updated.

Last update: 2024-09-10 21:59:29 UTC


README

OpenSSF Scorecard Quality Gate Status OpenSSF Best Practices

加载密钥

当使用Bref运行时,自动将密钥从SSM加载到环境变量中。

这是一个由项目派生的工作,该项目由Matthieu Napoli创建,他也是Bref项目的创造者。

我在这里引入了从密钥管理器加载参数的能力,以及拥有一个包含许多应用程序环境变量的ini格式的SSM参数。

从密钥管理器加载密钥

此库替换了在运行时从AWS密钥管理器读取的密钥。这些密钥可以是JSON格式或纯文本格式。

provider:
    # ...
    environment:
        MY_PARAMETER: bref-secretsmanager:/my-app/my-parameter-in-plain-text
        MY_PARAMETER_JSON: bref-secretsmanager-json:/my-app/my-parameter-in-json

在此示例中,Bref Lambda函数将看到一个名为MY_PARAMETER的环境变量,其值将是密钥/my-app/my-parameter-in-plain-text的内容。指向/my-app/my-parameter-in-json的密钥应该是类似以下形式的JSON字符串:

{
  "VAR1": "value1", 
  "VAR2": "value2"
}

Lambda函数将能够访问两个环境变量VAR1=value1VAR2=value2

以.ini格式的SSM参数

将现有的复杂Symfony应用程序迁移到Bref会导致在serverless.yml中定义许多环境变量。而不是在Lambda环境变量和SSM参数之间进行一对一映射,我建议使用一个具有特殊名称BREF_PARAMETER_STORE的单个Lambda环境变量,该变量存储ini格式的字符串。该字符串将在许多应用程序环境变量中展开。例如,一个Lambda可以有环境变量BREF_PARAMETER_STORE=ssm:/some/parameter。该参数中包含的数据可以是

VAR1=foo
VAR2=bar

Lambda执行运行时应该看到VAR1=fooVAR2=bar作为环境变量。

此项目完全兼容原始库的行为,以下为原始库的文档。

按照原始库使用

此库完全兼容Bref作者的原始库。阅读Bref文档:https://bref.sh/docs/environment/variables.html#secrets

它替换了(在运行时)以bref-ssm:开头的变量。例如,您可以在serverless.yml中如下设置此类变量:

provider:
    # ...
    environment:
        MY_PARAMETER: bref-ssm:/my-app/my-parameter

在AWS Lambda中,MY_PARAMETER将自动替换,并包含存储在AWS SSM参数/my-app/my-parameter中的值。

它还可以用来读取包含INI格式字符串的SSM变量中的参数集。例如,如果有一个包含以下字符串的SSM参数/my-app/my-par-store

FOO=bar
BAR=baz

并且我们有以下配置的severless.yml,其中特殊变量BREF_PARAMETER_STORE被设置为:

provider:
    # ...
    environment:
      BREF_PARAMETER_STORE: /my-app/my-par-store

我们的Lambda将看到以下环境变量

FOO=bar
BAR=baz

此功能作为独立的包提供,以便所有代码和依赖项不会默认为所有Bref用户安装。如果您想使用此功能,请安装此包。

开发人员说明

docker目录中,您可以找到一个允许开发和测试应用程序的docker compose项目。您可以使用以下命令运行它:

cd docker 
docker compose up -d
docker compose exec php bash

上一个命令将您带入了PHP容器内部,您可以在那里使用quality.sh脚本运行测试和质量检查。

scripts/quality.sh

在您的PHP项目中安装

composer require f-lombardo/secrets-loader