ヤマムギ

growing hard days.

*

API GatewayからLambdaを介さずにSNSトピックへ送信

      2020/05/09


やりたいこと

APIリクエストをまずLambdaで受けて、SNSトピックへ送信するという処理をしています。
特に加工は必要ありません。
コードはPythonだとこんな感じです。

このLambdaなくてもいいんじゃ、と教えてもらったので試してみました。

こちらを目指します。

ライブ配信カレンダーのバックエンド処理向けに作成

何かで実装したほうが理解早まりそうなので、こちら「ライブ配信のカレンダーをGoogle Apps Scriptとかで作りました」のライブ配信カレンダーの機能拡張の一環として作成してみます。

こちらの記事を参考に作成しました。

SNSトピックの作成

マネジメントコンソールSNSでトピックを新規作成しました。

SQSキューの作成

マネジメントコンソールSQSでキューを新規作成しました。
まずデッドレターキュー(DLQ)用のキューを作成しました。

メッセージ保持期間のみ、14日に変更しました。
他はデフォルトのままです。

処理用のキューを新規作成しました。

とりあえずTwitter向けのキューを作成して、メッセージが受信できるまでを確認します。
先入れ先出しに厳密ではないし、1回以上Tweetされても全然いいので、標準キューで作成しました。

メッセージ保持期間を14日間、メッセージ受信待機時間(ロングポーリング)を20秒、事前に作成したDLQを設定しました。
再試行回数は5回にしました。

作成したキューを選択して、[キュー操作]-[SNSトピックへのキューのサブスクライブ]からサブスクリプションを作成しました。

事前に作成した、SNSトピックを選択しました。

IAMロールの作成

API Gatewayのメソッドに割り当てるIAMロールを作成しておきます。

AWSサービスロールで、API Gatewayを選択しました。

CloudWatch Logsへの書き込みポリシーがアタッチされてたいので、そのままにしました。

今回のワークロード向けとわかるタグにしておきました。

できました。

インラインポリシーを追加しておきました。

事前に作成したSNSトピックにパブリッシュできるポリシーにしました。

API Gatewayの作成

マネジメントコンソール API GatewayでREST APIの新規作成をしました。

LiveDeliveryという名前にしました。

リソースを作成しました。

live というリソースにしました。
CORSも有効にしておきました。

作成したliveリソースを選択してメソッドを作成しました。

AWSサービスを選択して、リージョン選択と、サービスはSNSを選択しました。
HTTPメソッドはPOSTで、アクションに”Publish”を入力しました。
事前に作成したIAMロールのARNを実行ロールに入力しました。

統合リクエストのURLクエリ文字列パラメータに、Messageと、TopicArnを設定しました。
TopicArnはシングルクォーテーションで囲むそうです。なるほど。

API Gatewayでテストをしてみます。

実際に送信されそうな値を入れてみました。

予定どおりなら、SNS→SQSにメッセージが入る予定です。

受信されていました!

OKのようですので、デプロイしておきます。

GASからのAPI呼び出しと、LambdaからのTweet、DynamoDBはまた別のブログで書きます。


最後までお読みいただきましてありがとうございました!

【PR】 「AWS認定試験対策 AWS クラウドプラクティショナー」という本を書きました。

【PR】 「AWSではじめるLinux入門ガイド」という本を書きました。

【PR】 「ポケットスタディ AWS認定 デベロッパーアソシエイト」という本を書きました。

【PR】 「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル」という本を書きました。

 - AWS , , ,

ad

ad

  関連記事

AWSエンコードされたエラーメッセージをデコードするコマンドのメモ

Stdout: couldn’t create ENI: Unaut …

AWS認定SAPの執筆開始にあたって環境を構築しました

AWS認定ソリューションアーキテクトプロフェッショナル対策本の執筆開始にあたりま …

ヤマムギ vol.10 (AWS)EC2モニタリングハンズオン 手順

このブログは2020/5/6に開催しました、「ヤマムギ vol.10 (AWS) …

AWS Toolkit for Eclipseで「Error Message: Unable to find a region via the region provider chain. Must provide an explicit region in the builder or setup environment to supply a region.」

AWS Toolkit for Eclipseをセットアップ(2021年版)の環 …

AWS Organizations組織の移動

AWS Organizations組織の移動 やりたいことは、Organizat …

Amazon Connectから問い合わせ追跡レコード(CTR)をエクスポート

Amazon Connectから発信した電話に出たのか、出なかったのかを確認した …

Cloud9でSAMローカルテスト

せっかくテストするので、Amazon CloudSearchからAmazon E …

クロスリージョンでEFSをマウントしてみる

ニーズがあるかどうかはさておき、クロスリージョンでのEFSファイルシステムをマウ …

JAWS FESTA 2019 Sapporo 参加&当日スタッフ&企業サポーターで!

2019年のJAWS FESTA は札幌です! 今回もありがたいことに、所属して …

Amazon Auroraのスナップショットの暗号化とリージョン間コピーを改めて試しました

Amazon Auroraデータベースを暗号化して、スナップショットを作成、クロ …