AWS CloudFormation
User Guide (API Version 2010-05-15)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

AWS::SQS::Queue

AWS::SQS::Queue 资源创建 Amazon Simple Queue Service (Amazon SQS) 队列。

有关创建 FIFO (先进先出) 队列的更多信息,请参阅 Amazon Simple Queue Service 开发人员指南 中的使用 AWS CloudFormation 创建队列教程。

语法

要在 AWS CloudFormation 模板中声明此实体,请使用以下语法:

JSON

{ "Type" : "AWS::SQS::Queue", "Properties" : { "ContentBasedDeduplication" : Boolean, "DelaySeconds": Integer, "FifoQueue" : Boolean, "KmsMasterKeyId": String, "KmsDataKeyReusePeriodSeconds": Integer, "MaximumMessageSize": Integer, "MessageRetentionPeriod": Integer, "QueueName": String, "ReceiveMessageWaitTimeSeconds": Integer, "RedrivePolicy": RedrivePolicy, "VisibilityTimeout": Integer } }

YAML

Type: "AWS::SQS::Queue" Properties: ContentBasedDeduplication: Boolean DelaySeconds: Integer FifoQueue: Boolean KmsMasterKeyId: String KmsDataKeyReusePeriodSeconds: Integer MaximumMessageSize: Integer MessageRetentionPeriod: Integer QueueName: String ReceiveMessageWaitTimeSeconds: Integer RedrivePolicy: RedrivePolicy VisibilityTimeout: Integer

属性

ContentBasedDeduplication

对于先进先出 (FIFO) 队列,指定是否启用基于内容的重复数据删除。在重复数据删除间隔期间,Amazon SQS 会将发送的具有相同内容的消息视为重复条目,并只传输该消息的一个副本。有关更多信息,请参阅 Amazon Simple Queue Service API Reference 中的 CreateQueue 操作的 ContentBasedDeduplication 属性。

Required: No

Type: Boolean

更新要求无需中断

DelaySeconds

队列中所有消息的传输延迟时间 (秒)。您可以指定 0900(15 分钟)之间的整数值。默认值为 0

Required: No

Type: Integer

更新要求无需中断

FifoQueue

指示该队列是否为 FIFO 队列。有关更多信息,请参阅 Amazon Simple Queue Service 开发人员指南 中的 FIFO (先进先出) 队列

Required: No

Type: Boolean

更新要求替换

KmsMasterKeyId

Amazon SQS 的 AWS 托管客户主密钥 (CMK) 或自定义 CMK 的 ID。要使用 Amazon SQS 的 AWS 托管 CMK,请指定别名 alias/aws/sqs。有关更多信息,请参阅 Amazon Simple Queue Service API Reference 中的 CreateQueueAmazon Simple Queue Service 开发人员指南 中的使用服务器端加密 (SSE) 和 AWS KMS 保护数据,或 AWS Key Management Service Best Practices 白皮书中的 Customer Master Keys

Required: No

Type: String

更新要求无需中断

KmsDataKeyReusePeriodSeconds

在再次调用 AWS KMS 之前,Amazon SQS 可以重用数据密钥来对消息进行加密或解密的时间长度 (以秒为单位)。值必须为介于 60 (1 分钟) 到 86,400 (24 小时) 之间的整数。默认值为 300 (5 分钟)。

注意

较短的时间段可提供更高的安全性,但会增加调用 AWS KMS 的次数,从而产生超出免费套餐的费用。有关更多信息,请参阅数据密钥重用周期的工作方式 (Amazon Simple Queue Service 开发人员指南 中)。

Required: No

Type: Integer

更新要求无需中断

MaximumMessageSize

一条消息可以包含的字节数的限制,超出此限的消息会被 Amazon SQS 拒绝。您可以指定 1024 字节 (1 KiB) 到 262144 字节 (256 KiB) 之间的整数值。默认值是 262144 (256 KiB)。

Required: No

Type: Integer

更新要求无需中断

MessageRetentionPeriod

Amazon SQS 保留消息的秒数。您可以指定 60 秒(1 分钟)到 1209600 秒(14 天)之间的整数值。默认值是 345600 秒(4 天)。

Required: No

Type: Integer

更新要求无需中断

QueueName

