メニュー
AWS CloudFormation
ユーザーガイド (API Version 2010-05-15)

AWS::SQS::Queue

AWS::SQS::Queue リソースは Amazon Simple Queue Service (Amazon SQS) キューを作成します。

FIFO (先入れ先出し) キューの作成の詳細については、Amazon Simple Queue Service 開発者ガイド のチュートリアル AWS CloudFormation を使用してキューを作成を参照してください。

構文

AWS CloudFormation テンプレートでこのエンティティを宣言するには、次の構文を使用します。

JSON

Copy
{ "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

Copy
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 は同一の内容で送信されるメッセージを重複として処理し、そのメッセージを 1 部のみ配信します。詳細については、Amazon Simple Queue Service API ReferenceCreateQueue アクションの 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 開発者ガイド』の「CreateQueue」、『Amazon Simple Queue Service API Reference』の「サーバー側暗号化 (SSE) と AWS KMS を使用したデータの保護」、または『AWS Key Management Service のベストプラクティス』ホワイトペーパーの「カスタマーマスターキー」を参照してください。

Required: No

Type: String

更新に伴う要件: 中断はありません。

KmsDataKeyReusePeriodSeconds

Amazon SQS がデータキーを再利用して、もう一度 AWS KMS を呼び出す前にメッセージを暗号化または復号できる期間 (秒)。この値は 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 をキュー名として使用します。詳細については、「Name タイプ」を参照してください。

重要

名前を指定すると、このリソースの置換が必要な更新はできません。中断が不要であるか、一定の中断が必要な更新であれば、行うことができます。リソースを置き換える必要がある場合は、新しい名前を指定します。

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

更新に伴う要件: 中断はありません。

戻り値

参照番号

AWS::SQS::Queue タイプはキュー URL を返します。たとえば、https://sqs.us-east-2.amazonaws.com/123456789012/aa4-MyQueue-Z5NOSZO2PZE9 を返します。

Ref 関数の使用方法の詳細については、「Ref」を参照してください。

Fn::GetAtt

Fn::GetAtt は、このタイプの指定された属性の値を返します。以下には、利用可能な属性とサンプル戻り値のリストが示されます。

Arn

キューの Amazon リソースネーム (ARN) を返します。たとえば、arn:aws:sqs:us-east-2:123456789012:mystack-myqueue-15PG5C2FC1CW8 です。

QueueName

キュー名を返します。(例:

mystack-myqueue-1VF9BKQH5BJVI

CloudWatch アラームを含む SQS キュー

JSON

Copy
{ "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

Copy
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 キュー

次のサンプルは、ソースキューとデッドレターキューを作成します。ソースキューは redrive ポリシーでデッドレターキューを指定するため、ソースキューは、デッドレターキューの作成に依存します。

JSON

Copy
{ "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

Copy
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"

以下の資料も参照してください。