ヤマムギ

growing hard days.

*

webフォームからの問い合わせをRedmineに自動登録して対応状況を管理する(API Gateway + Lambda)

   

先日、検証目的で作成したRedmineの冗長化の一機能として、webフォームから問い合わせがあった場合に、Redmineのチケットを自動登録して対応状況を管理出来るようにしてみました。

  1. webフォームはS3で静的ホスティングを使っています。
  2. CloudFrontでS3をオリジンにしてwebフォームを配信しています。
  3. ACMでSSL証明書を無料で取得しています。
  4. webフォームから送信された情報はAmazon API Gateway、AWS Lambdaを経由してDynamoDBテーブルへ格納されます。
  5. DynamoDBテーブルに格納されたデータはDynamoDB StreamからLambdaが実行されてSQSへキューを送信します。
  6. SQSからキューを受信したLambdaがRedmine APIをコールしてチケットを作成します。

※ DynamoDBを介しているのは、Redmineへ送る必要のないデータも含めて記録しておくためです。
※ SQSを介しているのはRedmine APIがコール出来ない場合に再処理を容易にするためと、再処理回数をSQSのデッドレターキュー機能で制限したいためです。
※ 4で6の処理をするAWS Lambdaを実行してもいいですが、Redmine APIがコール出来ない場合の再処理などを考慮する必要があると思います。

Lambdaは全部Python3.6です。

webフォームからのポストを受けてDynamoDBへ送信するLambda

  • DynamoDBテーブルではsubmit_datetimeをパーティションキーに、フォームから送信されるメールアドレスをソートキーにしています。

DynamoDB Streamから実行されてSQSへキューを送信するLambda

  • sqsのurlはLambdaの環境変数に入力しておきます。

SQSからキューを受信してRedmine APIをコールしてチケットを作成するLambda

  • sqsのurlはLambdaの環境変数に入力しておきます。
  • RedmineのurlはLambdaの環境変数に入力しておきます。
  • redmineのAPIキーは登録するプロジェクトにチケットを作成する権限を持っているユーザーのAPIキーを使用します。
  • redmineのAPIキーは環境変数に入力してKMSで暗号化します。

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

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

「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第2版」という本を書きました。

「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。

「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。

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

 - AWS , , , ,

ad

ad

  関連記事

Application Load Balancer スティッキーセッションでどれぐらい偏るかを偶然見ました

Amazon Linux2のPHPを7.2から7.3へアップデートしましたでアッ …

cfn-initでEC2インスタンスにPHPをインストールしWebサーバーを起動する

AWS CloudFormation による Amazon EC2 へのアプリケ …

Pepperで撮影した写真をAmazon Rekognitionで分析してその結果をPepperがしゃべる ~(1)AWS編~

Pepperの機能を使えるところは使って、何かしたいなあと思ってまして。 目(カ …

Backlogの実績工数をAmazon QuickSightでの可視化 – 仕組み編

Backlogの実績工数をAmazon QuickSightで可視化してわかった …

EC2 VyOSで/etc/resolv.confを設定しました

EC2でVyOSを起動してSSHで接続して確認していたところ、どうもVyOSから …

「X-Tech JAWS 【第2回】~9割のX-Techと1割の優しさで切り拓く未来~」に行ってきました

「X-Tech JAWS 【第2回】~9割のX-Techと1割の優しさで切り拓く …

Amazon Elasticsearch ServiceにMySQLのデータを投入してkibanaで可視化してみる

MySQLのデータの可視化にAmazon Elasticsearch Servi …

GoogleForm,GASからAPI Gateway, Lambdaで入力情報をDynamoDBに格納する

vol.26 AWS認定試験テキスト認定クラウドプラクティショナーのデモ(Dyn …

Aurora Serverless Data APIを有効にしてLambdaからクエリを実行

Aurora Serverless作成 MySQLを作成しました。 作成時にDa …

Cloud9環境を共有した際の環境認証

Cloud9を環境を構築したIAMユーザー以外に共有したとき、その環境から実行す …