【发布时间】:2026-02-11 07:35:01
【问题描述】:
我从 AWS Secrets Manager 获取数据库凭证并将其存储在缓存中,这样就不必在每次请求时都从 AWS 获取它。
问题是,如果我更改密码进行测试,F3 将无法连接到数据库。这意味着即使我告诉 F3 仅在它无法找到缓存的任何内容时检查它,它也会检测到秘密名称发生变化。
use Aws\SecretsManager\SecretsManagerClient;
$f3->set('CACHE', true);
if ($f3->exists('dbusername')) {
$username = $f3->get('dbusername');
$password = $f3->get('dbpassword');
$host = $f3->get('dbhost');
$port = $f3->get('dbport');
} else {
$secretName = getenv('AWS_SECRET_NAME');
$client = new SecretsManagerClient([
'version' => 'latest'
]);
$secretManager = $client->getSecretValue([
'SecretId' => $secretName,
]);
$db = json_decode($secretManager['SecretString']);
$username = $db->username;
$password = $db->password;
$port = $db->port;
$host = $db->host;
}
$f3->set('dbusername', $username);
$f3->set('dbpassword', $password);
$f3->set('dbhost', $host);
$f3->set('dbport', $port);
我正在我的 PC 上进行测试,我不知道该代码是否可以在服务器上运行,不确定问题是来自我的 PC 还是我没有正确缓存。
【问题讨论】:
标签: php caching aws-secrets-manager fat-free-framework