はじめに
今回は、AWSのマネージドメッセージキューサービスである「Amazon SQS(Simple Queue Service)」を、AWS CloudFormation を使って作成してみました。
下記のハンズオンの内容となり、自分の環境で実際に手を動かして構築し、その内容をまとめたものになります。
SQSは今まで触ったことのないサービスでしたが、サーバーレスアーキテクチャやマイクロサービスの間の非同期通信にとても便利なサービスという印象です(AWSの認定試験で勉強しました!)。
Amazon SQSとは?
Amazon SQSは、マイクロサービス、分散システム、およびサーバーレスアプリケーション向けに設計された、完全マネージド型のメッセージキューサービスです。
アプリケーション間で非同期にメッセージをやりとりするために使われ、信頼性が高く、スケーラブルで、使いやすいのが特徴です。
このサービスです!(今まで使ったことなかったです...)
過去にLambda関連の記事で一度取り上げたことがあるサービスなので、その記事のリンクを掲載しておきます(メインはLambdaですが...)。
何が嬉しいのか?
- 非同期処理が可能:処理のボトルネックを分離できる
- スケーラブル:トラフィックの急増にも対応
- マネージド型:インフラ管理が不要
- 高い可用性:自動で冗長性を確保
- サーバーレスとの相性抜群:LambdaやStep Functionsと連携可能
個人的にわかりやすかったサイトです
実際にチュートリアルで作ってみた
今回は、AWS CloudFormation コンソールからFIFOタイプのSQSキューを作成してみました。
使用したテンプレート(MyQueue.json)
{
"AWSTemplateFormatVersion": "2010-09-09",
"Resources": {
"MyQueue": {
"Properties": {
"QueueName": "MyQueue.fifo",
"FifoQueue": true,
"ContentBasedDeduplication": true
},
"Type": "AWS::SQS::Queue"
}
},
"Outputs": {
"QueueName": {
"Description": "The name of the queue",
"Value": {
"Fn::GetAtt": [
"MyQueue",
"QueueName"
]
}
},
"QueueURL": {
"Description": "The URL of the queue",
"Value": {
"Ref": "MyQueue"
}
},
"QueueARN": {
"Description": "The ARN of the queue",
"Value": {
"Fn::GetAtt": [
"MyQueue",
"Arn"
]
}
}
}
}
作成手順(AWSマネジメントコンソール)
- CloudFormationコンソールで「スタックの作成」→「新しいリソースを使用(標準)」を選択
- 「テンプレートファイルをアップロード」で
MyQueue.json
を選択
- スタック名に
MyQueueStack
を入力
- オプションはそのまま変更せずに「次へ」
- 内容を確認して「送信」
CloudFormation のイベントが正常に実行されていることも確認でき、問題ありませんでした!
マネジメントコンソール上で、想定通りに作成されていることは確認できましたが、まだ何もリソースと紐付けていないため、現時点では「作成しただけ」の状態になっています。
明日は、このリソースにSNSやLambda関数を紐付けて、いろいろと検証してみようと思っています〜
まとめ
ここまで読んでいただき、ありがとうございました!Amazon SQSは、非同期処理を取り入れたいときや、システムの結合度を下げたいときに非常に便利だと感じました。
一方で、使いこなすにはまだまだ理解が足りていない部分も多く、これからしっかり勉強していきたいと思います!
今回は基本のキュー作成だけでしたが、今後はLambda連携やデッドレターキューとの組み合わせなども試していきたいと思います...!