View a markdown version of this page

使用适用于 V4 的工具的亚马逊 SQS 示例 PowerShell - Amazon Tools for PowerShell (版本 4)
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Amazon Tools for PowerShell V4 的支持已到期。

我们建议您迁移到 Amazon Tools for PowerShell V5 。有关如何迁移的更多详细信息和信息,请参阅我们的终止支持公告

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用适用于 V4 的工具的亚马逊 SQS 示例 PowerShell

以下代码示例向您展示如何使用带有 Amazon SQS 的 Amazon Tools for PowerShell V4 来执行操作和实现常见场景。

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

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

主题

操作

以下代码示例演示了如何使用 Add-SQSPermission

适用于 PowerShell V4 的工具

示例 1:此示例 Amazon Web Services 账户 允许指定用户从指定队列发送消息。

Add-SQSPermission -Action SendMessage -AWSAccountId 80398EXAMPLE -Label SendMessagesFromMyQueue -QueueUrl https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue
  • 有关 API 的详细信息,请参阅 Amazon Tools for PowerShell Cmdlet 参考 (V 4) AddPermission中的。

以下代码示例演示了如何使用 Clear-SQSQueue

适用于 PowerShell V4 的工具

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

Clear-SQSQueue -QueueUrl https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue
  • 有关 API 的详细信息,请参阅 Amazon Tools for PowerShell Cmdlet 参考 (V 4) PurgeQueue中的。

以下代码示例演示了如何使用 Edit-SQSMessageVisibility

适用于 PowerShell V4 的工具

示例 1:此示例将指定队列中具有指定接收句柄的消息的可见性超时更改为 10 小时(10 小时 * 60 分钟 * 60 秒 = 36000 秒)。

Edit-SQSMessageVisibility -QueueUrl https://sqs.us-east-1.amazonaws.com/8039EXAMPLE/MyQueue -ReceiptHandle AQEBgGDh...J/Iqww== -VisibilityTimeout 36000
  • 有关 API 的详细信息,请参阅 Amazon Tools for PowerShell Cmdlet 参考 (V 4) ChangeMessageVisibility中的。

以下代码示例演示了如何使用 Edit-SQSMessageVisibilityBatch

适用于 PowerShell V4 的工具

示例 1:此示例更改了指定队列中具有指定接收句柄的 2 条消息的可见性超时。第一条消息的超时可见性更改为 10 小时(10 小时 * 60 分钟 * 60 秒 = 36000 秒)。第二条消息的超时可见性更改为 5 小时(5 小时 * 60 分钟 * 60 秒 = 18000 秒)。

$changeVisibilityRequest1 = New-Object Amazon.SQS.Model.ChangeMessageVisibilityBatchRequestEntry $changeVisibilityRequest1.Id = "Request1" $changeVisibilityRequest1.ReceiptHandle = "AQEBd329...v6gl8Q==" $changeVisibilityRequest1.VisibilityTimeout = 36000 $changeVisibilityRequest2 = New-Object Amazon.SQS.Model.ChangeMessageVisibilityBatchRequestEntry $changeVisibilityRequest2.Id = "Request2" $changeVisibilityRequest2.ReceiptHandle = "AQEBgGDh...J/Iqww==" $changeVisibilityRequest2.VisibilityTimeout = 18000 Edit-SQSMessageVisibilityBatch -QueueUrl https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue -Entry $changeVisibilityRequest1, $changeVisibilityRequest2

输出

Failed Successful ------ ---------- {} {Request2, Request1}

以下代码示例演示了如何使用 Get-SQSDeadLetterSourceQueue

适用于 PowerShell V4 的工具

示例 1:此示例列 URLs 出了依赖指定队列作为死信队列的所有队列。

Get-SQSDeadLetterSourceQueue -QueueUrl https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyDeadLetterQueue

输出

https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyOtherQueue

以下代码示例演示了如何使用 Get-SQSQueue

适用于 PowerShell V4 的工具

示例 1:此示例列出了所有队列。

Get-SQSQueue

输出

https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/AnotherQueue https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/DeadLetterQueue https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyOtherQueue https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyDeadLetterQueue

示例 2:此示例列出了具有指定名称的所有队列。

Get-SQSQueue -QueueNamePrefix My

输出

https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyOtherQueue https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyDeadLetterQueue
  • 有关 API 的详细信息,请参阅 Amazon Tools for PowerShell Cmdlet 参考 (V 4) ListQueues中的。

