使用Amazon CLI的 Amazon SQS 示例 - Amazon Command Line Interface
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用Amazon CLI的 Amazon SQS 示例

以下代码示例演示了如何通过将 Amazon Command Line Interface与 Amazon SQS 结合使用,来执行操作和实现常见场景。

操作是大型程序的代码摘录,必须在上下文中运行。您可以通过操作了解如何调用单个服务函数,还可以通过函数相关场景的上下文查看操作。

每个示例都包含一个指向完整源代码的链接,您可以从中找到有关如何在上下文中设置和运行代码的说明。

主题

操作

以下代码示例演示了如何使用 add-permission

Amazon CLI

向队列添加权限

以下示例允许指定的 Amazon 账户向指定队列发送消息。

命令:

aws sqs add-permission --queue-url https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue --label SendMessagesFromMyQueue --aws-account-ids 12345EXAMPLE --actions SendMessage

输出:

None.
  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 AddPermission

以下代码示例演示了如何使用 cancel-message-move-task

Amazon CLI

取消消息移动任务

以下 cancel-message-move-task 示例取消指定的消息移动任务。

aws sqs cancel-message-move-task \ --task-handle AQEB6nR4...HzlvZQ==

输出:

{ "ApproximateNumberOfMessagesMoved": 102 }

有关更多信息,请参阅《开发人员指南》中的 Amazon SQS API 权限:操作和资源参考

以下代码示例演示了如何使用 change-message-visibility-batch

Amazon CLI

批量更改多条消息的超时可见性

此示例 2 条指定消息的超时可见性更改为 10 小时(10 小时 * 60 分钟 * 60 秒)。

命令:

aws sqs change-message-visibility-batch --queue-url https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue --entries file://change-message-visibility-batch.json

输入文件(change-message-visibility-batch.json):

[ { "Id": "FirstMessage", "ReceiptHandle": "AQEBhz2q...Jf3kaw==", "VisibilityTimeout": 36000 }, { "Id": "SecondMessage", "ReceiptHandle": "AQEBkTUH...HifSnw==", "VisibilityTimeout": 36000 } ]

输出:

{ "Successful": [ { "Id": "SecondMessage" }, { "Id": "FirstMessage" } ] }

以下代码示例演示了如何使用 change-message-visibility

Amazon CLI

更改消息的超时可见性

此示例将指定消息的超时可见性更改为 10 小时(10 小时 * 60 分钟 * 60 秒)。

命令:

aws sqs change-message-visibility --queue-url https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue --receipt-handle AQEBTpyI...t6HyQg== --visibility-timeout 36000

输出:

None.

以下代码示例演示了如何使用 create-queue

Amazon CLI

创建队列

此示例使用指定名称创建队列,将消息保留期设置为 3 天(3 天 * 24 小时 * 60 分钟 * 60 秒),并将队列的死信队列设置为指定队列,其最大接收数量为 1,000 条消息。

命令:

aws sqs create-queue --queue-name MyQueue --attributes file://create-queue.json

输入文件(create-queue.json):

{ "RedrivePolicy": "{\"deadLetterTargetArn\":\"arn:aws:sqs:us-east-1:80398EXAMPLE:MyDeadLetterQueue\",\"maxReceiveCount\":\"1000\"}", "MessageRetentionPeriod": "259200" }

输出:

{ "QueueUrl": "https://queue.amazonaws.com/80398EXAMPLE/MyQueue" }
  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 CreateQueue

以下代码示例演示了如何使用 delete-message-batch

Amazon CLI

批量删除多条消息

此示例将删除指定消息。

命令:

aws sqs delete-message-batch --queue-url https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue --entries file://delete-message-batch.json

输入文件(delete-message-batch.json):

[ { "Id": "FirstMessage", "ReceiptHandle": "AQEB1mgl...Z4GuLw==" }, { "Id": "SecondMessage", "ReceiptHandle": "AQEBLsYM...VQubAA==" } ]

输出:

{ "Successful": [ { "Id": "FirstMessage" }, { "Id": "SecondMessage" } ] }
  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 DeleteMessageBatch

以下代码示例演示了如何使用 delete-message

Amazon CLI

删除消息

此示例将删除指定消息。

