community.aws.s3_sync – Эффективно загружать несколько файлов в S3
Примечание
Этот плагин входит в состав коллекции community.aws (версия 1.3.0).
Для его установки используйте: ansible-galaxy collection install community.aws.
Чтобы использовать его в книге задач, укажите: community.aws.s3_sync.
Введено в версии 1.0.0: of 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 читается со стороны модуля и, возможно, должен быть скопирован из контроллера, если модуль не запускается локально. | |
| aws_config словарь | Словарь для изменения конфигурации botocore. Параметры можно найти по адресу https://botocore.amazonaws.com/v1/documentation/api/latest/reference/config.html#botocore.config.Config. Для модулей boto используется только ключ 'user_agent'. Дополнительную информацию о конфигурации boto можно найти по адресу http://boto.cloudhackers.com/en/latest/boto_config_tut.html#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 булево |
| Использовать логгер botocore.endpoint для анализа уникальных (а не общих) API-вызовов "ресурс:действие", выполненных во время задачи, выводящих набор в ключ resource_actions в результатах задачи. Используйте обратный вызов aws_resource_action для вывода общего списка, выполненного во время выполнения playbook. Также можно использовать переменную среды 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–2021 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.11/collections/community/aws/s3_sync_module.html