ヤマムギ

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で暗号化します。
@yamamanx

開発ベンダー5年、ユーザ企業システム部門通算9年、ITトレーナー2年目のSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。

このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。

また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。

 - AWS , , , ,

ad

ad

  関連記事

Amazon LinuxにRedmine 環境構築(エラーと対応をそのまま記載版)

Amazon Linuxにgit + Redmineの環境を構築してみます。 自 …

Feedlyのフィードを自動でSlackへ投稿する(AWS Lambda , Amazon DynamoDB)

やりたいこと Feedlyで共有したいフィードに特定のタグを付けます。 特定のタ …

AWSのAmazon LinuxにGitマスターサーバをインストールしてRedmineリポジトリブラウザで見る

Amazon LinuxにGitをインストールする Gitをインストールして自動 …

AWS RDS でMySQLインスタンスを構築する

Amazon Web ServiceにはAmazon Relational Da …

AWS Summit Tokyo 2017 Day3 開場~基調講演~Dev Day Night

AWS Summit Tokyo 2017 参加2日目のDay3です。 基調講演 …

AWS Toolkit for Eclipseをセットアップする

AWSでそろそろ課金がされつつありますので、夜中はインスタンスを自動停止して朝自 …

Amazon LinuxにRedmine をインストールする(手順整理版)

Amazon LinuxにRedmineをインストールしました手順を記載します。 …

JAWS-UG Osaka 第14回勉強会 「DIY」 〜自社内システムを作る側からの物申す〜に参加、運営、登壇しました

先日、JAWS-UG Osaka 第14回勉強会 「DIY」 〜自社内システムを …

Amazon Data Lifecycle Manager(DLM)が東京リージョンで使えるようになったのでLambdaでAMI自動取得から乗り換えた

EBSのスナップショットを自動で作成してくれるAmazon Data Lifec …

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

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