Spec-Zone.ru › AWS CLI v2

[ aws . sqs ]

получение-сообщения

Описание

Получает одно или несколько сообщений (до 10) из указанной очереди. Использование параметра WaitTimeSeconds позволяет использовать поддержку длительного опроса. Дополнительную информацию см. в разделе Amazon SQS Длительный опрос в Руководстве разработчика Amazon SQS.

Кратковременный опрос — это стандартное поведение, при котором на вызов ReceiveMessage отбирается взвешенная случайная выборка машин. Таким образом, возвращаются только сообщения, находящиеся на выбранных машинах. Если количество сообщений в очереди небольшое (менее 1000), вы, скорее всего, получите меньше сообщений, чем запросили за каждый вызов ReceiveMessage. Если количество сообщений в очереди чрезвычайно мало, вы можете не получить никаких сообщений в конкретном ответе ReceiveMessage. В этом случае повторите запрос.

Для каждого возвращенного сообщения ответ включает следующее:

  • Тело сообщения.
  • Хеш-код MD5 тела сообщения. Дополнительную информацию об MD5 см. в RFC1321.
  • MessageId, полученный при отправке сообщения в очередь.
  • Дескриптор получения.
  • Атрибуты сообщения.
  • Хеш-код MD5 атрибутов сообщения.

Дескриптор получения — это идентификатор, который необходимо указать при удалении сообщения. Дополнительную информацию см. в разделе Идентификаторы очередей и сообщений в Руководстве разработчика Amazon SQS.

Вы можете указать параметр VisibilityTimeout в своем запросе. Этот параметр применяется к сообщениям, которые Amazon SQS возвращает в ответе. Если вы не укажете этот параметр, для возвращенных сообщений будет использоваться общий тайм-аут видимости для очереди. Стандартный тайм-аут видимости для очереди составляет 30 секунд.

Примечание

В будущем могут быть добавлены новые атрибуты. Если вы пишете код, вызывающий этот оператор, рекомендуется разработать структуру вашего кода, которая будет корректно обрабатывать новые атрибуты.

См. также: Документация API AWS

Синтаксис

  receive-message
--queue-url <value>
[--attribute-names <value>]
[--message-system-attribute-names <value>]
[--message-attribute-names <value>]
[--max-number-of-messages <value>]
[--visibility-timeout <value>]
[--wait-time-seconds <value>]
[--receive-request-attempt-id <value>]
[--cli-input-json | --cli-input-yaml]
[--generate-cli-skeleton <value>]
[--debug]
[--endpoint-url <value>]
[--no-verify-ssl]
[--no-paginate]
[--output <value>]
[--query <value>]
[--profile <value>]
[--region <value>]
[--version <value>]
[--color <value>]
[--no-sign-request]
[--ca-bundle <value>]
[--cli-read-timeout <value>]
[--cli-connect-timeout <value>]
[--cli-binary-format <value>]
[--no-cli-pager]
[--cli-auto-prompt]
[--no-cli-auto-prompt]

Параметры

--queue-url (строка)

URL очереди Amazon SQS, из которой получаются сообщения.

URL и имена очередей чувствительны к регистру.

--attribute-names (список)

Предупреждение

Этот параметр устарел, но поддерживается для обратной совместимости. Для указания имён атрибутов рекомендуется использовать MessageSystemAttributeNames .

Список атрибутов, которые необходимо вернуть вместе с каждым сообщением. Эти атрибуты включают:

  • All – Возвращает все значения.
  • ApproximateFirstReceiveTimestamp – Возвращает время первого получения сообщения из очереди (время эпохи в миллисекундах).
  • ApproximateReceiveCount – Возвращает количество раз, когда сообщение было получено во всех очередях, но не удалено.
  • AWSTraceHeader – Возвращает строку заголовка трассировки X-Ray.
  • SenderId
    • Для пользователя возвращает идентификатор пользователя, например ABCDEFGHI1JKLMNOPQ23R .
    • Для роли IAM возвращает идентификатор роли IAM, например ABCDE1F2GH3I4JK5LMNOP:i-a123b456 .
  • SentTimestamp – Возвращает время отправки сообщения в очередь (время эпохи в миллисекундах).
  • SqsManagedSseEnabled – Включает шифрование очереди на стороне сервера с использованием ключей шифрования, принадлежащих SQS. Только один вариант шифрования на стороне сервера поддерживается для каждой очереди (например, SSE-KMS или SSE-SQS).
  • MessageDeduplicationId – Возвращает значение, предоставленное производителем, который вызвал действие `` SendMessage ``.
  • MessageGroupId – Возвращает значение, предоставленное производителем, который вызвал действие `` SendMessage ``. Сообщения с одинаковым значением MessageGroupId возвращаются последовательно.
  • SequenceNumber – Возвращает значение, предоставленное Amazon SQS.

