Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Amazon SQSを勉強しなおしてみた
Search
amarelo_n24
May 29, 2021
Technology
1.5k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Amazon SQSを勉強しなおしてみた
2021/5/27 JAWS-UG朝会 #21 登壇資料
amarelo_n24
May 29, 2021
More Decks by amarelo_n24
See All by amarelo_n24
AWS Security Agent といっしょに脅威モデリングをやってみよう
amarelo_n24
1
260
バケットポリシーの記述を誤りマネコンからS3バケットを操作できなくなりそうになり、ルートアクセス管理を有効にしたおひとり様Organizationsの話
amarelo_n24
0
46
AWS Certified Generative AI Developer - Professional Beta 不合格体験記
amarelo_n24
1
420
マルチパートアップロードをする時にS3はどのような挙動をしているのか?
amarelo_n24
0
82
ひとりAWS BuilderCards 会を開催した話_SecurityExpansion
amarelo_n24
1
100
ひとりAWS BuilderCards 会を開催した話
amarelo_n24
1
46
re:Invent初参加者が感じたre:Invent を楽しむために必要なこと
amarelo_n24
0
64
おひとり様Organizations管理者もルートアクセス管理を有効にしよう!
amarelo_n24
2
160
アウトプット再始動2025・つなげるアウトプット2026
amarelo_n24
0
91
Other Decks in Technology
See All in Technology
大量データに対しても、生成AIを用いてリーズナブルにデータ加工をしたい!Databricksのai_queryについて調べてみた
kamoshika
1
220
Control Planeで育てるBtoB SaaSの認証基盤 - SRE NEXT 2026
pokohide
1
2.6k
AIレビューはどこまで任せられるのか?自動化と人が背負うレビューの境界
sansantech
PRO
3
1.1k
OPENLOGI Company Profile for engineer
hr01
1
74k
なぜ私たちのSREプラクティスはなかなか機能しないのか 〜システムより先に組織を見る〜 / Why our SRE practices aren't really working
vtryo
4
4k
“それは自分の仕事じゃない"を越えて行け
yuukiyo
1
470
CSに"SLO"は要らない、経営層に"99.9%"は伝わらない - SREを全社に"翻訳"する3原則
cscengineer
PRO
1
5k
LLMやAIエージェントをソフトウェアに組み込むプラクティス
shibuiwilliam
2
420
生成AI×AWS CDK×AWS FISで"振り返れる"ミニGameDayをつくろう
yoshimi0227
1
360
個人開発で育てる「大規模設計の苗床」 - AI時代の1人開発から始める業務への知識接続 / The Seedbed for Large-Scale Design - From AI-Era Solo Projects to Professional Knowledge
bitkey
PRO
1
280
AIコード生成×サプライチェーン攻撃 — PHPが直面する“二重の信頼問題
shinyasaita
0
190
人を動かすのは時間ではなく、納得感 〜新任EMが入社3ヶ月、組織を2回変えた話〜
kakehashi
PRO
3
270
Featured
See All Featured
GraphQLとの向き合い方2022年版
quramy
50
15k
What's in a price? How to price your products and services
michaelherold
247
13k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
970
First, design no harm
axbom
PRO
2
1.2k
Bash Introduction
62gerente
615
220k
The Pragmatic Product Professional
lauravandoore
37
7.4k
What does AI have to do with Human Rights?
axbom
PRO
1
2.2k
Odyssey Design
rkendrick25
PRO
2
730
Designing for Timeless Needs
cassininazir
1
360
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
3.8k
Building the Perfect Custom Keyboard
takai
2
810
Fashionably flexible responsive web design (full day workshop)
malarkey
408
67k
Transcript
Amazon SQSを勉強しなおしてみた 2021/5/27 JAWS-UG朝会 #21
1.はじめに 2.Amazon SQSの概要と各種設定 3.SQSの実践チュートリアルをやってみた 4.まとめ 話すこと
1.はじめに
自己紹介 氏名 :藤田 直幸 twitter:@amarelo_n24 ※ コーヒー焙煎人兼エンジニアと名乗ってます。 職場:都内にある企業の情報セキュリティ統制担当 資格:AWS認定クラウドプラクティショナー ソリューションアーキテクトアソシエイト
※現在、デベロッパーアソシエイトの勉強中 好きなAWSサービス:AWS CLI、AWS CloudShell、Cloud9 好きなコーヒー :ブラジル ブルボンアマレロ
AWSの実務経験はおろか、開発経験もロクにないくせに、 来月デベロッパーアソシエイトを受験しようとしていま す!!(申し込みはこれから) メッセージングサービスへの理解がまだまだ乏しかったた め、ちゃんと理解したい!と思い、SQSの勉強をして登壇 もしようと思いました! ※他のサービスも「完全に理解」していません・・・
様々な参考文献を読んで資料を作りましたが、 間違いなどあったらご指摘お願いします🙇
2.Amazon SQSの概要と各種設定
・フルマネージド型のメッセージキューイングサービス ・AWSサービスの中で最古のサービス(2004年サービスイン) ・マイクロサービス、分散システム、およびサーバーレスアプリ ケーションの切り離しとスケーリングが可能 ・AWS KMS(Key Management Service)と連携して、サーバ側 の暗号化することが可能 ・メッセージの最大容量は256KB
(1)Amazon SQSとは?
SNS(Amazon Simple Notification Service)との違い ・SNSはプッシュ型通信 SNS側がメッセージを発行してくる。 (1)Amazon SQSとは? コンシューマー Amazon
Simple Notification Service (Amazon SNS)
SNS(Amazon Simple Notification Service)との違い ・SQSはプル型通信 コンシューマーがキューにポーリングして、メッセージが キューの中にあれば取得できる。 (1)Amazon SQSとは? コンシューマー
Amazon Simple Queue Service (Amazon SQS)
①標準キュー ・1秒あたりのトランザクション数はほぼ無制限。 ・少なくとも1回のメッセージ配信を保証。 ・同一メッセージが2回配信される可能性がある。 ・メッセージの配信順序を保証していない。 ※ほぼ無制限のスループットを可能にする高度に分散 されたアーキテクトのため。 (2)キュータイプ
重複実行しない設計 ・一度メッセージを受信して処理を実行したことを DynamoDBに記録する。 冪等性を確保するアプリケーション設計 ・同じメッセージを受信して処理を実行したとしても、 結果がまったく変わらないようにする。 ※標準キューが2回以上配信された場合の設計
②FIFO(First-in-first-out)キュー ・メッセージの配信順序を保証する。 ⇒操作とイベントの順序が重要な場合、メッセージの重複が 許容されない場合に使用する。 ・メッセージ重複排除IDを使って重複を防ぐ設計がされている。 ・1秒あたりのトランザクション数 バッチ処理なし:300件 バッチ処理あり:3000件 (2)キュータイプ
AWS CLIでFIFOキューを作成する場合 sqs create-queue コマンドのオプション --attributes FifoQueue=true を指定することで設定可能。 (2)キュータイプ
マネコンからも、FIFOキューで作成されたこと確認。 (2)キュータイプ
①ショートポーリング ・デフォルトのポーリング設定 ・メッセージの有無に関わらず即レスする。 ・分散されたメッセージからサンプリングされたサーバの メッセージを応答するため、メッセージ取得できないことも。 ・APIの呼び出し回数が多くコストが高くなる。 (3)ポーリング
②ロングポーリング ・メッセージがない場合は設定されたタイムアウト値が 過ぎるまで、レスポンスしない。 ・すべてのサーバをクエリし、メッセージを応答する。 ・複数のキューをポーリングする必要がない場合に選択する。 ※通常はこちらを使うことが多い。 (3)ポーリング
2021/5/26現在の設定画面 ロングポーリング設定 (3)ポーリング
AWS CLIの場合 sqs set-queue-attributes コマンドのオプション --attributes ReceiveMessageWaitTimeSeconds=(秒数)で設定 (3)ポーリング
コンシューマーがメッセージを受け取った直後、他のコンシューマ ーがメッセージを再度処理するのを防ぐために設定するタイムアウ ト値。 デフォルト:30秒 最大値 :12時間 最小値 :0秒 (4)可視性タイムアウト(Visibility Timeout)
コンシューマーがメッセージを受信しても、キューから自動的に削 除されない。可視性タイムアウトを設定していないと、他のコンシ ューマーがメッセージを受信できてしまい、重複処理が起こる恐れ がある。 (4)可視性タイムアウト(Visibility Timeout) 可視性タイムアウトを 1分と設定した場合は、 その間メッセージの受 信をできない。
2021/5/26現在の設定画面 (4)可視性タイムアウト(Visibility Timeout)
AWS CLIの場合 sqs set-queue-attributes コマンドのオプション --attributes VisibilityTimeout=(秒数)で設定 (4)可視性タイムアウト(Visibility Timeout)
メッセージをキューに送信してから、一定時間後にメッセージを受 信できるようにする機能。キュー全体に設定をする。 メッセージの処理を一定時間を遅延させて実行させたい場合に利用。 (5)遅延キュー プロデューサー 10秒前のコンシューマー 10秒後のコンシューマー 遅延キュー10秒と設定。
2021/5/26現在の設定画面 (5)遅延キュー
AWS CLIの場合 sqs set-queue-attributes コマンドのオプション --attributes DelaySeconds=(秒数) で設定 (5)遅延キュー
メッセージ送信後、一定時間経過してからメッセージ受信可能とす る機能。メッセージ単体に設定する。遅延キューとこれを一緒に設 定していても、メッセージタイマーが優先される。 (6)メッセージタイマー プロデューサー コンシューマー メッセージタイマー 10秒と設定。 このメッセージのみ 10秒間はおあずけ状態
2021/5/26現在の設定画面 (6)メッセージタイマー
AWS CLIの場合 sqs send-message コマンドのオプション --delay-seconds (秒数) で設定 (6)メッセージタイマー
正しく処理できないメッセージをキュー内に残し続けないよう、 他のキューに移動させる機能。 (7)デッドレターキュー プロデューサー コンシューマー 最大受信数を超えたら、デ ッドレターキューに移動
キュー設定画面にて、最大受信数(maxRecieveCount)を設定。 (7)デッドレターキュー
3.SQSの実践的ハンズオンをやってみた
SQSの実践的チュートリアルより ファンアウトイベントの送信をやってみました。 ※実践的チュートリアル:ファンアウトイベント通知を送信する https://aws.amazon.com/jp/getting-started/hands-on/send-fanout-event-notifications/
メッセージの並行受信を可能にするキュー設計 ある処理をトリガにして、並行してLambda関数を実行させる といった要件の場合に設計する。 ファンアウト構成 Amazon Simple Notification Service (Amazon SNS)
AWS Lambda
※属性はすべてデフォルトで設定。 標準キューを2つ作成
キューを2つ作成後、SNSトピックにサブスクライブ設定。 SNSトピックにサブスクライブ
サブスクライブ先のSNSトピックを選択
サブスクライブ完了
サブスクライブ完了
SNSからメッセージ送信
作成した2つのキーにメッセージが送信された。
4.最後に
・Amazon SQSはフルマネージド型のメッセージキューイング サービスであり、システム連携を疎結合にすることが可能で あること。 ・可視性タイムアウトやメッセージタイマーなど、メッセージ 取得制限をすることが可能であり、マネコンとAWS CLIで 設定方法。 ・SNSと組み合わせたファンアウト設計で並列処理可能で あること。
話したこと
ポケットスタディ AWS認定デベロッパーアソシエイト https://www.shuwasystem.co.jp/book/9784798063409.html AWS認定資格試験テキスト AWS認定ソリューションアーキテクトアソシエイト(初版の方) https://www.sbcr.jp/product/4815607388/ AWS開発者ガイド https://docs.aws.amazon.com/ja_jp/AWSSimpleQueueService/latest/SQSDeveloperGuid e/welcome.html AWS
CLI Command Reference https://docs.aws.amazon.com/cli/latest/reference/sqs/ 参考文献
None