以下代码示例演示了如何使用 Get-SQSQueueAttribute

适用于 PowerShell V4 的工具

示例 1:此示例列出了指定队列的所有属性。

Get-SQSQueueAttribute -AttributeName All -QueueUrl https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue

输出

VisibilityTimeout : 30 DelaySeconds : 0 MaximumMessageSize : 262144 MessageRetentionPeriod : 345600 ApproximateNumberOfMessages : 0 ApproximateNumberOfMessagesNotVisible : 0 ApproximateNumberOfMessagesDelayed : 0 CreatedTimestamp : 2/11/2015 5:53:35 PM LastModifiedTimestamp : 12/29/2015 2:23:17 PM QueueARN : arn:aws:sqs:us-east-1:80398EXAMPLE:MyQueue Policy : {"Version":"2012-10-17","Id":"arn:aws:sqs:us-east-1:80398EXAMPLE:MyQueue/SQSDefaultPolicy","Statement":[{"Sid":"Sid14 495134224EX","Effect":"Allow","Principal":{"AWS":"*"},"Action":"SQS:SendMessage","Resource":"arn:aws:sqs:us-east-1:80 398EXAMPLE:MyQueue","Condition":{"ArnEquals":{"aws:SourceArn":"arn:aws:sns:us-east-1:80398EXAMPLE:MyTopic"}}},{"Sid": "SendMessagesFromMyQueue","Effect":"Allow","Principal":{"AWS":"80398EXAMPLE"},"Action":"SQS:SendMessage","Resource":" arn:aws:sqs:us-east-1:80398EXAMPLE:MyQueue"}]} Attributes : {[QueueArn, arn:aws:sqs:us-east-1:80398EXAMPLE:MyQueue], [ApproximateNumberOfMessages, 0], [ApproximateNumberOfMessagesNotVisible, 0], [ApproximateNumberOfMessagesDelayed, 0]...}

示例 2:此示例仅单独列出了指定队列的指定属性。

Get-SQSQueueAttribute -AttributeName MaximumMessageSize, VisibilityTimeout -QueueUrl https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue

输出

VisibilityTimeout : 30 DelaySeconds : 0 MaximumMessageSize : 262144 MessageRetentionPeriod : 345600 ApproximateNumberOfMessages : 0 ApproximateNumberOfMessagesNotVisible : 0 ApproximateNumberOfMessagesDelayed : 0 CreatedTimestamp : 2/11/2015 5:53:35 PM LastModifiedTimestamp : 12/29/2015 2:23:17 PM QueueARN : arn:aws:sqs:us-east-1:80398EXAMPLE:MyQueue Policy : {"Version":"2012-10-17","Id":"arn:aws:sqs:us-east-1:80398EXAMPLE:MyQueue/SQSDefaultPolicy","Statement":[{"Sid":"Sid14 495134224EX","Effect":"Allow","Principal":{"AWS":"*"},"Action":"SQS:SendMessage","Resource":"arn:aws:sqs:us-east-1:80 398EXAMPLE:MyQueue","Condition":{"ArnEquals":{"aws:SourceArn":"arn:aws:sns:us-east-1:80398EXAMPLE:MyTopic"}}},{"Sid": "SendMessagesFromMyQueue","Effect":"Allow","Principal":{"AWS":"80398EXAMPLE"},"Action":"SQS:SendMessage","Resource":" arn:aws:sqs:us-east-1:80398EXAMPLE:MyQueue"}]} Attributes : {[MaximumMessageSize, 262144], [VisibilityTimeout, 30]}
  • 有关 API 的详细信息,请参阅 Amazon Tools for PowerShell Cmdlet 参考 (V 4) GetQueueAttributes中的。

以下代码示例演示了如何使用 Get-SQSQueueUrl

适用于 PowerShell V4 的工具

示例 1:此示例列出了具有指定名称的队列的 URL。

Get-SQSQueueUrl -QueueName MyQueue

输出

https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue
  • 有关 API 的详细信息,请参阅 Amazon Tools for PowerShell Cmdlet 参考 (V 4) GetQueueUrl中的。

以下代码示例演示了如何使用 New-SQSQueue

适用于 PowerShell V4 的工具

示例 1:此示例使用指定名称创建队列。

New-SQSQueue -QueueName MyQueue

输出