(строка)

Синтаксис:

"string" "string" ...

Where valid values are:
  All
  Policy
  VisibilityTimeout
  MaximumMessageSize
  MessageRetentionPeriod
  ApproximateNumberOfMessages
  ApproximateNumberOfMessagesNotVisible
  CreatedTimestamp
  LastModifiedTimestamp
  QueueArn
  ApproximateNumberOfMessagesDelayed
  DelaySeconds
  ReceiveMessageWaitTimeSeconds
  RedrivePolicy
  FifoQueue
  ContentBasedDeduplication
  KmsMasterKeyId
  KmsDataKeyReusePeriodSeconds
  DeduplicationScope
  FifoThroughputLimit
  RedriveAllowPolicy
  SqsManagedSseEnabled

--message-system-attribute-names (список)

Список атрибутов, которые необходимо вернуть вместе с каждым сообщением. Эти атрибуты включают:

  • All – Возвращает все значения.
  • ApproximateFirstReceiveTimestamp – Возвращает время первого получения сообщения из очереди (время эпохи в миллисекундах).
  • ApproximateReceiveCount – Возвращает количество раз, когда сообщение было получено во всех очередях, но не удалено.
  • AWSTraceHeader – Возвращает строку заголовка трассировки X-Ray.
  • SenderId
    • Для пользователя возвращает идентификатор пользователя, например ABCDEFGHI1JKLMNOPQ23R .
    • Для роли IAM возвращает идентификатор роли IAM, например ABCDE1F2GH3I4JK5LMNOP:i-a123b456 .
  • SentTimestamp – Возвращает время отправки сообщения в очередь (время эпохи в миллисекундах).
  • SqsManagedSseEnabled – Включает шифрование очереди на стороне сервера с использованием ключей шифрования, принадлежащих SQS. Только один вариант шифрования на стороне сервера поддерживается для каждой очереди (например, SSE-KMS или SSE-SQS).
  • MessageDeduplicationId – Возвращает значение, предоставленное производителем, который вызвал действие `` SendMessage ``.
  • MessageGroupId – Возвращает значение, предоставленное производителем, который вызвал действие `` SendMessage ``. Сообщения с одинаковым значением MessageGroupId возвращаются последовательно.
  • SequenceNumber – Возвращает значение, предоставленное Amazon SQS.

(строка)

Синтаксис:

"string" "string" ...

Where valid values are:
  All
  SenderId
  SentTimestamp
  ApproximateReceiveCount
  ApproximateFirstReceiveTimestamp
  SequenceNumber
  MessageDeduplicationId
  MessageGroupId
  AWSTraceHeader
  DeadLetterQueueSourceArn

--message-attribute-names (список)

Имя атрибута сообщения, где N — индекс.

  • Имя может содержать алфавитно-цифровые символы и символ подчёркивания (_ ), дефис (- ) и точку (. ).
  • Имя чувствительно к регистру и должно быть уникальным среди всех имён атрибутов для сообщения.
  • Имя не должно начинаться с префиксов, зарезервированных AWS, таких как AWS. или Amazon. (или любые их варианты регистров).
  • Имя не должно начинаться или заканчиваться точкой (. ), и оно не должно иметь точек подряд (.. ).
  • Имя может содержать до 256 символов.

Используя ReceiveMessage , можно отправлять список имён атрибутов для получения, либо вернуть все атрибуты, указав All или .* в своём запросе. Также можно использовать все атрибуты сообщения, начинающиеся с префикса, например bar.* .

(строка)

Синтаксис:

"string" "string" ...

--max-number-of-messages (целое число)

Максимальное количество сообщений для возврата. Amazon SQS никогда не возвращает больше сообщений, чем это значение (хотя может быть возвращено меньше сообщений). Допустимые значения: от 1 до 10. По умолчанию: 1.

--visibility-timeout (целое число)

Время (в секундах), в течение которого полученные сообщения скрыты от последующих запросов на получение после их получения запросом ReceiveMessage. Если не указано, используется время ожидания видимости по умолчанию для очереди, которое составляет 30 секунд.

