Для ясности, мы создали политику EC2, поэтому мой сайт может напрямую обращаться к таким службам, как хранилище параметров, S3, Amazon SES и т. Д.
На данный момент все мои учетные данные хранятся в AWS.Хранилище параметров, а затем сайт использует эти учетные данные, например, учетные данные БД, diff.Ключи API и т. Д. Таким образом, только жестко закодированные учетные данные выбирают параметры из хранилища параметров.Теперь клиент хочет удалить эти жестко закодированные учетные данные, поэтому мы создали Политику EC2.
До сих пор у нас есть код, подобный приведенному ниже, для извлечения параметров:
$config = array(
'version' => 'latest',
'region' => '*****',
'credentials' => array(
'key' => '*******',
'secret' => '******',
)
);
$s3_instance = new \Aws\Ssm\SsmClient($config);
$result = $s3_instance->getParameters([
'Names' => $credential_group,
'WithDecryption' => true
]);
//converting S3 private data to array to read
$keys = $result->toArray();
var_dump($keys);
Теперь вопрос в том, что мне нужно изменить в приведенном выше коде, поэтому он должен работать без передачи этих учетных данных.
Примечание: я использую библиотеку AWS PHP для выполнения выше.
Обновление
Дальнейшее чтение документации, https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/guide_credentials.html
Использование учетных данныхиз переменных среды
Если вы не предоставляете учетные данные клиентскому объекту во время его создания, SDK попытается найти учетные данные в вашей среде.Первое место, в котором SDK проверяет учетные данные, - это переменные среды.SDK использует функцию функции getenv () для поиска переменных среды AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY и AWS_SESSION_TOKEN.Эти учетные данные называются учетными данными среды.
Итак, после этого я попробовал следующее:
var_dump (getenv ('AWS_ACCESS_KEY_ID'));
Но это возвращает bool (false).Так нужно ли мне вручную устанавливать их в учетных данных среды?
Какие вещи мне нужно изменить в приведенном выше коде?
Обновление
На основе этого документа: https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/guide_configuration.html#credentials
Я внес следующие изменения (удалил часть учетных данных из массива):
$config = array(
'version' => 'latest',
'region' => '*****'
);
Затем система выдает следующие предупреждения:
Предупреждение: include (Test_Role_Cognitoaccess_from_instanceRole.php):не удалось открыть поток
Предупреждение: include (): не удалось открыть 'Test_Role_Cognitoaccess_from_instanceRole.php' для включения (include_path = '.: / usr / share / pear: / usr / share / php')
Предупреждение: include (Test_Role_Cognitoaccess_from_instanceRole.php): не удалось открыть поток
Предупреждение: include (): не удалось открыть 'Test_Role_Cognitoaccess_from_instanceRole.php' для включения (include_path = '.: / Usr / share / pear /:usr / share / php ')