AWS SDK для PHP
AWS SDK для PHP
Подготовка к работе
-
Назначьте сервисному аккаунту роли, которые нужны для вашего проекта, например storage.editor на бакет — для работы с конкретным бакетом, или на каталог — для работы со всеми бакетами в каталоге. Подробнее о ролях см. на странице Управление доступом с помощью Yandex Identity and Access Management.
Чтобы работать с объектами в зашифрованном бакете, у пользователя или сервисного аккаунта вместе с ролью
storage.configurer
должны быть следующие роли на ключ шифрования:kms.keys.encrypter
— для чтения ключа, шифрования и загрузки объектов;kms.keys.decrypter
— для чтения ключа, расшифровки и скачивания объектов;kms.keys.encrypterDecrypter
— включает разрешения, предоставляемые ролямиkms.keys.encrypter
иkms.keys.decrypter
.
Подробнее см. Сервисные роли Key Management Service.
-
Создайте статический ключ доступа.
В результате вы получите данные статического ключа доступа. Для аутентификации в Object Storage вам понадобятся:
key_id
— идентификатор статического ключа доступа;secret
— секретный ключ.
Сохраните
key_id
иsecret
, так как повторное получение значения ключа будет невозможно.
Примечание
Сервисный аккаунт может просматривать список бакетов только в том каталоге, в котором он был создан.
Сервисный аккаунт может выполнять действия с объектами в бакетах, которые созданы в каталогах, отличных от каталога сервисного аккаунта. Для этого назначьте сервисному аккаунту роли на нужный каталог или бакет в нем.
Установка
Чтобы установить AWS SDK для PHP, воспользуйтесь инструкцией
Настройка
-
В директории
.aws
создайте файлcredentials
и скопируйте в него аутентификационные данные, полученные ранее:[default] aws_access_key_id = <идентификатор_ключа> aws_secret_access_key = <секретный_ключ>
-
Если вы используете образ LAMP из Cloud Marketplace, добавьте в конфигурационный файл Apache
httpd.conf
(для Debian и Ubuntu —apache2.conf
) переменную окруженияHOME
с указанием на домашний каталог:SetEnv HOME <домашний_каталог>
Подробнее о расположении и названии конфигурационного файла Apache для разных ОС см. на Apache HTTP Server Wiki
.
Вместо файла .aws/credentials
вы также можете использовать переменные среды AWS_ACCESS_KEY_ID
и AWS_SECRET_ACCESS_KEY
.
Для доступа к Object Storage используйте адрес storage.yandexcloud.net
.
Примеры кода
Не забудьте указать путь к вашему проекту в строке с подключением файла autoload.php
:
<?php
// Предполагается, что AWS SDK установлен через Composer
require "<путь_к_проекту>/vendor/autoload.php";
use Aws\S3\S3Client;
$s3 = new S3Client([
"version" => "latest",
"endpoint" => "https://storage.yandexcloud.net",
"region" => "ru-central1",
]);
$buckets = $s3->listBuckets();
$bucket_count = 1;
echo "<b>Well, here are your buckets:</b></br></br>";
foreach ($buckets["Buckets"] as $bucket) {
echo $bucket_count . ". " . $bucket["Name"] . "</br>";
$bucket_count++;
}
?>
Также см. примеры кода