命令:

aws sqs delete-message --queue-url https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue --receipt-handle AQEBRXTo...q2doVA==

输出:

None.
  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 DeleteMessage

以下代码示例演示了如何使用 delete-queue

Amazon CLI

删除队列

此示例将删除指定队列。

命令:

aws sqs delete-queue --queue-url https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyNewerQueue

输出:

None.
  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 DeleteQueue

以下代码示例演示了如何使用 get-queue-attributes

Amazon CLI

获取队列的属性

此示例将获取指定队列的所有属性。

命令:

aws sqs get-queue-attributes --queue-url https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue --attribute-names All

输出:

{ "Attributes": { "ApproximateNumberOfMessagesNotVisible": "0", "RedrivePolicy": "{\"deadLetterTargetArn\":\"arn:aws:sqs:us-east-1:80398EXAMPLE:MyDeadLetterQueue\",\"maxReceiveCount\":1000}", "MessageRetentionPeriod": "345600", "ApproximateNumberOfMessagesDelayed": "0", "MaximumMessageSize": "262144", "CreatedTimestamp": "1442426968", "ApproximateNumberOfMessages": "0", "ReceiveMessageWaitTimeSeconds": "0", "DelaySeconds": "0", "VisibilityTimeout": "30", "LastModifiedTimestamp": "1442426968", "QueueArn": "arn:aws:sqs:us-east-1:80398EXAMPLE:MyNewQueue" } }

此示例仅获取指定队列的最大消息大小和可见性超时属性。

命令:

aws sqs get-queue-attributes --queue-url https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyNewQueue --attribute-names MaximumMessageSize VisibilityTimeout

输出:

{ "Attributes": { "VisibilityTimeout": "30", "MaximumMessageSize": "262144" } }
  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 GetQueueAttributes

以下代码示例演示了如何使用 get-queue-url

Amazon CLI

获取队列 URL

此示例将获取指定队列的 URL。

命令:

aws sqs get-queue-url --queue-name MyQueue

输出:

{ "QueueUrl": "https://queue.amazonaws.com/80398EXAMPLE/MyQueue" }
  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 GetQueueUrl

以下代码示例演示了如何使用 list-dead-letter-source-queues

Amazon CLI

列出死信源队列

此示例列出与指定死信源队列关联的队列。

命令:

aws sqs list-dead-letter-source-queues --queue-url https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyDeadLetterQueue

输出:

{ "queueUrls": [ "https://queue.amazonaws.com/80398EXAMPLE/MyQueue", "https://queue.amazonaws.com/80398EXAMPLE/MyOtherQueue" ] }

以下代码示例演示了如何使用 list-message-move-tasks

Amazon CLI

列出消息移动任务

以下 list-message-move-tasks 示例列出指定队列中最近的 2 个消息移动任务。

aws sqs list-message-move-tasks \ --source-arn arn:aws:sqs:us-west-2:80398EXAMPLE:MyQueue \ --max-results 2

输出:

{ "Results": [ { "TaskHandle": "AQEB6nR4...HzlvZQ==", "Status": "RUNNING", "SourceArn": "arn:aws:sqs:us-west-2:80398EXAMPLE:MyQueue1", "DestinationArn": "arn:aws:sqs:us-west-2:80398EXAMPLE:MyQueue2", "MaxNumberOfMessagesPerSecond": 50, "ApproximateNumberOfMessagesMoved": 203, "ApproximateNumberOfMessagesToMove": 30, "StartedTimestamp": 1442428276921 }, { "Status": "COMPLETED", "SourceArn": "arn:aws:sqs:us-west-2:80398EXAMPLE:MyQueue1", "DestinationArn": "arn:aws:sqs:us-west-2:80398EXAMPLE:MyQueue2", "ApproximateNumberOfMessagesMoved": 29, "ApproximateNumberOfMessagesToMove": 0, "StartedTimestamp": 1342428272093 } ] }

有关更多信息,请参阅《开发人员指南》中的 Amazon SQS API 权限:操作和资源参考

以下代码示例演示了如何使用 list-queue-tags

Amazon CLI

列出队列的所有成本分配标签

以下 list-queue-tags 示例显示与指定队列关联的所有成本分配标签。