Понимание VisibilityTimeout:

  • Когда сообщение получено из очереди, оно временно становится невидимым для других потребителей на период времени ожидания видимости. Это предотвращает одновременную обработку одного сообщения несколькими потребителями. Если сообщение не удалено или его время ожидания видимости не продлено до истечения срока ожидания, оно снова становится видимым и может быть получено другими потребителями.
  • Установка подходящего времени ожидания видимости имеет решающее значение. Если оно слишком короткое, сообщение может снова стать видимым до завершения обработки, что приведёт к дублированию обработки. Если оно слишком большое, это задерживает повторную обработку сообщений, если первоначальная обработка завершилась неудачно.
  • Вы можете настроить время ожидания видимости, используя параметр --visibility-timeout в команде receive-message, чтобы соответствовать времени обработки, необходимому вашей программе.
  • Сообщение, которое не удалено или сообщение, время ожидания видимости которого не продлено до истечения срока ожидания видимости, считается неудачным получением. В зависимости от конфигурации очереди сообщение может быть отправлено в очередь отложенных сообщений.

Для получения более подробной информации см. Время ожидания видимости в руководстве по разработке Amazon SQS.

--wait-time-seconds (целое число)

Время (в секундах), в течение которого вызов ожидает прибытия сообщения в очередь перед возвратом. Если сообщение доступно, вызов возвращает раньше, чем WaitTimeSeconds . Если сообщения недоступны, и время ожидания истекает, вызов не возвращает список сообщений. Если вы используете Java SDK, он возвращает объект ReceiveMessageResponse, у которого есть пустой список вместо объекта Null.

Предупреждение

Для предотвращения ошибок HTTP убедитесь, что время ожидания HTTP-ответа для запросов ReceiveMessage больше, чем параметр WaitTimeSeconds. Например, в Java SDK вы можете установить параметры HTTP-транспорта, используя NettyNioAsyncHttpClient для асинхронных клиентов или ApacheHttpClient для синхронных клиентов.

--receive-request-attempt-id (строка)

Этот параметр применяется только к очередям FIFO (первым пришёл — первым обслужен).

Токен, используемый для предотвращения дублирования запросов ReceiveMessage. Если при выполнении действия ReceiveMessage возникает проблема с сетью, и вместо ответа вы получаете общую ошибку, можно повторить то же действие с идентичным ReceiveRequestAttemptId, чтобы получить тот же набор сообщений, даже если их время ожидания видимости ещё не истекло.

  • Вы можете использовать ReceiveRequestAttemptId только в течение 5 минут после действия ReceiveMessage.
  • При установке FifoQueue вызывающий действие ReceiveMessage может явно указать ReceiveRequestAttemptId.
  • Возможна повторная попытка выполнения действия ReceiveMessage с тем же ReceiveRequestAttemptId, если ни одно из сообщений не было изменено (удалено или изменено время ожидания видимости).
  • Во время ожидания видимости последующие вызовы с тем же ReceiveRequestAttemptId возвращают те же сообщения и дескрипторы получения. Если повторная попытка происходит в течение интервала дублирования, время ожидания видимости сбрасывается. Для получения более подробной информации см. Время ожидания видимости в руководстве по разработке Amazon SQS.

Предупреждение

Если вызывающий действие ReceiveMessage по-прежнему обрабатывает сообщения, когда истекает время ожидания видимости и сообщения становятся видимыми, другой рабочий, потребляющий из той же очереди, может получить те же сообщения, а значит обработать дубликаты. Также, если потребитель, время обработки сообщения которого больше, чем время ожидания видимости, пытается удалить обработанные сообщения, действие завершается ошибкой. Для минимизации этого эффекта убедитесь, что ваше приложение наблюдает за безопасным порогом перед истечением времени ожидания видимости и продлевает время ожидания видимости по мере необходимости.
  • Пока сообщения с определённым MessageGroupId невидимы, больше сообщений, относящихся к тому же MessageGroupId, не возвращаются до истечения времени ожидания видимости. Вы по-прежнему можете получать сообщения с другим MessageGroupId, пока он также видим.
  • Если вызывающий ReceiveMessage не может отслеживать ReceiveRequestAttemptId, повторные попытки не работают до истечения исходного времени ожидания видимости. В результате могут возникнуть задержки, но сообщения в очереди сохраняются в строгом порядке.

Максимальная длина ReceiveRequestAttemptId составляет 128 символов. ReceiveRequestAttemptId может содержать алфавитно-цифровые символы (a-z , A-Z , 0-9 ) и знаки препинания (!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ ).

Для ознакомления с лучшими практиками использования ReceiveRequestAttemptId см. Использование параметра ReceiveRequestAttemptId в руководстве по разработке Amazon SQS.

--cli-input-json | --cli-input-yaml (строка) Читает аргументы из предоставленной JSON-строки. JSON-строка следует формату, указанному в --generate-cli-skeleton. Если на командной строке предоставлены другие аргументы, эти значения переопределяют значения, предоставленные JSON. Невозможно передать произвольные двоичные данные с помощью значения JSON, так как строка будет принята буквально. Это не может быть указано вместе с --cli-input-yaml.

