Amazon SQS 示例使用 AWS CLI - AWS Command Line Interface

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Amazon SQS 示例使用 AWS CLI

下列程式碼範例說明如何透過 AWS Command Line Interface 搭配 Amazon SQS 使用來執行動作和實作常見案例。

Actions 是大型程式的程式碼摘錄,必須在內容中執行。雖然動作會告訴您如何呼叫個別服務函數,但您可以在其相關情境和跨服務範例中查看內容中的動作。

Scenarios (案例) 是向您展示如何呼叫相同服務中的多個函數來完成特定任務的程式碼範例。

每個範例都包含一個連結 GitHub,您可以在其中找到如何在內容中設定和執行程式碼的指示。

主題

動作

下列程式碼範例會示範如何使用add-permission

AWS CLI

若要將權限新增至佇列

此範例可讓指定的 AWS 帳戶將訊息傳送至指定的佇列。

命令:

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 詳細資訊,請參閱AWS CLI 命令參考AddPermission中的。

下列程式碼範例會示範如何使用cancel-message-move-task

AWS CLI

若要取消郵件移動工作

下列cancel-message-move-task範例會取消指定的郵件移動工作。

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

輸出:

{ "ApproximateNumberOfMessagesMoved": 102 }

如需詳細資訊,請參閱開發人員指南中的 Amazon SQS API 許可:動作和資源參考

下列程式碼範例會示範如何使用change-message-visibility-batch

AWS 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

AWS 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

AWS CLI

若要建立佇列

此範例會建立具有指定名稱的佇列、將訊息保留期限設定為 3 天 (3 天 * 24 小時 * 60 分鐘 * 60 秒),並將佇列的無效字母佇列設定為指定佇列,其接收計數上限為 1,000 則訊息。

命令:

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

輸入文件(創建隊列 .json):

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

輸出:

{ "QueueUrl": "https://queue.amazonaws.com/80398EXAMPLE/MyQueue" }
  • 如需 API 詳細資訊,請參閱AWS CLI 命令參考CreateQueue中的。

下列程式碼範例會示範如何使用delete-message-batch

AWS 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" } ] }

下列程式碼範例會示範如何使用delete-message

AWS CLI

若要刪除訊息

此範例會刪除指定的郵件。

命令:

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

輸出:

None.
  • 如需 API 詳細資訊,請參閱AWS CLI 命令參考DeleteMessage中的。

下列程式碼範例會示範如何使用delete-queue

AWS CLI

若要刪除佇列

此範例會刪除指定的佇列。

命令:

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

輸出:

None.
  • 如需 API 詳細資訊,請參閱AWS CLI 命令參考DeleteQueue中的。

下列程式碼範例會示範如何使用get-queue-attributes

AWS 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" } }

下列程式碼範例會示範如何使用get-queue-url

AWS CLI

若要取得佇列網址

此範例會取得指定佇列的 URL。

命令:

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

輸出:

{ "QueueUrl": "https://queue.amazonaws.com/80398EXAMPLE/MyQueue" }
  • 如需 API 詳細資訊,請參閱AWS CLI 命令參考GetQueueUrl中的。

下列程式碼範例會示範如何使用list-dead-letter-source-queues

AWS 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

AWS CLI

若要列出郵件移動工作

下列list-message-move-tasks範例會列出指定佇列中最近兩個郵件移動工作。

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

AWS CLI

列出佇列的所有成本配置標記

下列list-queue-tags範例會顯示與指定佇列相關聯的所有成本配置標籤。

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

輸出:

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

如需詳細資訊,請參閱 Amazon 簡單佇列服務開發人員指南中的列出成本分配標籤

  • 如需 API 詳細資訊,請參閱AWS CLI 命令參考ListQueueTags中的。

下列程式碼範例會示範如何使用list-queues

AWS 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 詳細資訊,請參閱AWS CLI 命令參考ListQueues中的。

下列程式碼範例會示範如何使用purge-queue

AWS CLI

若要整個清除佇列

此範例會刪除指定佇列中的所有郵件。

命令:

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

輸出:

None.
  • 如需 API 詳細資訊,請參閱AWS CLI 命令參考PurgeQueue中的。

下列程式碼範例會示範如何使用receive-message

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 and SentTimestamp 屬性以及 PostalCode message 屬性。

命令:

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 詳細資訊,請參閱AWS CLI 命令參考ReceiveMessage中的。

下列程式碼範例會示範如何使用remove-permission

AWS CLI

若要移除權限

此範例會從指定佇列中移除具有指定標籤的權限。

命令:

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

輸出:

None.
  • 如需 API 詳細資訊,請參閱AWS CLI 命令參考RemovePermission中的。

下列程式碼範例會示範如何使用send-message-batch

AWS 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 詳細資訊,請參閱AWS CLI 命令參考SendMessageBatch中的。

下列程式碼範例會示範如何使用send-message

AWS 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

輸入文件(發送消息 .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 詳細資訊,請參閱AWS CLI 命令參考SendMessage中的。

下列程式碼範例會示範如何使用set-queue-attributes

AWS 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.

下列程式碼範例會示範如何使用start-message-move-task

AWS 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

AWS CLI

若要將成本配置標記新增至佇列

下列tag-queue範例會將成本配置標籤新增至指定的 Amazon SQS 佇列。

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

此命令不會產生輸出。

如需詳細資訊,請參閱 Amazon 簡單佇列服務開發人員指南中的新增成本分配標籤

  • 如需 API 詳細資訊,請參閱AWS CLI 命令參考TagQueue中的。

下列程式碼範例會示範如何使用untag-queue

AWS CLI

若要從佇列移除成本配置標籤

下列untag-queue範例會從指定的 Amazon SQS 佇列中移除成本配置標籤。

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

此命令不會產生輸出。

如需詳細資訊,請參閱 Amazon 簡單佇列服務開發人員指南中的新增成本分配標籤

  • 如需 API 詳細資訊,請參閱AWS CLI 命令參考UntagQueue中的。