mod_perl。如何仅初始化一次包装变量

时间:2020-08-04 10:06:38

标签: mod-perl

我正在尝试修改旧的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知道只运行一次?

0 个答案:

没有答案