Объектное хранилище S3: подключение с помощью S3cmd
В нашем облачном сервисе S3 можно хранить большие объемы данных разного типа. Управлять хранилищем можно в личном кабинете или при помощи специального программного обеспечения, например консольных клиентов. В этом гайде расскажем, как подключиться к хранилищу S3 с помощью S3cmd.
Инициализация файла конфигурации
По умолчанию s3cmd сохраняет конфигурационный файл .s3cfg в домашнем каталоге пользователя, выполнившего команду настройки. .s3cfg — это обычный текстовый файл пар ключ:значение, который можно редактировать после его создания.
При запуске команд s3cmd использует параметры, установленные в файле конфигурации по умолчанию. Можно указать другую конфигурацию, добавляя
ее к каждой команде при помощи -c ~/path/to/config/file.
Если вы планируете использовать только наш S3 и не хотите указывать его конфигурационный файл каждый раз при работе с s3cmd, то настройте файл ~/.s3cfg по умолчанию с помощью следующей команды:
s3cmd --configure
Введите свои ключи, затем примите US в качестве региона по умолчанию. Вы можете использовать переменные среды AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY для хранения набора ключей.
Пример:
Enter new values or accept defaults in brackets with Enter.
Refer to user manual for detailed description of all options.
Access key and Secret key are your identifiers for Amazon S3. Leave them empty for using the env variables.
Access Key []: EXAMPLE7UQOTHDTF3GK4
Secret Key []: exampleb8e1ec97b97bff326955375c5
Default Region [US]:
Затем введите конечную точку.
Пример:
Use "s3.amazonaws.com" for S3 Endpoint and not modify it to the target Amazon S3.
S3 Endpoint [s3.amazonaws.com]: storage-1.s3.hoster.by
Далее будет запрошен шаблон URL-адреса для доступа к вашему бакету. Вы можете использовать переменную %(bucket)s вместо имени вашего контейнера. Введите следующий формат шаблона точно так, как написано: %(bucket)s.storage-1.s3.hoster.by.
Пример:
Use "%(bucket)s.s3.amazonaws.com" to the target Amazon S3. "%(bucket)s" and "%(location)s" vars c
an be used if the target S3 system supports dns based buckets.
DNS-style bucket+hostname:port template for accessing a bucket []: %(bucket)s.storage-1.s3.hoster.by
Установка пароля шифрования по технологии GPG — необязательно
Если HTTPS шифрует данные только во время передачи, то GPG — при передаче и хранении. Установка пароля по технологии GPG не зашифрует ранее размещенные файлы, но обеспечит шифрование добавленным после.
Пример:
Encryption password is used to protect your files from reading
by unauthorized persons while in transfer to S3
Encryption password:
В следующем запросе будет задан путь к программе GPG. В Linux вы можете принять значение по умолчанию, нажав ENTER. Если вы следуете этим инструкциям в macOS, вам, возможно, придется установить GPG с помощью такого инструмента, как Homebrew (brew install gpg). Затем вы можете найти путь GPG с помощью which gpg.
Пример:
Path to GPG program [/usr/bin/gpg]:
Настройка HTTPS-подключения
В команде ниже предлагается использовать протокол HTTPS, который защищает данные при передаче. К тому же наше объектное хранилище не поддерживает незашифрованную передачу. Нажмите ENTER, чтобы принять значение по умолчанию.
Пример:
When using secure HTTPS protocol all communication with Amazon S3
servers is protected from 3rd party eavesdropping. This method is
slower than plain HTTP, and can only be proxied with Python 2.7 or newer
Use HTTPS protocol [Yes]: Yes
Настройка прокси-сервера HTTP — необязательно
Если в вашей сети используется прокси-сервер HTTP, то следующий запрос потребует его IP-адрес или имя домена без протокола. Если для вас эти настройки неактуальны, нажмите ENTER, чтобы оставить поле пустым.
Пример:
On some networks all internet access must go through a HTTP proxy.
Try setting it here if you can't connect to S3 directly
HTTP Proxy server name:
После запроса имени прокси-сервера HTTP сценарий конфигурации представляет значения, которые будет использовать, и затем дает возможность их протестировать.
Пример:
New settings:
Access Key: EXAMPLES7UQOTHDTF3GK4
Secret Key: b8e1ec97b97bff326955375c5example
Default Region: US
S3 Endpoint: storage-1.s3.hoster.by
DNS-style bucket+hostname:port template for accessing a bucket: %(bucket)s.s
torage-1.s3.hoster.by
Encryption password: secure_password
Path to GPG program: /usr/bin/gpg
Use HTTPS protocol: True
HTTP Proxy server name:
HTTP Proxy server port: 0
Test access with supplied credentials? [Y/n] Y
После успешного завершения теста нажмите Y для сохранения настроек:
Пример:
Please wait, attempting to list all buckets...
Success. Your access key and secret key worked fine :-)
Now verifying that encryption works...
Success. Encryption and decryption worked fine :-)
Save settings? [y/N] Y
Если тест не будет пройден или вы захотите провести настройку позже, нажмите N. После сохранения конфигурации вы получите подтверждение ее местоположения.
Пример настройки бакета
Для создания бакета используйте команду mb (сокращение от «make Bucket»:
s3cmd mb s3://spacename s3://secondspace
Перечислить все существующие бакеты:
s3cmd ls
Перечислить весь контент во всех бакетах:
s3cmd la --recursive
Используйте команду rb (сокращение от «remove Bucket») для удаления пустого бакета. Если нужно удалить бакет со всем его содержимым, добавьте --recursive. Это навсегда удалит все файлы.
s3cmd rb s3://spacename
Просмотреть информацию по бакету:
s3cmd info s3://spacename
Применить политики к бакету:
s3cmd setpolicy ./policy.json s3://spacename
Пример:
Public read:
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::*"
}]
}
Public full access:
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Principal": "*",
"Action": "s3:*",
"Resource": "arn:aws:s3:::*"
}]
}
По умолчанию публичный доступ закрыт.