队列的名称。要创建 FIFO 队列,FIFO 队列的名称必须以 .fifo 后缀结尾。有关更多信息,请参阅 Amazon Simple Queue Service 开发人员指南 中的 FIFO (先进先出) 队列

如果不指定名称,则 AWS CloudFormation 生成一个唯一的物理 ID 并将该 ID 用作队列名称。有关更多信息,请参阅 名称类型

重要

如果指定一个名称,您将无法执行需要替换此资源的更新。您可以执行不需要或者只需要部分中断的更新。如果必须替换资源,请指定新名称。

Required: No

Type: String

更新要求替换

ReceiveMessageWaitTimeSeconds

指定 ReceiveMessage 操作调用等待消息进入队列以包括在响应中的持续时间 (以秒为单位),而不是在尚无可以返回的消息时返回空消息。您可以指定 120 之间的整数。短轮询用作默认值或在您为此属性指定 0 时使用。有关更多信息,请参见 Amazon SQS 长轮询.

Required: No

Type: Integer

更新要求无需中断

RedrivePolicy

指定现有死信队列在源队列(此队列)无法处理消息的次数达到指定次数之后接收消息。

Required: No

类型Amazon SQS RedrivePolicy

更新要求无需中断

VisibilityTimeout

在从队列传送消息后,消息将不可用的时间长度。这样可以阻止其他组件收到相同的信息,并为初始组件预留足够的时间来处理并删除队列上的信息。

值必须在 0 到 43200 秒之间(12 小时)。如果不指定值,则 AWS CloudFormation 使用默认值 (30 秒)。

有关 Amazon SQS 队列可见性超时的更多信息,请参阅 Amazon Simple Queue Service 开发人员指南 中的可见性超时部分。

Required: No

Type: Integer

更新要求无需中断

返回值

Ref

AWS::SQS::Queue 类型返回队列 URL。例如:https://sqs.us-east-2.amazonaws.com/123456789012/aa4-MyQueue-Z5NOSZO2PZE9

有关使用 Ref 功能的更多信息,请参阅参考

Fn::GetAtt

Fn::GetAtt 返回一个此类型指定属性的值。以下为可用属性和示例返回值。

Arn

返回队列的 Amazon 资源名称 (ARN)。例如:arn:aws-cn:sqs:us-east-2:123456789012:mystack-myqueue-15PG5C2FC1CW8

QueueName

返回队列名称。例如:

mystack-myqueue-1VF9BKQH5BJVI

示例

带有 Cloudwatch 警报的 SQS 队列。

JSON

{ "AWSTemplateFormatVersion" : "2010-09-09", "Description" : "AWS CloudFormation Sample Template SQS_With_CloudWatch_Alarms: Sample template showing how to create an SQS queue with Amazon CloudWatch alarms on queue depth. **WARNING** This template creates an Amazon SQS queue and one or more Amazon CloudWatch alarms. You will be billed for the AWS resources used if you create a stack from this template.", "Parameters" : { "AlarmEmail": { "Default": "nobody@amazon.com", "Description": "Email address to notify if operational problems arise", "Type": "String" } }, "Resources" : { "MyQueue" : { "Type" : "AWS::SQS::Queue", "Properties" : { "QueueName" : "SampleQueue" } }, "AlarmTopic": { "Type": "AWS::SNS::Topic", "Properties": { "Subscription": [{ "Endpoint": { "Ref": "AlarmEmail" }, "Protocol": "email" }] } }, "QueueDepthAlarm": { "Type": "AWS::CloudWatch::Alarm", "Properties": { "AlarmDescription": "Alarm if queue depth grows beyond 10 messages", "Namespace": "AWS/SQS", "MetricName": "ApproximateNumberOfMessagesVisible", "Dimensions": [{ "Name": "QueueName", "Value" : { "Fn::GetAtt" : ["MyQueue", "QueueName"] } }], "Statistic": "Sum", "Period": "300", "EvaluationPeriods": "1", "Threshold": "10", "ComparisonOperator": "GreaterThanThreshold", "AlarmActions": [{ "Ref": "AlarmTopic" }], "InsufficientDataActions": [{ "Ref": "AlarmTopic" }] } } }, "Outputs" : { "QueueURL" : { "Description" : "URL of newly created SQS Queue", "Value" : { "Ref" : "MyQueue" } }, "QueueARN" : { "Description" : "ARN of newly created SQS Queue", "Value" : { "Fn::GetAtt" : ["MyQueue", "Arn"]} }, "QueueName" : { "Description" : "Name newly created SQS Queue", "Value" : { "Fn::GetAtt" : ["MyQueue", "QueueName"]} } } }