aws sqs list-queue-tags \ --queue-url https://sqs.us-west-2.amazonaws.com/123456789012/MyQueue

输出:

{ "Tags": { "Team": "Alpha" } }

有关更多信息,请参阅《Amazon Simple Queue Service 开发人员指南》中的列出成本分配标签

  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 ListQueueTags

以下代码示例演示了如何使用 list-queues

Amazon CLI

列出队列

此示例将列出所有队列。

命令:

aws sqs list-queues

输出:

{ "QueueUrls": [ "https://queue.amazonaws.com/80398EXAMPLE/MyDeadLetterQueue", "https://queue.amazonaws.com/80398EXAMPLE/MyQueue", "https://queue.amazonaws.com/80398EXAMPLE/MyOtherQueue", "https://queue.amazonaws.com/80398EXAMPLE/TestQueue1", "https://queue.amazonaws.com/80398EXAMPLE/TestQueue2" ] }

此示例仅列出以“My”开头的队列。

命令:

aws sqs list-queues --queue-name-prefix My

输出:

{ "QueueUrls": [ "https://queue.amazonaws.com/80398EXAMPLE/MyDeadLetterQueue", "https://queue.amazonaws.com/80398EXAMPLE/MyQueue", "https://queue.amazonaws.com/80398EXAMPLE/MyOtherQueue" ] }
  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 ListQueues

以下代码示例演示了如何使用 purge-queue

Amazon CLI

清除队列

此示例删除指定队列中的所有消息。

命令:

aws sqs purge-queue --queue-url https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyNewQueue

输出:

None.
  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 PurgeQueue

以下代码示例演示了如何使用 receive-message

Amazon 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" } } } ] }
  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 ReceiveMessage

以下代码示例演示了如何使用 remove-permission

Amazon CLI

删除权限

此示例从指定队列中移除具有指定标签的权限。

命令:

aws sqs remove-permission --queue-url https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue --label SendMessagesFromMyQueue

输出:

None.
  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 RemovePermission

以下代码示例演示了如何使用 send-message-batch

Amazon CLI

批量发送多条消息

此示例向指定队列发送 2 条具有指定消息正文、延迟时间和消息属性的消息。

命令:

aws sqs send-message-batch --queue-url https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue --entries file://send-message-batch.json

输入文件(send-message-batch.json):

[ { "Id": "FuelReport-0001-2015-09-16T140731Z", "MessageBody": "Fuel report for account 0001 on 2015-09-16 at 02:07:31 PM.", "DelaySeconds": 10, "MessageAttributes": { "SellerName": { "DataType": "String", "StringValue": "Example Store" }, "City": { "DataType": "String", "StringValue": "Any City" }, "Region": { "DataType": "String", "StringValue": "WA" }, "PostalCode": { "DataType": "String", "StringValue": "99065" }, "PricePerGallon": { "DataType": "Number", "StringValue": "1.99" } } }, { "Id": "FuelReport-0002-2015-09-16T140930Z", "MessageBody": "Fuel report for account 0002 on 2015-09-16 at 02:09:30 PM.", "DelaySeconds": 10, "MessageAttributes": { "SellerName": { "DataType": "String", "StringValue": "Example Fuels" }, "City": { "DataType": "String", "StringValue": "North Town" }, "Region": { "DataType": "String", "StringValue": "WA" }, "PostalCode": { "DataType": "String", "StringValue": "99123" }, "PricePerGallon": { "DataType": "Number", "StringValue": "1.87" } } } ]

输出:

{ "Successful": [ { "MD5OfMessageBody": "203c4a38...7943237e", "MD5OfMessageAttributes": "10809b55...baf283ef", "Id": "FuelReport-0001-2015-09-16T140731Z", "MessageId": "d175070c-d6b8-4101-861d-adeb3EXAMPLE" }, { "MD5OfMessageBody": "2cf0159a...c1980595", "MD5OfMessageAttributes": "55623928...ae354a25", "Id": "FuelReport-0002-2015-09-16T140930Z", "MessageId": "f9b7d55d-0570-413e-b9c5-a9264EXAMPLE" } ] }
  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 SendMessageBatch

以下代码示例演示了如何使用 send-message

