Модуль google.cloud.gcp_pubsub_subscription — создание подписки GCP
Примечание
Этот модуль входит в коллекцию google.cloud (версия 1.13.0).
Возможно, эта коллекция уже установлена, если вы используете пакет ansible. Она не входит в ansible-core. Чтобы проверить, установлена ли она, выполните ansible-galaxy collection list.
Для установки используйте: ansible-galaxy collection install google.cloud. Для использования этого модуля требуются дополнительные компоненты; подробности см. в разделе Требования.
Чтобы использовать модуль в плейбуке, укажите: google.cloud.gcp_pubsub_subscription.
Обзор
- Именованный ресурс, представляющий поток сообщений из одной конкретной темы, предназначенный для доставки подписавшемуся приложению.
Требования
На хосте, выполняющем этот модуль, необходимы следующие компоненты.
- python >= 2.6
- requests >= 2.18.4
- google-auth >= 1.3.0
Параметры
Параметр | Комментарии |
|---|---|
access_token string | Токен доступа OAuth2, если тип учетных данных — accesstoken. |
ack_deadline_seconds integer | Максимальное время после получения сообщения подписчиком, в течение которого подписчик должен подтвердить его получение. После доставки сообщения и до истечения срока подтверждения, а также до подтверждения сообщения оно считается необработанным и в этот период повторно не доставляется (по возможности). Для подписок с получением сообщений этот параметр задает исходное значение срока подтверждения. Чтобы переопределить это значение для конкретного сообщения, вызовите subscriptions.modifyAckDeadline с соответствующим ackId. Минимальный пользовательский срок — 10 секунд. Максимальный пользовательский срок — 600 секунд (10 минут). Если значение параметра равно 0, используется значение по умолчанию — 10 секунд. При доставке push-уведомлений это значение также задает время ожидания запроса к конечной точке push. Если подписчик не подтвердит получение сообщения, система Pub/Sub в конечном итоге доставит его повторно. |
auth_kind string / обязательный | Тип используемых учетных данных. Варианты:
|
cloud_storage dictionary | Конфигурация подписки Cloud Storage. |
|
bucket string / обязательный |
Ссылка на ресурс Bucket. Это поле содержит имя ресурса Bucket в GCP, в котором будут храниться сообщения, полученные из темы. |
|
file_datetime_format string |
Формат даты и времени объекта файла, хранящегося в Bucket. |
|
file_prefix string |
Префикс имени объекта файла, хранящегося в Bucket. |
|
file_suffix string |
Суффикс имени объекта файла, хранящегося в Bucket. |
|
max_bytes integer |
Подписка Cloud Storage создает новый выходной файл, если превышено указанное значение максимального размера в байтах. Минимум — 1000, максимум — 10737418240. |
|
max_duration string |
Подписка создает новый выходной файл, если превышено указанное максимальное время. Минимум — 60 с, максимум — 600 с. |
|
max_messages integer |
Подписка Cloud Storage создает новый выходной файл, если превышено указанное количество сообщений. Минимум — 1000. |
|
output_format string |
Укажите формат выходных файлов, сохраняемых в корзине Cloud Storage: text или avro. |
|
use_topic_schema boolean |
Если значение равно true, выходной файл Cloud Storage будет сериализован с использованием схемы темы, если она существует. Это поле допустимо только для формата сообщений avro. Варианты:
|
|
write_metadata boolean |
Этот параметр позволяет сохранять метаданные сообщения вместе с сообщением, например заголовки сообщения. Это поле допустимо только для формата сообщений avro. Варианты:
|
dead_letter_policy dictionary | Политика, определяющая условия отправки сообщений в очередь недоставленных сообщений для этой подписки. Если dead_letter_policy не задана, отправка недоставленных сообщений отключена. Сервисная учетная запись Cloud Pub/Sub, связанная с родительским проектом этой подписки (например, service-{project_number}@gcp-sa-pubsub.iam.gserviceaccount.com), должна иметь разрешение на подтверждение получения сообщений (Acknowledge()) в этой подписке. |
|
dead_letter_topic string |
Имя темы, в которую следует публиковать недоставленные сообщения. Формат: `projects/{project}/topics/{topic}`. Сервисная учетная запись Cloud Pub/Sub, связанная с родительским проектом содержащей подписки (например, service-{project_number}@gcp-sa-pubsub.iam.gserviceaccount.com), должна иметь разрешение на публикацию (Publish()) в эту тему. Операция завершится ошибкой, если тема не существует. Пользователи должны убедиться, что к этой теме привязана подписка, поскольку сообщения, опубликованные в теме без подписок, теряются. |
|
max_delivery_attempts integer |
Максимальное количество попыток доставки любого сообщения. Значение должно находиться в диапазоне от 5 до 100. Количество попыток доставки определяется как 1 + (сумма количества NACK и количества случаев превышения срока подтверждения получения сообщения). NACK — это любой вызов ModifyAckDeadline с нулевым сроком. Обратите внимание, что клиентские библиотеки могут автоматически продлевать ack_deadlines. Этот параметр будет применяться по возможности. Если значение параметра равно 0, используется значение по умолчанию — 5. |
enable_message_ordering boolean | Если значение равно `true`, сообщения, опубликованные с одинаковым orderingKey в PubsubMessage, будут доставлены подписчикам в том порядке, в котором они поступили в систему Pub/Sub. В противном случае порядок доставки не гарантируется. Варианты:
|
env_type string | Указывает, в какой среде Ansible выполняется этот модуль. Не задавайте этот параметр, если не знаете, что делаете. Параметр изменяет только строку User Agent для всех запросов API. |
expiration_policy dictionary | Политика, определяющая условия истечения срока действия этой подписки. Подписка считается активной, пока любой подключенный подписчик успешно получает сообщения из нее или выполняет операции с ней. Если expirationPolicy не задана, используется политика по умолчанию со значением ttl 31 день. Если параметр задан, но ttl равен “”, срок действия ресурса не истекает. Минимальное допустимое значение expirationPolicy.ttl — 1 день. |
|
ttl string / обязательный |
Задает время жизни связанного ресурса. Срок действия ресурса истекает, если он неактивен в течение периода ttl. Если ttl не задан, срок действия связанного ресурса не истекает. Длительность в секундах с точностью до девяти знаков после запятой, заканчивающаяся символом ‘s’. Пример — “3.5s”. |
filter string | Подписка доставляет только сообщения, соответствующие фильтру. Pub/Sub автоматически подтверждает получение сообщений, не соответствующих фильтру. Сообщения можно фильтровать по атрибутам. Максимальная длина фильтра — 256 байт. После создания подписки изменить фильтр нельзя. |
labels dictionary | Набор пар меток «ключ/значение», назначаемых этой подписке. |
message_retention_duration string | Время хранения неподтвержденных сообщений в очереди подписки, отсчитываемое с момента публикации сообщения. Если retainAckedMessages равно true, этот параметр также задает срок хранения подтвержденных сообщений и, следовательно, глубину поиска во времени при вызове subscriptions.seek. По умолчанию — 7 дней. Значение не может превышать 7 дней (`”604800s”`) или быть меньше 10 минут (`”600s”`). Длительность в секундах с точностью до девяти знаков после запятой, заканчивающаяся символом ‘s’. Пример: `”600.5s”`. По умолчанию: |
name string / обязательный | Имя подписки. |
project string | Используемый проект Google Cloud Platform. |
push_config dictionary | Если для этой подписки используется доставка push-уведомлений, это поле служит для ее настройки. Пустое значение pushConfig означает, что подписчик будет получать сообщения и подтверждать их с помощью методов API. |
|
attributes dictionary |
Атрибуты конфигурации конечной точки. Для каждой конечной точки предусмотрен набор поддерживаемых API атрибутов, с помощью которых можно управлять различными аспектами доставки сообщений. В настоящее время поддерживается атрибут x-goog-version, который позволяет изменить формат отправляемого сообщения. Этот атрибут указывает версию данных, ожидаемую конечной точкой. Он определяет структуру отправляемого сообщения (то есть его поля и метаданные). Версия конечной точки зависит от версии API Pub/Sub. Если атрибут не указан при вызове subscriptions.create, по умолчанию используется версия API, с помощью которой был выполнен вызов. Если атрибут не указан при вызове subscriptions.modifyPushConfig, его значение не изменяется. Вызовы subscriptions.get всегда возвращают допустимую версию, даже если подписка была создана без этого атрибута. Возможные значения этого атрибута: - v1beta1: используется формат push, определенный в API Pub/Sub v1beta1. - v1 или v1beta2: используется формат push, определенный в API Pub/Sub v1. |
|
oidc_token dictionary |
Если параметр задан, Pub/Sub будет создавать токен OIDC JWT и добавлять его в качестве заголовка Authorization к HTTP-запросу для каждого отправляемого сообщения. |
|
audience string |
Аудитория, используемая при создании токена OIDC. Утверждение audience определяет получателей, для которых предназначен JWT. Значение audience — одна строка с учетом регистра. Несколько значений (массив) для поля audience не поддерживаются. Подробнее об аудитории токена OIDC JWT: https://tools.ietf.org/html/rfc7519#section-4.1.3 Примечание: если значение не указано, будет использоваться URL конечной точки Push. |
|
service_account_email string / обязательный |
Адрес электронной почты сервисной учетной записи, используемой для создания токена OIDC. Вызывающий субъект (для RPC-вызовов subscriptions.create, subscriptions.patch и subscriptions.modifyPushConfig) должен иметь разрешение iam.serviceAccounts.actAs для этой сервисной учетной записи. |
|
push_endpoint string / обязательный |
URL конечной точки, на которую следует отправлять сообщения. Например, конечной точкой веб-перехватчика может быть “https://example.com/push”. |
retain_acked_messages boolean | Указывает, следует ли сохранять подтвержденные сообщения. Если значение равно `true`, сообщения не удаляются из очереди подписки даже после подтверждения, пока не истечет период messageRetentionDuration. Варианты:
|
retry_policy dictionary | Политика, определяющая порядок повторных попыток доставки сообщений Pub/Sub для этой подписки. Если параметр не задан, применяется политика повторных попыток по умолчанию. Как правило, это означает, что для работающих подписчиков повторная доставка сообщений выполняется при первой возможности. RetryPolicy применяется при получении NACK или превышении срока подтверждения для данного сообщения. |
|
maximum_backoff string |
Максимальная задержка между последовательными доставками данного сообщения. Значение должно находиться в диапазоне от 0 до 600 секунд. По умолчанию — 600 секунд. Длительность в секундах с точностью до девяти знаков после запятой, заканчивающаяся символом ‘s’. Пример: “3.5s”. |
|
minimum_backoff string |
Минимальная задержка между последовательными доставками данного сообщения. Значение должно находиться в диапазоне от 0 до 600 секунд. По умолчанию — 10 секунд. Длительность в секундах с точностью до девяти знаков после запятой, заканчивающаяся символом ‘s’. Пример: “3.5s”. |
scopes list / элементы=string | Массив используемых областей доступа |
service_account_contents jsonarg | Содержимое JSON-файла сервисной учетной записи в виде словаря или JSON-строки. |
service_account_email string | Необязательный адрес электронной почты сервисной учетной записи, если выбран machineaccount и пользователь не хочет использовать адрес по умолчанию. |
service_account_file path | Путь к JSON-файлу сервисной учетной записи, если в качестве типа выбран serviceaccount. |
state string | Должен ли указанный объект существовать в GCP. Варианты:
|
topic dictionary / обязательный | Ссылка на ресурс Topic. Это поле содержит ссылку на ресурс Topic в GCP. Указать ее можно двумя способами. Во-первых, можно задать словарь с ключом ‘name’ и значением, равным имени ресурса. Также можно добавить `register: name-of-resource` в задачу gcp_pubsub_topic, а затем присвоить этому полю topic значение “{{ name-of-resource }}”. |
Примечания
Примечание
- Справочник API: https://cloud.google.com/pubsub/docs/reference/rest/v1/projects.subscriptions
- Управление подписками: https://cloud.google.com/pubsub/docs/admin#managing_subscriptions
- Для аутентификации можно задать service_account_file с помощью переменной среды
GCP_SERVICE_ACCOUNT_FILE. - Для аутентификации можно задать service_account_contents с помощью переменной среды
GCP_SERVICE_ACCOUNT_CONTENTS. - Для аутентификации можно задать service_account_email с помощью переменной среды
GCP_SERVICE_ACCOUNT_EMAIL. - Для аутентификации можно задать access_token с помощью переменной среды
GCP_ACCESS_TOKEN. - Для аутентификации можно задать auth_kind с помощью переменной среды
GCP_AUTH_KIND. - Для аутентификации можно задать scopes с помощью переменной среды
GCP_SCOPES. - Значения переменных среды используются только в том случае, если значения не заданы в плейбуке.
- Параметры service_account_email и service_account_file взаимоисключающие.
Примеры
- name: create a topic
google.cloud.gcp_pubsub_topic:
name: topic-subscription
project: "{{ gcp_project }}"
auth_kind: "{{ gcp_cred_kind }}"
service_account_file: "{{ gcp_cred_file }}"
state: present
register: topic
- name: create a subscription
google.cloud.gcp_pubsub_subscription:
name: test_object
topic: "{{ topic }}"
ack_deadline_seconds: 300
project: test_project
auth_kind: serviceaccount
service_account_file: "/tmp/auth.pem"
state: present
Возвращаемые значения
Общие возвращаемые значения описаны здесь; ниже перечислены поля, уникальные для этого модуля:
Ключ | Описание |
|---|---|
ackDeadlineSeconds integer | Это значение задаёт максимальное время после получения сообщения подписчиком, в течение которого подписчик должен подтвердить получение сообщения. После доставки сообщения и до истечения срока подтверждения, а также до подтверждения сообщения оно считается необработанным и в течение этого времени повторно не доставляется (по возможности). Для подписок с получением сообщений это значение используется в качестве начального срока подтверждения. Чтобы переопределить это значение для конкретного сообщения, вызовите subscriptions.modifyAckDeadline с соответствующим ackId при использовании получения сообщений. Минимальный пользовательский срок, который можно указать, составляет 10 секунд. Максимальный пользовательский срок — 600 секунд (10 минут). Если этот параметр равен 0, используется значение по умолчанию — 10 секунд. При доставке с отправкой это значение также используется для установки времени ожидания запроса к конечной точке отправки. Если подписчик так и не подтвердит получение сообщения, система Pub/Sub в конечном итоге доставит его повторно. Возвращается: success |
deadLetterPolicy complex | Политика, задающая условия отправки сообщений в очередь недоставленных сообщений для этой подписки. Если dead_letter_policy не задана, отправка сообщений в очередь недоставленных сообщений отключена. У сервисного аккаунта Cloud Pub/Sub, связанного с родительским проектом этой подписки (то есть service-{project_number}@gcp-sa-pubsub.iam.gserviceaccount.com), должно быть разрешение на подтверждение сообщений в этой подписке с помощью Acknowledge(). Возвращается: success |
|
deadLetterTopic string |
Название темы, в которую следует публиковать сообщения, отправленные в очередь недоставленных сообщений. Формат: `projects/{project}/topics/{topic}`. У сервисного аккаунта Cloud Pub/Sub, связанного с родительским проектом содержащей подписки (то есть service-{project_number}@gcp-sa-pubsub.iam.gserviceaccount.com), должно быть разрешение на публикацию в этой теме с помощью Publish(). Операция завершится ошибкой, если тема не существует. Пользователям следует убедиться, что к этой теме привязана подписка, поскольку сообщения, опубликованные в теме без подписок, теряются. Возвращается: success |
|
maxDeliveryAttempts integer |
Максимальное количество попыток доставки любого сообщения. Значение должно находиться в диапазоне от 5 до 100. Количество попыток доставки определяется как 1 + (сумма количества NACK и количества случаев истечения срока подтверждения для сообщения). NACK — это любой вызов ModifyAckDeadline с нулевым сроком. Обратите внимание, что клиентские библиотеки могут автоматически продлевать ack_deadlines. Это поле обрабатывается по возможности. Если этот параметр равен 0, используется значение по умолчанию — 5. Возвращается: success |
enableMessageOrdering boolean | Если значение равно `true`, сообщения, опубликованные с одинаковым orderingKey в PubsubMessage, будут доставлены подписчикам в том порядке, в котором их получила система Pub/Sub. В противном случае они могут быть доставлены в любом порядке. Возвращается: success |
expirationPolicy complex | Политика, задающая условия истечения срока действия этой подписки. Подписка считается активной, пока любой подключённый подписчик успешно получает из неё сообщения или выполняет операции с подпиской. Если expirationPolicy не задана, будет использоваться политика по умолчанию со значением ttl, равным 31 дню. Если она задана, но ttl равен “”, ресурс никогда не истекает. Минимальное допустимое значение expirationPolicy.ttl — 1 день. Возвращается: success |
|
ttl string |
Задаёт длительность срока жизни связанного ресурса. Ресурс истекает, если он не активен в течение периода ttl. Если ttl не задан, связанный ресурс никогда не истекает. Длительность в секундах с точностью до девяти десятичных знаков, оканчивающаяся символом ‘s’. Пример: “3.5s”. Возвращается: success |
filter string | Подписка доставляет только сообщения, соответствующие фильтру. Pub/Sub автоматически подтверждает сообщения, не соответствующие фильтру. Можно фильтровать сообщения по их атрибутам. Максимальная длина фильтра — 256 байт. После создания подписки изменить фильтр нельзя. Возвращается: success |
labels dictionary | Набор пар метка/значение, назначаемых этой подписке. Возвращается: success |
messageRetentionDuration string | Время хранения неподтверждённых сообщений в очереди подписки, отсчитываемое с момента публикации сообщения. Если retainAckedMessages имеет значение true, этот параметр также определяет срок хранения подтверждённых сообщений и, следовательно, насколько далеко в прошлое можно выполнить subscriptions.seek. По умолчанию — 7 дней. Значение не может превышать 7 дней (`”604800s”`) или быть меньше 10 минут (`”600s”`). Длительность в секундах с точностью до девяти десятичных знаков, оканчивающаяся символом ‘s’. Пример: `”600.5s”`. Возвращается: success |
name string | Название подписки. Возвращается: success |
pushConfig complex | Если для этой подписки используется доставка с отправкой, это поле задаёт её параметры. Пустое значение pushConfig означает, что подписчик будет получать сообщения и подтверждать их с помощью методов API. Возвращается: success |
|
attributes dictionary |
Атрибуты конфигурации конечной точки. Каждая конечная точка имеет набор поддерживаемых API атрибутов, которые можно использовать для управления различными аспектами доставки сообщений. В настоящее время поддерживается атрибут x-goog-version, с помощью которого можно изменить формат отправляемого сообщения. Этот атрибут указывает версию данных, ожидаемую конечной точкой. От него зависит структура отправляемого сообщения (то есть его поля и метаданные). Версия конечной точки определяется версией API Pub/Sub. Если атрибут не указан при вызове subscriptions.create, по умолчанию используется версия API, применённая для этого вызова. Если атрибут не указан при вызове subscriptions.modifyPushConfig, его значение не изменяется. Вызовы subscriptions.get всегда возвращают допустимую версию, даже если подписка создана без этого атрибута. Возможные значения этого атрибута: - v1beta1: используется формат отправки, определённый в API Pub/Sub версии v1beta1. - v1 или v1beta2: используется формат отправки, определённый в API Pub/Sub версии v1. Возвращается: success |
|
oidcToken complex |
Если этот параметр задан, Pub/Sub будет генерировать токен OIDC JWT и добавлять его в качестве заголовка Authorization к HTTP-запросу для каждого отправляемого сообщения. Возвращается: success |
|
audience string |
Аудитория, используемая при генерации токена OIDC. Утверждение audience указывает получателей, для которых предназначен JWT. Значение audience представляет собой одну строку с учётом регистра. Несколько значений (массив) для поля audience не поддерживаются. Подробнее об аудитории токена OIDC JWT: https://tools.ietf.org/html/rfc7519#section-4.1.3 Примечание: если значение не указано, будет использоваться URL конечной точки отправки. Возвращается: success |
|
serviceAccountEmail string |
Адрес электронной почты сервисного аккаунта, используемого для генерации токена OIDC. У вызывающей стороны (для RPC-вызовов subscriptions.create, subscriptions.patch и subscriptions.modifyPushConfig) должно быть разрешение iam.serviceAccounts.actAs для этого сервисного аккаунта. Возвращается: success |
|
pushEndpoint string |
URL конечной точки, на которую следует отправлять сообщения. Например, конечная точка веб-перехватчика может использовать адрес “https://example.com/push”. Возвращается: success |
retainAckedMessages boolean | Определяет, следует ли хранить подтверждённые сообщения. Если значение равно `true`, сообщения не удаляются из очереди подписки даже после подтверждения, пока не истечёт срок messageRetentionDuration. Возвращается: success |
retryPolicy complex | Политика, задающая порядок повторных попыток доставки сообщений Pub/Sub для этой подписки. Если политика не задана, применяется политика повторных попыток по умолчанию. Обычно это означает, что сообщения будут повторно доставляться как можно скорее для работающих подписчиков. RetryPolicy срабатывает при NACK или истечении срока подтверждения для конкретного сообщения. Возвращается: success |
|
maximumBackoff string |
Максимальная задержка между последовательными доставками заданного сообщения. Значение должно находиться в диапазоне от 0 до 600 секунд. По умолчанию — 600 секунд. Длительность в секундах с точностью до девяти десятичных знаков, оканчивающаяся символом ‘s’. Пример: “3.5s”. Возвращается: success |
|
minimumBackoff string |
Минимальная задержка между последовательными доставками заданного сообщения. Значение должно находиться в диапазоне от 0 до 600 секунд. По умолчанию — 10 секунд. Длительность в секундах с точностью до девяти десятичных знаков, оканчивающаяся символом ‘s’. Пример: “3.5s”. Возвращается: success |
topic dictionary | Ссылка на ресурс Topic. Возвращается: success |
Ссылки на коллекцию
© 2012–2018 Michael DeHaan
© 2018–2025 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/projects/ansible/latest/collections/google/cloud/gcp_pubsub_subscription_module.html