community.aws.s3_sync – Эффективно загружать несколько файлов в S3
Примечание
Этот плагин является частью коллекции community.aws (версия 1.3.0).
Для его установки используйте: ansible-galaxy collection install community.aws
Чтобы использовать его в книге задач, укажите: community.aws.s3_sync
В версии 1.0.0: коллекции community.aws
Обзор
- Модуль 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. Если задан параметр profile, этот параметр игнорируется. Передача параметров aws_access_key и profile одновременно устарела и параметры будут сделаны взаимоисключающими после 2022-06-01. псевдонимы: ec2_access_key, access_key | |
| aws_ca_bundle путь | Расположение файла сертификата CA для проверки SSL-сертификатов. Используется только для модулей на основе boto3. Примечание: файл CA Bundle считывается на стороне модуля и может потребоваться явно скопировать его с контроллера, если он не запускается локально. | |
| aws_config словарь | Словарь для изменения конфигурации botocore. Параметры можно найти по адресу https://botocore.amazonaws.com/v1/documentation/api/latest/reference/config.html#botocore.config.Config. Только ключ 'user_agent' используется для модулей boto. См. http://boto.cloudhackers.com/en/latest/boto_config_tut.html#boto для получения дополнительной информации о конфигурации boto. | |
| aws_secret_key строка | Секретный ключ AWS. Если не задан, используется значение переменной среды AWS_SECRET_ACCESS_KEY, AWS_SECRET_KEY или EC2_SECRET_KEY. Если задан параметр profile, этот параметр игнорируется. Передача параметров aws_secret_key и profile одновременно устарела и параметры будут сделаны взаимоисключающими после 2022-06-01. псевдонимы: ec2_secret_key, secret_key | |
| bucket строка / обязательно | Имя ведра. | |
| cache_control строка | Заголовок Cache-Control, устанавливаемый на загруженных объектах. Директивы разделяются запятыми. | |
| debug_botocore_endpoint_logs логическое значение |
| Используйте logger botocore.endpoint для анализа уникальных (а не общих) API-вызовов «ресурс:действие», выполняемых во время задачи, выводя набор в ключ task_results с именем resource_actions. Используйте обратный вызов aws_resource_action, чтобы вывести полный список, созданный во время книги задач. Переменная среды ANSIBLE_DEBUG_BOTOCORE_LOGS также может быть использована. |
| delete логическое значение |
| Удалить удалённые файлы, которые существуют в ведре, но отсутствуют в корневой директории файлов. |
| ec2_url строка | URL для подключения к облаку EC2 или Eucalyptus (по умолчанию модуль будет использовать конечные точки EC2). Игнорируется для модулей, где требуется регион. Должен быть указан для всех других модулей, если регион не используется. Если не задан, используется значение переменной среды EC2_URL, если она есть. псевдонимы: aws_endpoint_url, endpoint_url | |
| exclude строка | По умолчанию: ".*" | Сопоставление файлов по шаблону оболочки. Используется после include для удаления файлов (например, пропустить "*.txt") Для нескольких шаблонов разделяйте их запятыми. |
| file_change_strategy строка |
| Метод определения различий для синхронизации только изменений. В отличие от rsync, файлы не изменяются — они полностью пропускаются или полностью загружаются. date_size загрузит файл, если размер файла не совпадает или если дата последнего изменения локального файла более поздняя, чем у версии S3. checksum сравнит значения etag на основе реализации s3 chunked 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. Использование profile переопределит aws_access_key, aws_secret_key и security_token, а поддержка передачи их одновременно с profile устарела. aws_access_key, aws_secret_key и security_token будут сделаны взаимоисключающими с profile после 2022-06-01. псевдонимы: aws_profile | |
| region строка | Регион AWS для использования. Если не задан, используется значение переменной среды AWS_REGION или EC2_REGION, если она есть. См. http://docs.aws.amazon.com/general/latest/gr/rande.html#ec2_region
псевдонимы: aws_region, ec2_region | |
| retries строка | Параметр retries ничего не делает и будет удалён после 2022-06-01 | |
| security_token строка | Безопасный токен AWS STS. Если не задан, используется значение переменной среды AWS_SECURITY_TOKEN или EC2_SECURITY_TOKEN. Если задан параметр profile, этот параметр игнорируется. Передача параметров security_token и profile одновременно устарела и параметры будут сделаны взаимоисключающими после 2022-06-01. псевдонимы: aws_security_token, access_token | |
| validate_certs логическое значение |
| Если установлено значение "нет", сертификаты SSL для версий boto >= 2.6.0 не будут проверены. |
Примечания
Примечание
- Если параметры не заданы внутри модуля, можно использовать следующие переменные среды в порядке убывания приоритета
AWS_URLилиEC2_URL,AWS_PROFILEилиAWS_DEFAULT_PROFILE,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,AWS_CA_BUNDLE - Ansible использует файл конфигурации boto (обычно ~/.boto), если не указаны данные для аутентификации. См. https://boto.readthedocs.io/en/latest/boto_config_tut.html
-
AWS_REGIONилиEC2_REGIONможно использовать для указания региона AWS, когда это необходимо, но это также можно настроить в файле конфигурации boto
Примеры
- name: basic upload
community.aws.s3_sync:
bucket: tedder
file_root: roles/s3/files/
- name: all the options
community.aws.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 список / элементы=строка | всегда | список файлов (в словарях) файлов, которые будут загружены после принятия стратегического решения Пример: [{'байты': 151, 'путь_без_корня': 'policy.json', 'полный_путь': 'roles/cf/files/policy.json', 'тип_mime': 'application/json', 'модифицировано_в_эпоху': 1477931256, 'путь_s3': 's3sync/policy.json', 'размер_почему': '151 / 151', 'время_почему': '1477931256 / 1477929260'}] |
| filelist_initial список / элементы=строка | всегда | список файлов (в словарях) из начального поиска по шаблонам Пример: [{'байты': 151, 'путь_без_корня': 'policy.json', 'полный_путь': 'roles/cf/files/policy.json', 'модифицировано_в_эпоху': 1477416706}] |
| filelist_local_etag список / элементы=строка | всегда | список файлов (в словарях), включая вычисленный локальный etag Пример: [{'байты': 151, 'путь_без_корня': 'policy.json', 'полный_путь': 'roles/cf/files/policy.json', 'тип_mime': 'application/json', 'модифицировано_в_эпоху': 1477416706, 'путь_s3': 's3sync/policy.json'}] |
| filelist_s3 список / элементы=строка | всегда | список файлов (в словарях), включая информацию о ранее загруженных версиях Пример: [{'байты': 151, 'путь_без_корня': 'policy.json', 'полный_путь': 'roles/cf/files/policy.json', 'тип_mime': 'application/json', 'модифицировано_в_эпоху': 1477416706, 'путь_s3': 's3sync/policy.json'}] |
| filelist_typed список / элементы=строка | всегда | список файлов (в словарях) с вычисленными или переопределёнными типами MIME Пример: [{'байты': 151, 'путь_без_корня': 'policy.json', 'полный_путь': 'roles/cf/files/policy.json', 'тип_mime': 'application/json', 'модифицировано_в_эпоху': 1477416706}] |
| uploaded список / элементы=строка | всегда | список файлов (в словарях) файлов, которые были фактически загружены Пример: [{'байты': 151, 'путь_без_корня': 'policy.json', 'полный_путь': 'roles/cf/files/policy.json', 'путь_s3': 's3sync/policy.json', 'размер_почему': '151 / 151', 'время_почему': '1477931637 / 1477931489'}] |
Авторы
- 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.10/collections/community/aws/s3_sync_module.html