Amazon CLI

发送邮件

此示例向指定队列发送一条具有指定消息正文、延迟时间和消息属性的消息。

命令:

aws sqs send-message --queue-url https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue --message-body "Information about the largest city in Any Region." --delay-seconds 10 --message-attributes file://send-message.json

输入文件(send-message.json):

{ "City": { "DataType": "String", "StringValue": "Any City" }, "Greeting": { "DataType": "Binary", "BinaryValue": "Hello, World!" }, "Population": { "DataType": "Number", "StringValue": "1250800" } }

输出:

{ "MD5OfMessageBody": "51b0a325...39163aa0", "MD5OfMessageAttributes": "00484c68...59e48f06", "MessageId": "da68f62c-0c07-4bee-bf5f-7e856EXAMPLE" }
  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 SendMessage

以下代码示例演示了如何使用 set-queue-attributes

Amazon CLI

设置队列属性

此示例将指定队列的传输延迟设置为 10 秒,最大消息大小为 128 KB(128 KB * 1,024 字节),消息保留期为 3 天(3 天 * 24 小时 * 60 分钟 * 60 秒),接收消息等待时间为 20 秒,默认可见性超时为 60 秒。此示例还将指定的死信队列与最大接收数 1,000 条消息相关联。

命令:

aws sqs set-queue-attributes --queue-url https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyNewQueue --attributes file://set-queue-attributes.json

输入文件(set-queue-attributes.json):

{ "DelaySeconds": "10", "MaximumMessageSize": "131072", "MessageRetentionPeriod": "259200", "ReceiveMessageWaitTimeSeconds": "20", "RedrivePolicy": "{\"deadLetterTargetArn\":\"arn:aws:sqs:us-east-1:80398EXAMPLE:MyDeadLetterQueue\",\"maxReceiveCount\":\"1000\"}", "VisibilityTimeout": "60" }

输出:

None.
  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 SetQueueAttributes

以下代码示例演示了如何使用 start-message-move-task

Amazon CLI

示例 1:*启动消息移动任务*

以下 start-message-move-task 示例启动消息移动任务,将消息从指定的死信队列重新传输到源队列。

aws sqs start-message-move-task \ --source-arn arn:aws:sqs:us-west-2:80398EXAMPLE:MyQueue

输出:

{ "TaskHandle": "AQEB6nR4...HzlvZQ==" }

有关更多信息,请参阅《指南名称》中的主题标题

示例 2:*以最高速率启动消息移动任务*

以下 start-message-move-task 示例启动消息移动任务,以每秒 50 条消息的最大速率将消息从指定的死信队列重新传输到指定的目标队列。

aws sqs start-message-move-task \ --source-arn arn:aws:sqs:us-west-2:80398EXAMPLE:MyQueue1 \ --destination-arn arn:aws:sqs:us-west-2:80398EXAMPLE:MyQueue2 \ --max-number-of-messages-per-second 50

输出:

{ "TaskHandle": "AQEB6nR4...HzlvZQ==" }

有关更多信息,请参阅《开发人员指南》中的 Amazon SQS API 权限:操作和资源参考

以下代码示例演示了如何使用 tag-queue

Amazon CLI

向队列添加成本分配标签

以下 tag-queue 示例会将成本分配标签添加到指定的 Amazon SQS 队列。

aws sqs tag-queue \ --queue-url https://sqs.us-west-2.amazonaws.com/123456789012/MyQueue \ --tags Priority=Highest

此命令不生成任何输出。

有关更多信息,请参阅《Amazon Simple Queue Service 开发人员指南》中的添加成本分配标签

  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 TagQueue

以下代码示例演示了如何使用 untag-queue

Amazon CLI

从队列中移除成本分配标签

以下 untag-queue 示例从指定的 Amazon SQS 队列中移除成本分配标签。

aws sqs untag-queue \ --queue-url https://sqs.us-west-2.amazonaws.com/123456789012/MyQueue \ --tag-keys "Priority"

此命令不生成任何输出。

有关更多信息,请参阅《Amazon Simple Queue Service 开发人员指南》中的添加成本分配标签

  • 有关 API 详细信息,请参阅《Amazon CLI 命令参考》中的 UntagQueue