https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue
  • 有关 API 的详细信息,请参阅 Amazon Tools for PowerShell Cmdlet 参考 (V 4) CreateQueue中的。

以下代码示例演示了如何使用 Receive-SQSMessage

适用于 PowerShell V4 的工具

示例 1:此示例列出了指定队列将要接收的消息(最多 10 条)的信息。该信息将包含指定消息属性的值(如果存在)。

Receive-SQSMessage -AttributeName SenderId, SentTimestamp -MessageAttributeName StudentName, StudentGrade -MessageCount 10 -QueueUrl https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue

输出

Attributes : {[SenderId, AIDAIAZKMSNQ7TEXAMPLE], [SentTimestamp, 1451495923744]} Body : Information about John Doe's grade. MD5OfBody : ea572796e3c231f974fe75d89EXAMPLE MD5OfMessageAttributes : 48c1ee811f0fe7c4e88fbe0f5EXAMPLE MessageAttributes : {[StudentGrade, Amazon.SQS.Model.MessageAttributeValue], [StudentName, Amazon.SQS.Model.MessageAttributeValue]} MessageId : 53828c4b-631b-469b-8833-c093cEXAMPLE ReceiptHandle : AQEBpfGp...20Q5cg==
  • 有关 API 的详细信息,请参阅 Amazon Tools for PowerShell Cmdlet 参考 (V 4) ReceiveMessage中的。

以下代码示例演示了如何使用 Remove-SQSMessage

适用于 PowerShell V4 的工具

示例 1:此示例删除了指定队列中具有指定接收句柄的消息。

Remove-SQSMessage -QueueUrl https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue -ReceiptHandle AQEBd329...v6gl8Q==
  • 有关 API 的详细信息,请参阅 Amazon Tools for PowerShell Cmdlet 参考 (V 4) DeleteMessage中的。

以下代码示例演示了如何使用 Remove-SQSMessageBatch

适用于 PowerShell V4 的工具

示例 1:此示例删除了指定队列中具有指定接收句柄的 2 条消息。

$deleteMessageRequest1 = New-Object Amazon.SQS.Model.DeleteMessageBatchRequestEntry $deleteMessageRequest1.Id = "Request1" $deleteMessageRequest1.ReceiptHandle = "AQEBX2g4...wtJSQg==" $deleteMessageRequest2 = New-Object Amazon.SQS.Model.DeleteMessageBatchRequestEntry $deleteMessageRequest2.Id = "Request2" $deleteMessageRequest2.ReceiptHandle = "AQEBqOVY...KTsLYg==" Remove-SQSMessageBatch -QueueUrl https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue -Entry $deleteMessageRequest1, $deleteMessageRequest2

输出

Failed Successful ------ ---------- {} {Request1, Request2}
  • 有关 API 的详细信息,请参阅 Amazon Tools for PowerShell Cmdlet 参考 (V 4) DeleteMessageBatch中的。

以下代码示例演示了如何使用 Remove-SQSPermission

适用于 PowerShell V4 的工具

示例 1:此示例从指定队列中删除具有指定标签的权限设置。

Remove-SQSPermission -Label SendMessagesFromMyQueue -QueueUrl https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue
  • 有关 API 的详细信息,请参阅 Amazon Tools for PowerShell Cmdlet 参考 (V 4) RemovePermission中的。

以下代码示例演示了如何使用 Remove-SQSQueue

适用于 PowerShell V4 的工具

示例 1:此示例删除了指定队列。

Remove-SQSQueue -QueueUrl https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue
  • 有关 API 的详细信息,请参阅 Amazon Tools for PowerShell Cmdlet 参考 (V 4) DeleteQueue中的。

以下代码示例演示了如何使用 Send-SQSMessage

适用于 PowerShell V4 的工具

示例 1:此示例向指定队列发送一条具有指定属性和消息正文的消息,消息传递延迟 10 秒。

$cityAttributeValue = New-Object Amazon.SQS.Model.MessageAttributeValue $cityAttributeValue.DataType = "String" $cityAttributeValue.StringValue = "AnyCity" $populationAttributeValue = New-Object Amazon.SQS.Model.MessageAttributeValue $populationAttributeValue.DataType = "Number" $populationAttributeValue.StringValue = "1250800" $messageAttributes = New-Object System.Collections.Hashtable $messageAttributes.Add("City", $cityAttributeValue) $messageAttributes.Add("Population", $populationAttributeValue) Send-SQSMessage -DelayInSeconds 10 -MessageAttributes $messageAttributes -MessageBody "Information about the largest city in Any Region." -QueueUrl https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue

