我正在尝试修改旧的Perl应用程序,以使其具有存储在AWS SSM参数中的数据库凭证和其他机密,而不是硬编码到源文件中。
我有一个用于所有其他perl脚本的模块“ MyDefs.pm”,其中定义了所有应用程序变量。这个文件看起来像这样...
package MyDefs;
$DB_USERNAME;
$DB_PASSWORD;
...
BEGIN {
$DB_USERNAME = `aws ssm get-parameter --with-decryption --name "DB_USERNAME" | jq -j ".Parameter.Value"`;
$DB_PASSWORD = `aws ssm get-parameter --with-decryption --name "DB_PASSWORD" | jq -j ".Parameter.Value"`;
...
}
这些get-parameter调用相对较慢,因此我希望尽可能少地执行此操作。理想情况下,我希望它在服务器首次启动时只运行一次此初始化代码。
我曾经希望使用BEGIN块可以做到。但是,它仍然为每个Web请求运行此初始化代码。
是否有适当的位置定义此代码,以便mod_perl知道只运行一次?