AWS 文档 AWS SDK示例 GitHub 存储库中还有更多SDK示例
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用SQS以下工具的 Amazon 示例 PowerShell
以下代码示例向您展示了如何通过 AWS Tools for PowerShell 与 Amazon 一起使用来执行操作和实现常见场景SQS。
操作是大型程序的代码摘录,必须在上下文中运行。您可以通过操作了解如何调用单个服务函数,还可以通过函数相关场景的上下文查看操作。
每个示例都包含一个指向完整源代码的链接,您可以在其中找到有关如何在上下文中设置和运行代码的说明。
主题
操作
以下代码示例演示如何使用 Add-SQSPermission
。
- 用于 PowerShell
-
示例 1:此示例 AWS 账户 允许指定用户从指定队列发送消息。
Add-SQSPermission -Action SendMessage -AWSAccountId 80398EXAMPLE -Label SendMessagesFromMyQueue -QueueUrl https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue
-
有关API详细信息,请参阅 AWS Tools for PowerShell Cmdlet 参考AddPermission中的。
-
以下代码示例演示如何使用 Clear-SQSQueue
。
- 用于 PowerShell
-
示例 1:此示例删除指定队列中的所有消息。
Clear-SQSQueue -QueueUrl https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue
-
有关API详细信息,请参阅 AWS Tools for PowerShell Cmdlet 参考PurgeQueue中的。
-
以下代码示例演示如何使用 Edit-SQSMessageVisibility
。
- 用于 PowerShell
-
示例 1:此示例将指定队列中具有指定接收句柄的消息的可见性超时更改为 10 小时(10 小时 x 60 分钟 * 60 秒 = 36000 秒)。
Edit-SQSMessageVisibility -QueueUrl https://sqs.us-east-1.amazonaws.com/8039EXAMPLE/MyQueue -ReceiptHandle AQEBgGDh...J/Iqww== -VisibilityTimeout 36000
-
有关API详细信息,请参阅 AWS Tools for PowerShell Cmdlet 参考ChangeMessageVisibility中的。
-
以下代码示例演示如何使用 Edit-SQSMessageVisibilityBatch
。
- 用于 PowerShell
-
示例 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}
-
有关API详细信息,请参阅 AWS Tools for PowerShell Cmdlet 参考ChangeMessageVisibilityBatch中的。
-
以下代码示例演示如何使用 Get-SQSDeadLetterSourceQueue
。
- 用于 PowerShell
-
示例 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
-
有关API详细信息,请参阅 AWS Tools for PowerShell Cmdlet 参考ListDeadLetterSourceQueues中的。
-
以下代码示例演示如何使用 Get-SQSQueue
。
- 用于 PowerShell
-
示例 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详细信息,请参阅 AWS Tools for PowerShell Cmdlet 参考ListQueues中的。
-
以下代码示例演示如何使用 Get-SQSQueueAttribute
。
- 用于 PowerShell
-
示例 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":"2008-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":"2008-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详细信息,请参阅 AWS Tools for PowerShell Cmdlet 参考GetQueueAttributes中的。
-
以下代码示例演示如何使用 Get-SQSQueueUrl
。
- 用于 PowerShell
-
示例 1:此示例列URL出了具有指定名称的队列。
Get-SQSQueueUrl -QueueName MyQueue
输出:
https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue
-
有关API详细信息,请参阅 AWS Tools for PowerShell Cmdlet 参考GetQueueUrl中的。
-
以下代码示例演示如何使用 New-SQSQueue
。
- 用于 PowerShell
-
示例 1:此示例创建了一个具有指定名称的队列。
New-SQSQueue -QueueName MyQueue
输出:
https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue
-
有关API详细信息,请参阅 AWS Tools for PowerShell Cmdlet 参考CreateQueue中的。
-
以下代码示例演示如何使用 Receive-SQSMessage
。
- 用于 PowerShell
-
示例 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详细信息,请参阅 AWS Tools for PowerShell Cmdlet 参考ReceiveMessage中的。
-
以下代码示例演示如何使用 Remove-SQSMessage
。
- 用于 PowerShell
-
示例 1:此示例从指定队列中删除具有指定收据句柄的消息。
Remove-SQSMessage -QueueUrl https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue -ReceiptHandle AQEBd329...v6gl8Q==
-
有关API详细信息,请参阅 AWS Tools for PowerShell Cmdlet 参考DeleteMessage中的。
-
以下代码示例演示如何使用 Remove-SQSMessageBatch
。
- 用于 PowerShell
-
示例 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详细信息,请参阅 AWS Tools for PowerShell Cmdlet 参考DeleteMessageBatch中的。
-
以下代码示例演示如何使用 Remove-SQSPermission
。
- 用于 PowerShell
-
示例 1:此示例从指定队列中删除带有指定标签的权限设置。
Remove-SQSPermission -Label SendMessagesFromMyQueue -QueueUrl https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue
-
有关API详细信息,请参阅 AWS Tools for PowerShell Cmdlet 参考RemovePermission中的。
-
以下代码示例演示如何使用 Remove-SQSQueue
。
- 用于 PowerShell
-
示例 1:此示例删除指定的队列。
Remove-SQSQueue -QueueUrl https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue
-
有关API详细信息,请参阅 AWS Tools for PowerShell Cmdlet 参考DeleteQueue中的。
-
以下代码示例演示如何使用 Send-SQSMessage
。
- 用于 PowerShell
-
示例 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详细信息,请参阅 AWS Tools for PowerShell Cmdlet 参考SendMessage中的。
-
以下代码示例演示如何使用 Send-SQSMessageBatch
。
- 用于 PowerShell
-
示例 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详细信息,请参阅 AWS Tools for PowerShell Cmdlet 参考SendMessageBatch中的。
-
以下代码示例演示如何使用 Set-SQSQueueAttribute
。
- 用于 PowerShell
-
示例 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": "2008-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详细信息,请参阅 AWS Tools for PowerShell Cmdlet 参考SetQueueAttributes中的。
-