--generate-cli-skeleton (строка) Выводит JSON-скелет в стандартный вывод без отправки запроса к API. Если предоставлено значение по умолчанию или значение input, выводит JSON-входной образец, который можно использовать в качестве аргумента для --cli-input-json. Аналогично, если предоставлено значение yaml-input, оно выведет образец входного YAML, который можно использовать с --cli-input-yaml. Если предоставлено значение output, оно проверит входные данные команды и вернёт JSON-образец выходных данных для этой команды. Сгенерированный JSON-скелет не стабилен между версиями AWS CLI, и нет гарантий обратной совместимости в сгенерированном JSON-скелете.

Глобальные параметры

--debug (boolean)

Включить отладовую регистрацию.

--endpoint-url (string)

Переопределить URL по умолчанию команды заданным URL.

--no-verify-ssl (boolean)

По умолчанию AWS CLI использует SSL при общении с AWS-сервисами. Для каждого SSL-соединения AWS CLI будет проверять SSL-сертификаты. Этот параметр переопределяет поведение по умолчанию проверки SSL-сертификатов.

--no-paginate (boolean)

Отключить автоматическую постраничную навигацию. Если автоматическая постраничная навигация отключена, AWS CLI выполнит только один вызов для первой страницы результатов.

--output (string)

Стиль форматирования вывода команды.

  • json
  • text
  • table
  • yaml
  • yaml-stream

--query (string)

Запрос JMESPath для фильтрации данных ответа.

--profile (string)

Использовать определённый профиль из файла учетных данных.

--region (string)

Регион для использования. Переопределяет настройки конфигурации/среды.

--version (string)

Отобразить версию этого инструмента.

--color (string)

Включить/выключить цветной вывод.

  • on
  • off
  • auto

--no-sign-request (boolean)

Не подписывать запросы. Учетные данные не будут загружены, если этот аргумент предоставлен.

--ca-bundle (string)

Файл с сертификатами CA для проверки SSL-сертификатов. Переопределяет настройки конфигурации/среды.

--cli-read-timeout (int)

Максимальное время чтения сокета в секундах. Если значение равно 0, чтение сокета будет выполняться блокирующим образом без таймаута. Значение по умолчанию составляет 60 секунд.

--cli-connect-timeout (int)

Максимальное время подключения сокета в секундах. Если значение равно 0, подключение сокета будет выполняться блокирующим образом без таймаута. Значение по умолчанию составляет 60 секунд.

--cli-binary-format (string)

Стиль форматирования, используемый для двоичных блоков. Формат по умолчанию — base64. Формат base64 ожидает, что двоичные блоки будут предоставлены в виде закодированной строкой base64. Формат raw-in-base64-out сохраняет совместимость с поведением AWS CLI версии 1, и двоичные значения должны быть переданы буквально. При предоставлении содержимого из файла, которое соответствует двоичному блоку fileb:// всегда будет обрабатываться как двоичный и будет использовать содержимое файла напрямую независимо от cli-binary-format настроек. При использовании file:// содержимое файла должно быть правильно отформатировано для настроенного cli-binary-format.

  • base64
  • raw-in-base64-out

--no-cli-pager (boolean)

Отключить пейджер CLI для вывода.

--cli-auto-prompt (boolean)

Автоматически запрашивать параметры ввода CLI.

--no-cli-auto-prompt (boolean)

Отключить автоматическое запросы параметров ввода CLI.

Примеры

Примечание

Для использования следующих примеров необходимо установить и настроить AWS CLI. Дополнительную информацию см. в руководстве по началу работы в Руководстве пользователя AWS CLI.

За исключением случаев, когда указано иное, во всех примерах используются правила цитирования, характерные для Unix. Эти примеры потребуется адаптировать к правилам цитирования вашей оболочки. См. использование кавычек со строками в Руководстве пользователя AWS CLI.

Для получения сообщения

В этом примере получаются до 10 доступных сообщений, возвращая все доступные атрибуты.

Команда:

aws sqs receive-message --queue-url https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue --attribute-names All --message-attribute-names All --max-number-of-messages 10

Вывод:

