s3_sync – Эффективно загружать несколько файлов в S3
Новая версия с 2.3.
Обзор
- Модуль S3 отлично работает, но очень медленный для большого объёма файлов — даже дюжина файлов будет заметно. В дополнение к скорости, он обрабатывает шаблоны, включения/исключения, типы MIME, сопоставление истечения срока действия, рекурсию, контроль кэша и интеллектуальное отображение каталогов.
Требования
Ниже приведены требования к хосту, на котором выполняется этот модуль.
- boto
- boto3 >= 1.4.4
- botocore
- python >= 2.6
- python-dateutil
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| aws_access_key строка | Ключ доступа AWS. Если не задан, используется значение переменной окружения AWS_ACCESS_KEY_ID, AWS_ACCESS_KEY или EC2_ACCESS_KEY. Псевдонимы: ec2_access_key, access_key | |
| aws_secret_key строка | Секретный ключ AWS. Если не задан, используется значение переменной окружения AWS_SECRET_ACCESS_KEY, AWS_SECRET_KEY или EC2_SECRET_KEY. Псевдонимы: ec2_secret_key, secret_key | |
| bucket - / обязательно | Имя ведра. | |
| cache_control - добавлен в 2.4 | Это строка. Заголовок Cache-Control, устанавливаемый для загруженных объектов. Директивы разделяются запятыми. | |
| debug_botocore_endpoint_logs булево добавлен в 2.8 |
| Используйте логирователь botocore.endpoint для анализа уникальных (а не общих) API-вызовов «ресурс:действие», совершённых во время задачи, выводя набор в ключ resource_actions результатов задачи. Используйте обратный вызов aws_resource_action для вывода в общий список, созданный во время исполнения игры. |
| delete булево добавлен в 2.4 |
| Удаление удалённых файлов, которые существуют в ведре, но отсутствуют в корневом каталоге файла. |
| ec2_url строка | URL для подключения к облаку EC2 или Eucalyptus (по умолчанию модуль будет использовать конечные точки EC2). Игнорируется для модулей, где необходим регион. Должен быть указан для всех остальных модулей, если регион не используется. Если не задан, используется значение переменной окружения EC2_URL, если она есть. | |
| exclude - | По умолчанию: ".*" | Соответствие файлам по шаблону оболочки. Используется после include для удаления файлов (например, пропуск "*.txt") Для нескольких шаблонов разделяйте их запятыми. |
| file_change_strategy - |
| Метод определения различий для синхронизации только изменений. В отличие от rsync, файлы не исправляются — они полностью пропускаются или полностью загружаются. date_size загрузит файл, если размеры файлов не совпадают или дата изменения локального файла новее, чем версия s3. checksum сравнит значения etag на основе реализации s3 для чанкированных md5. force всегда загрузит все файлы. |
| file_root - / обязательно | Путь к файлу/каталогу для синхронизации. Это локальный путь. Этот корневой путь удаляется из имени ключа, поэтому подкаталоги останутся в качестве ключей. | |
| include - | По умолчанию: "*" | Соответствие файлам по шаблону оболочки. Используется перед exclude для определения подходящих файлов (например, только "*.gif") Для нескольких шаблонов разделяйте их запятыми. |
| key_prefix - | В дополнение к пути файла, добавьте этот префикс к пути s3. Модуль добавит слеш в конец префикса, если необходимо. | |
| mime_map - | Запись словаря из расширения в MIME-тип. Это переопределит любой стандартный/определённый MIME-тип. Например {".txt": "application/text", ".yml": "application/text"}
| |
| mode - / обязательно |
| Направление синхронизации. |
| permission - |
| Стандартные разрешения ACL для применения к синхронизированным файлам. Изменение этих разрешений ACL влияет только на недавно синхронизированные файлы, оно не инициирует полную перезагрузку. |
| profile строка | Использует профиль boto. Работает только с boto >= 2.24.0. | |
| region строка | AWS-регион для использования. Если не указан, используется значение переменной окружения AWS_REGION или EC2_REGION, если таковая имеется. См. http://docs.aws.amazon.com/general/latest/gr/rande.html#ec2_region
Псевдонимы: aws_region, ec2_region | |
| security_token строка | AWS STS security token. Если не задан, используется значение переменной окружения AWS_SECURITY_TOKEN или EC2_SECURITY_TOKEN. Псевдонимы: access_token | |
| validate_certs булево |
| Если установлено в «нет», сертификаты SSL не будут проверяться для версий boto >= 2.6.0. |
Примечания
Примечание
- Если параметры не установлены в модуле, могут быть использованы следующие переменные среды в порядке убывания приоритета
AWS_URLилиEC2_URL,AWS_ACCESS_KEY_IDилиAWS_ACCESS_KEYилиEC2_ACCESS_KEY,AWS_SECRET_ACCESS_KEYилиAWS_SECRET_KEYилиEC2_SECRET_KEY,AWS_SECURITY_TOKENилиEC2_SECURITY_TOKEN,AWS_REGIONилиEC2_REGION - Ansible использует конфигурационный файл boto (обычно ~/.boto), если учетные данные не предоставлены. См. https://boto.readthedocs.io/en/latest/boto_config_tut.html
-
AWS_REGIONилиEC2_REGIONобычно используются для указания AWS-региона, когда это необходимо, но это также можно настроить в конфигурационном файле boto
Примеры
- name: basic upload
s3_sync:
bucket: tedder
file_root: roles/s3/files/
- name: all the options
s3_sync:
bucket: tedder
file_root: roles/s3/files
mime_map:
.yml: application/text
.json: application/text
key_prefix: config_files/web
file_change_strategy: force
permission: public-read
cache_control: "public, max-age=31536000"
include: "*"
exclude: "*.txt,.*"
Возвращаемые значения
Общие возвращаемые значения документированы здесь, следующие — поля, уникальные для этого модуля:
| Ключ | Возвращаемое значение | Описание |
|---|---|---|
| filelist_actionable список | всегда | список файлов (словари) файлов, которые будут загружены после принятия решения стратегией Пример: [{'bytes': 151, 'chopped_path': 'policy.json', 'fullpath': 'roles/cf/files/policy.json', 'mime_type': 'application/json', 'modified_epoch': 1477931256, 's3_path': 's3sync/policy.json', 'whysize': '151 / 151', 'whytime': '1477931256 / 1477929260'}] |
| filelist_initial список | всегда | список файлов (словари) из начального поиска по шаблонам Пример: [{'bytes': 151, 'chopped_path': 'policy.json', 'fullpath': 'roles/cf/files/policy.json', 'modified_epoch': 1477416706}] |
| filelist_local_etag список | всегда | список файлов (словари), включая вычисленный локальный etag Пример: [{'bytes': 151, 'chopped_path': 'policy.json', 'fullpath': 'roles/cf/files/policy.json', 'mime_type': 'application/json', 'modified_epoch': 1477416706, 's3_path': 's3sync/policy.json'}] |
| filelist_s3 список | всегда | список файлов (словари), включая информацию о ранее загруженных версиях Пример: [{'bytes': 151, 'chopped_path': 'policy.json', 'fullpath': 'roles/cf/files/policy.json', 'mime_type': 'application/json', 'modified_epoch': 1477416706, 's3_path': 's3sync/policy.json'}] |
| filelist_typed список | всегда | список файлов (словари) с вычисленными или переопределёнными типами MIME Пример: [{'bytes': 151, 'chopped_path': 'policy.json', 'fullpath': 'roles/cf/files/policy.json', 'mime_type': 'application/json', 'modified_epoch': 1477416706}] |
| uploaded список | всегда | список файлов (словари) файлов, которые были фактически загружены Пример: [{'bytes': 151, 'chopped_path': 'policy.json', 'fullpath': 'roles/cf/files/policy.json', 's3_path': 's3sync/policy.json', 'whysize': '151 / 151', 'whytime': '1477931637 / 1477931489'}] |
Статус
- Данный модуль не гарантирует обратную совместимость интерфейса. [превью]
- Этот модуль поддерживается сообществом Ansible. [community]
Авторы
- Ted Timmons (@tedder)
Подсказка
Если вы обнаружите какие-либо проблемы в этой документации, вы можете отредактировать этот документ, чтобы улучшить его.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.8/modules/s3_sync_module.html