YAML

AWSTemplateFormatVersion: "2010-09-09" Description: "AWS CloudFormation Sample Template SQS_With_CloudWatch_Alarms: Sample template showing how to create an SQS queue with Amazon CloudWatch alarms on queue depth. **WARNING** This template creates an Amazon SQS queue and one or more Amazon CloudWatch alarms. You will be billed for the AWS resources used if you create a stack from this template." Parameters: AlarmEmail: Default: "nobody@amazon.com" Description: "Email address to notify if operational problems arise" Type: "String" Resources: MyQueue: Type: "AWS::SQS::Queue" Properties: QueueName: "SampleQueue" AlarmTopic: Type: "AWS::SNS::Topic" Properties: Subscription: - Endpoint: Ref: "AlarmEmail" Protocol: "email" QueueDepthAlarm: Type: "AWS::CloudWatch::Alarm" Properties: AlarmDescription: "Alarm if queue depth grows beyond 10 messages" Namespace: "AWS/SQS" MetricName: "ApproximateNumberOfMessagesVisible" Dimensions: - Name: "QueueName" Value: Fn::GetAtt: - "MyQueue" - "QueueName" Statistic: "Sum" Period: "300" EvaluationPeriods: "1" Threshold: "10" ComparisonOperator: "GreaterThanThreshold" AlarmActions: - Ref: "AlarmTopic" InsufficientDataActions: - Ref: "AlarmTopic" Outputs: QueueURL: Description: "URL of newly created SQS Queue" Value: Ref: "MyQueue" QueueARN: Description: "ARN of newly created SQS Queue" Value: Fn::GetAtt: - "MyQueue" - "Arn" QueueName: Description: "Name newly created SQS Queue" Value: Fn::GetAtt: - "MyQueue" - "QueueName"

具有死信队列的 SQS 队列

下面的示例创建一个源队列和一个死信队列。因为源队列在其重新驱动策略中指定死信队列,所有源队列依赖于死信队列的创建。

JSON

{ "AWSTemplateFormatVersion" : "2010-09-09", "Resources" : { "MySourceQueue" : { "Type" : "AWS::SQS::Queue", "Properties" : { "RedrivePolicy": { "deadLetterTargetArn" : {"Fn::GetAtt" : [ "MyDeadLetterQueue" , "Arn" ]}, "maxReceiveCount" : 5 } } }, "MyDeadLetterQueue" : { "Type" : "AWS::SQS::Queue" } }, "Outputs" : { "SourceQueueURL" : { "Description" : "URL of the source queue", "Value" : { "Ref" : "MySourceQueue" } }, "SourceQueueARN" : { "Description" : "ARN of the source queue", "Value" : { "Fn::GetAtt" : ["MySourceQueue", "Arn"]} }, "DeadLetterQueueURL" : { "Description" : "URL of the dead letter queue", "Value" : { "Ref" : "MyDeadLetterQueue" } }, "DeadLetterQueueARN" : { "Description" : "ARN of the dead letter queue", "Value" : { "Fn::GetAtt" : ["MyDeadLetterQueue", "Arn"]} } } }

YAML

AWSTemplateFormatVersion: "2010-09-09" Resources: MySourceQueue: Type: "AWS::SQS::Queue" Properties: RedrivePolicy: deadLetterTargetArn: Fn::GetAtt: - "MyDeadLetterQueue" - "Arn" maxReceiveCount: 5 MyDeadLetterQueue: Type: "AWS::SQS::Queue" Outputs: SourceQueueURL: Description: "URL of the source queue" Value: Ref: "MySourceQueue" SourceQueueARN: Description: "ARN of the source queue" Value: Fn::GetAtt: - "MySourceQueue" - "Arn" DeadLetterQueueURL: Description: "URL of the dead letter queue" Value: Ref: "MyDeadLetterQueue" DeadLetterQueueARN: Description: "ARN of the dead letter queue" Value: Fn::GetAtt: - "MyDeadLetterQueue" - "Arn"

另请参阅