输出

MD5OfMessageAttributes MD5OfMessageBody MessageId ---------------------- ---------------- --------- 1d3e51347bc042efbdf6dda31EXAMPLE 51b0a3256d59467f973009b73EXAMPLE c35fed8f-c739-4d0c-818b-1820eEXAMPLE
  • 有关 API 的详细信息,请参阅 Amazon Tools for PowerShell Cmdlet 参考 (V 4) SendMessage中的。

以下代码示例演示了如何使用 Send-SQSMessageBatch

适用于 PowerShell V4 的工具

示例 1:此示例向指定队列发送 2 条具有指定属性和消息正文的消息。第一条消息的传递延迟了 15 秒,第二条消息的传递延迟了 10 秒。

$student1NameAttributeValue = New-Object Amazon.SQS.Model.MessageAttributeValue $student1NameAttributeValue.DataType = "String" $student1NameAttributeValue.StringValue = "John Doe" $student1GradeAttributeValue = New-Object Amazon.SQS.Model.MessageAttributeValue $student1GradeAttributeValue.DataType = "Number" $student1GradeAttributeValue.StringValue = "89" $student2NameAttributeValue = New-Object Amazon.SQS.Model.MessageAttributeValue $student2NameAttributeValue.DataType = "String" $student2NameAttributeValue.StringValue = "Jane Doe" $student2GradeAttributeValue = New-Object Amazon.SQS.Model.MessageAttributeValue $student2GradeAttributeValue.DataType = "Number" $student2GradeAttributeValue.StringValue = "93" $message1 = New-Object Amazon.SQS.Model.SendMessageBatchRequestEntry $message1.DelaySeconds = 15 $message1.Id = "FirstMessage" $message1.MessageAttributes.Add("StudentName", $student1NameAttributeValue) $message1.MessageAttributes.Add("StudentGrade", $student1GradeAttributeValue) $message1.MessageBody = "Information about John Doe's grade." $message2 = New-Object Amazon.SQS.Model.SendMessageBatchRequestEntry $message2.DelaySeconds = 10 $message2.Id = "SecondMessage" $message2.MessageAttributes.Add("StudentName", $student2NameAttributeValue) $message2.MessageAttributes.Add("StudentGrade", $student2GradeAttributeValue) $message2.MessageBody = "Information about Jane Doe's grade." Send-SQSMessageBatch -QueueUrl https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue -Entry $message1, $message2

输出

Failed Successful ------ ---------- {} {FirstMessage, SecondMessage}
  • 有关 API 的详细信息,请参阅 Amazon Tools for PowerShell Cmdlet 参考 (V 4) SendMessageBatch中的。

以下代码示例演示了如何使用 Set-SQSQueueAttribute

适用于 PowerShell V4 的工具

示例 1:此示例展示了如何设置策略,让队列订阅 SNS 主题。发布到主题的消息会被发送到订阅了该主题的队列。

# create the queue and topic to be associated $qurl = New-SQSQueue -QueueName "myQueue" $topicarn = New-SNSTopic -Name "myTopic" # get the queue ARN to inject into the policy; it will be returned # in the output's QueueARN member but we need to put it into a variable # so text expansion in the policy string takes effect $qarn = (Get-SQSQueueAttribute -QueueUrl $qurl -AttributeName "QueueArn").QueueARN # construct the policy and inject arns $policy = @" { "Version":"2012-10-17", "Id": "$qarn/SQSPOLICY", "Statement": [ { "Sid": "1", "Effect": "Allow", "Principal": "*", "Action": "SQS:SendMessage", "Resource": "$qarn", "Condition": { "ArnEquals": { "aws:SourceArn": "$topicarn" } } } ] } "@ # set the policy Set-SQSQueueAttribute -QueueUrl $qurl -Attribute @{ Policy=$policy }

示例 2:此示例为指定队列设置指定属性。

Set-SQSQueueAttribute -Attribute @{"DelaySeconds" = "10"; "MaximumMessageSize" = "131072"} -QueueUrl https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue
  • 有关 API 的详细信息,请参阅 Amazon Tools for PowerShell Cmdlet 参考 (V 4) SetQueueAttributes中的。