-
タグ
タグ
- セキュリティ
- 人材開発・教育
- システム開発
- アプリ開発
- モバイルアプリ
- DX
- AI
- サイバー攻撃
- サイバー犯罪
- 標的型攻撃
- 脆弱性
- 働き方改革
- 企業市民活動
- 攻撃者グループ
- JSOC
- JSOC INSIGHT
- サイバー救急センター
- サイバー救急センターレポート
- LAC Security Insight
- セキュリティ診断レポート
- サイバー・グリッド・ジャパン
- CYBER GRID JOURNAL
- CYBER GRID VIEW
- ラックセキュリティアカデミー
- すごうで
- ランサムウェア
- ゼロトラスト
- ASM
- EDR
- SASE
- デジタルアイデンティティ
- インシデントレスポンス
- 情シス向け
- 対談
- CIS Controls
- Tech Crawling
- クラウド
- クラウドインテグレーション
- データベース
- アジャイル開発
- DevSecOps
- OWASP
- CTF
- FalconNest
- セキュリティ診断
- IoT
- EC
- サプライチェーンリスク
- スレットインテリジェンス
- テレワーク
- リモートデスクトップ
- アーキテクト
- プラス・セキュリティ人材
- 障がい者採用
- 官民学・業界連携
- カスタマーストーリー
- 白浜シンポジウム
- CODE BLUE
- 情報モラル
- クラブ活動
- 初心者向け
- 趣味
- カルチャー
- 子育て、生活
- 広報・マーケティング
- コーポレート
- ライター紹介
- IR
こんにちは。クラウドサービス部の小池です。
サーバーがない状態でどうやってシステムを構築するのか想像できない、実際に手を動かしてみないとピンと来ないという、スキルシフト仲間の声にお答えしたサーバーレス初心者向けの連載第3回です。今回は、SNS・SQS・Lambdaを連携させてファンアウトできるような仕組みを作ってみます。
ここで言う「ファンアウト」とは、SNSトピックに発行されたメッセージがレプリケート(複製)され、Amazon SQSキューやLambda関数という複数のエンドポイントにプッシュされることで、並列非同期処理が可能になるシナリオを指します。ハンズオンなので並列化までしていませんが、用語として押さえておきましょう。
ここからは、AWSが公開しているハンズオン※のセクション3をもとに実際に手を動かした結果や、前提知識が足りなくて迷ったところ、理解を深めるポイントを詳しく解説します。画面遷移は多少変わっていますが、ハンズオン手順の通りに構築は問題なくできます。「サーバーレス構築とは何なのか」について理解し、公式ハンズオンの隙間を埋める手がかりとして、この記事をご覧ください。
Hello from SQS to Lambda!
はじめにSQSを準備し、SNSからSQSへ、SQSからLambdaへと連携を実行していきます。
作業環境
Webブラウザ | Firefox |
---|---|
作業するリージョン | AWS東京リージョン[アジアパシフィック(東京) ap-northeast-1 ] |
利用するサービス | AWS Lambda(イベント発生時にコードを実行)| AWS (amazon.com) Amazon SNS(サーバーレスアプリのための pub/sub メッセージングサービス)| AWS Amazon SQS(サーバーレスアプリのためのメッセージキューサービス)| AWS |
SQSとは
Amazon Simple Queue Service、頭文字をとってSQS。これぞクラウドネイティブの申し子で、サーバーレスにはなくてはならないサービスだと個人的に感じています。SQSは、マイクロサービス化されたサーバーレスアプリケーションやサービス同士を連携させる、完全マネージド型メッセージキューイングのサービスです。
特に注目すべきはFIFOキューです。First In First Out、つまり先入先出の順序で処理が可能なので、順序性を持った処理を1つのアプリケーションにしなくても、小さな処理をたくさん作っておけばSQSでつなげられます。えっ、本当に?と思いましたか?さっそく試してみることにします。初心者向けハンズオンですので、まず標準キューからのお試しです。
SQSの準備
ハンズオン手順に従い、キューを1つ作ります。サーバーレス構築と異なり特別なコツは不要で、ハンズオンではデフォルトのままとしています。とはいえ、セキュリティやコスト観点から、自分が作成したリソースを後から追跡できるようタグを有効化したり、万が一に備えてアクセスログの記録を有効化したりすることをお勧めします。
タイプ | 標準 | 選択 | |
---|---|---|---|
名前 | rkoike-handson-queue ※ 冒頭部はユーザ固定読み替えしてください |
入力 | |
設定 | (可視性タイムアウトなど全項目) | デフォルト | |
暗号化 | サーバー側の暗号化 | 有効 | 選択 |
キータイプ | Amazon SQS キー(SSE-SQS) | デフォルト | |
タグの有効化 | UserName | 個人名入力 |
Lambda画面でトリガー設定
マネージメントコンソールへの入力項目は、以下の通りです。
トリガーの設定 | SQS | 選択 |
---|---|---|
SQSキュー | rkoike-handson-queue ※ 冒頭部はユーザ固定読み替えしてください |
検索+選択 |
トリガーをアクティブ化 | (チェックボックスのみ) | チェック |
連載の第1回で作成したLambda関数を中心に、「サーバーレス連携」をしている感のある画面になってきましたね!ここまでの設定で、SQSからメッセージを送れば、Lambda関数が動くはずです。
SQSからメッセージを送ってみた
特にオプションを付けず、シンプルにメッセージを送ってみました。
おお、LambdaのログにSQSからメッセージが来たことが記録されていますね。無事連携がうまくいったようです。
SQS連携させるためのSNSの準備
「SQSとSNSを連携させるためのトピックを追加します」の入力項目は、以下の通りとしました。ここでも、自分の作ったリソースを後から追跡するためにタグを有効化します。
タイプ | スタンダード | 選択 |
---|---|---|
名前 | rkoike-sqs-topic ※ 冒頭部はユーザ固定読み替えしてください |
入力 |
表示名 | 同上 | 入力 |
暗号化 | 暗号化 | チェック |
AWS KMSキー | (デフォルト)alias/aws/sns | デフォルト |
アクセスポリシー | (特に設定しない) | デフォルト |
データ保護ポリシー | (特に設定しない) | デフォルト |
配信ポリシー(HTTP/s) | (特に設定しない) | デフォルト |
配信ステータスのログ記録 | (特に設定しない) | デフォルト |
タグの有効化 | UserName | 個人名入力 |
SQSキューをSNSトピックにサブスクライブさせるということ
連載の第2回ではSNSトピック作成後にサブスクリプション登録しましたが、今回はSQSとSNSの連携を試します。SQSキューがSNSトピックからのメッセージを受信できるように、SQSの画面でサブスクライブの設定をします。そう、いわゆる「サブスク」の仕組みです。SNSが提供し、SQSが受信します。
名前 | (当記事の冒頭で作成したキューを選択) | 選択 |
---|---|---|
SNSトピック | (先ほど作成したSNSトピックのARN) | 検索+選択 |
第2回で試したメール送信とは異なり、ここの連携でLambdaは絡みません。SNSからはSQSへ連携されます。Lambdaと連携するのはあくまでもSQSで、SNSから直接Lambdaへ連携するわけではないことを踏まえておきましょう。
SNSトピックからメッセージを送信、SQSを経由してLambda関数が起動
SNS画面からメッセージを送ってみます。
LambdaのログにSQSからメッセージが来たことが記録されていますね。無事にSNSからSQSへ、そしてSQSからLambdaへと連携がうまくいったようです!
SQSのお財布事情
さて、ここまではハンズオン資料のおさらいと、結果の共有でした。例によって実際利用するにあたり気になるのは、費用の問題です。いったいどのくらいかかるのかと見てみると......、このくらいなら余裕で無料の範囲ですね。実際にかかる費用は、扱うデータ量と処理内容、処理する頻度によると考えてください。
標準キュー(100万リクエストあたり) | FIFO キュー(100万リクエストあたり) | |
---|---|---|
最初の100万リクエスト/月 | 無料 | 無料 |
※ 料金 - Amazon SQS | AWS
「Amazon SQSの料金」より引用(2024年9月3日現在)
おわりに
さらに他のサービスとLambdaの連携を試してみましょう。次回は、API Gatewayを使ったREST APIとの連携を取り上げます。
なお、ラックはセキュリティの会社ですが、筆者のようなスキルシフト中のエンジニアだけでなく、経験豊富なクラウド技術者やコンサルタントが多数在籍しています。AWSだけではなく、OCI、Azure、Google Cloudも取り扱い、クラウド移行からクラウドネイティブ支援、サーバーレス構築まで、幅広くサポートしますので、お気軽にご相談ください。
関連記事
- Hello from Lambda!AWSでサーバーレスに触ってみた #1
- S3イベント連携 with Lambda!AWSでサーバーレスに触ってみた #2
- Hello from Lambda in API Gateway!AWSでサーバーレスに触ってみた #4
- Lambdaのログを見てみよう&検証リソースお片付け!AWSでサーバーレスに触ってみた #5
プロフィール
小池 玲子
外国語学部出身でIBM Power/AIX/PowerHA育ちのインフラエンジニア。
現場でマネジメント修業を積み、PMP取得を経て、クラウド系PMへ移行中。
タグ
- セキュリティ
- 人材開発・教育
- システム開発
- アプリ開発
- モバイルアプリ
- DX
- AI
- サイバー攻撃
- サイバー犯罪
- 標的型攻撃
- 脆弱性
- 働き方改革
- 企業市民活動
- 攻撃者グループ
- JSOC
- もっと見る +
- JSOC INSIGHT
- サイバー救急センター
- サイバー救急センターレポート
- LAC Security Insight
- セキュリティ診断レポート
- サイバー・グリッド・ジャパン
- CYBER GRID JOURNAL
- CYBER GRID VIEW
- ラックセキュリティアカデミー
- すごうで
- ランサムウェア
- ゼロトラスト
- ASM
- EDR
- SASE
- デジタルアイデンティティ
- インシデントレスポンス
- 情シス向け
- 対談
- CIS Controls
- Tech Crawling
- クラウド
- クラウドインテグレーション
- データベース
- アジャイル開発
- DevSecOps
- OWASP
- CTF
- FalconNest
- セキュリティ診断
- IoT
- EC
- サプライチェーンリスク
- スレットインテリジェンス
- テレワーク
- リモートデスクトップ
- アーキテクト
- プラス・セキュリティ人材
- 障がい者採用
- 官民学・業界連携
- カスタマーストーリー
- 白浜シンポジウム
- CODE BLUE
- 情報モラル
- クラブ活動
- 初心者向け
- 趣味
- カルチャー
- 子育て、生活
- 広報・マーケティング
- コーポレート
- ライター紹介
- IR