f-lombardo / secrets-loader
从SSM加载密钥值到环境变量 - 从bref/secrets-loader分支
Requires
- php: >=8.0
- async-aws/secrets-manager: ^2.2
- async-aws/ssm: ^1.3
Requires (Dev)
- mnapoli/hard-mode: ^0.3.0
- phpstan/phpstan: ^1.10.26
- phpunit/phpunit: ^9.6.10
This package is auto-updated.
Last update: 2024-09-10 21:59:29 UTC
README
加载密钥
当使用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=value1
和VAR2=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=foo
和VAR2=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