{
  "Messages": [
    {
      "Body": "My first message.",
      "ReceiptHandle": "AQEBzbVv...fqNzFw==",
      "MD5OfBody": "1000f835...a35411fa",
      "MD5OfMessageAttributes": "9424c491...26bc3ae7",
      "MessageId": "d6790f8d-d575-4f01-bc51-40122EXAMPLE",
      "Attributes": {
        "ApproximateFirstReceiveTimestamp": "1442428276921",
        "SenderId": "AIDAIAZKMSNQ7TEXAMPLE",
        "ApproximateReceiveCount": "5",
        "SentTimestamp": "1442428276921"
      },
      "MessageAttributes": {
        "PostalCode": {
          "DataType": "String",
          "StringValue": "ABC123"
        },
        "City": {
          "DataType": "String",
          "StringValue": "Any City"
        }
      }
    }
  ]
}

В этом примере получает следующее доступное сообщение, возвращая только атрибуты SenderId и SentTimestamp, а также атрибут сообщения PostalCode.

Команда:

aws sqs receive-message --queue-url https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue --attribute-names SenderId SentTimestamp --message-attribute-names PostalCode

Вывод:

{
  "Messages": [
    {
      "Body": "My first message.",
      "ReceiptHandle": "AQEB6nR4...HzlvZQ==",
      "MD5OfBody": "1000f835...a35411fa",
      "MD5OfMessageAttributes": "b8e89563...e088e74f",
      "MessageId": "d6790f8d-d575-4f01-bc51-40122EXAMPLE",
      "Attributes": {
        "SenderId": "AIDAIAZKMSNQ7TEXAMPLE",
        "SentTimestamp": "1442428276921"
      },
      "MessageAttributes": {
        "PostalCode": {
          "DataType": "String",
          "StringValue": "ABC123"
        }
      }
    }
  ]
}

Вывод

Messages -> (список)

Список сообщений.

(структура)

Сообщение Amazon SQS.

MessageId -> (строка)

Уникальный идентификатор сообщения. MessageId считается уникальным во всех учетных записях Amazon Web Services в течение длительного периода времени.

ReceiptHandle -> (строка)

Идентификатор, связанный с процессом получения сообщения. Каждый раз при получении сообщения возвращается новый идентификатор получения. При удалении сообщения вы предоставляете последний полученный идентификатор получения для удаления сообщения.

MD5OfBody -> (строка)

MD5-хеш строки тела сообщения без URL-кодирования.

Body -> (строка)

Содержимое сообщения (без URL-кодирования).

Attributes -> (карта)

Карта атрибутов, запрошенных в `` ReceiveMessage `` и их значения. Поддерживаемые атрибуты:

  • ApproximateReceiveCount
  • ApproximateFirstReceiveTimestamp
  • MessageDeduplicationId
  • MessageGroupId
  • SenderId
  • SentTimestamp
  • SequenceNumber
ApproximateFirstReceiveTimestamp и SentTimestamp каждый возвращается как целое число, представляющее время эпохи в миллисекундах.

key -> (строка)

value -> (строка)

MD5OfMessageAttributes -> (строка)

MD5-хеш строки атрибутов сообщения без URL-кодирования. Вы можете использовать этот атрибут для проверки того, что Amazon SQS правильно получило сообщение. Amazon SQS декодирует URL в сообщении перед созданием MD5-хеша. Для получения информации о MD5 см. RFC1321.

MessageAttributes -> (карта)

Каждый атрибут сообщения состоит из Name , Type и Value . Дополнительную информацию см. в разделе Атрибуты сообщений Amazon SQS в Руководстве разработчика Amazon SQS.

key -> (строка)

value -> (структура)

Значение атрибута сообщения, заданное пользователем. Для строковых типов данных атрибут Value имеет те же ограничения на содержимое, что и тело сообщения. Дополнительную информацию см. в `` SendMessage ``.

Name , type , value и тело сообщения не должны быть пустыми или нулевыми. Все части атрибута сообщения, включая Name , Type и Value, входят в ограничение размера сообщения (256 КБ или 262 144 байта).

StringValue -> (строка)

Строки — это Unicode с двоичным кодированием UTF-8. Список кодовых значений см. в ASCII Печатные символы.

BinaryValue -> (двоичный)

Атрибуты двоичного типа могут хранить любые двоичные данные, такие как сжатые данные, зашифрованные данные или изображения.

StringListValues -> (список)

Не реализовано. Зарезервировано для будущего использования.

(строка)

BinaryListValues -> (список)

Не реализовано. Зарезервировано для будущего использования.

(двоичный)

DataType -> (строка)

Amazon SQS поддерживает следующие логические типы данных: String , Number и Binary . Для типа данных Number вы должны использовать StringValue.

Вы также можете добавить пользовательские метки. Дополнительную информацию см. в разделе Атрибуты сообщений Amazon SQS в Руководстве разработчика Amazon SQS.

© Copyright 2025, Amazon Web Services. Created using Sphinx.

END_OF_DOCUMENT_MARKER

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API