(Google+)56この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。はじめにこんにちは植木和樹@上越妙高オフィスです。GatewayとLambdaを用いてBacklogと各種サービスを連携させる仕組みを作ってみました。その際に苦労した点などのを書き記しておこうと思います。背景クラスメソッドでは案件の進捗管理にBacklogを用いています。開発や構築案件で用いているわけですが、インターフェースがわかりやすいため、そのまま保守運用フェーズでも使いたいというお客様が多くいらっしゃいます。Backlogは元々個人単位でチケットを管理するのが目的のツールのため、チームでサポート業務でするには少々使いがってが悪い部分があります。問い合わせ時に誰にチケットをアサインしたらいいのかわかりづらいアサインされた人が当日非番だったりすると、チケットの確認・対応が遅れる可能性があるそのためサポート業務ではITILのSPOCに基づき、チーム共用ユーザーを用意して窓口を一本化しています。お客様には運用時の作業依頼の際に、この「オペユーザー」を担当者としてチケットを起票してもらうわけです。共用ユーザーを使うと、今度はそのチケットがを誰が担当しているのかBacklog上で管理するのが難しくなってしまいます。そこでクラスメソッドではOTRSというツールを使って、Backlogとは別に社内チケットで担当者を別途管理しています。Backlogではチケットの作成や更新が行われるとメールでお知らせする仕組みがありますので、そのメールをOTRSに取り込んでチケット化して管理しているわけです。一言でいえば二重管理です。GatewayとLambdaを用いてチケットステータスを同期させる仕組みを作ってみました。WebhookBacklogのWebhookの仕組みは下記ページに解説があります。[バックログ]Webhookはプロジェクト単位で設定します。設定にはスペースの管理者権限が必要です。WebhookからPOSTされてきたJSONデータを元に処理を行います。JSONは手軽に扱えますので、あとはデータに応じた条件分岐と各種サービスAPIをたたく処理を実装します。GatewayがまだTokyoリージョンでサービス開始していないため、ここだけVirginia(us-east-1)を用いています。GatewayからLambdaを呼び出せるようです。GatewayからLambdaを呼び出すための設定は下記が参考になるかと思います。GatewayChatworkChatworkにもメッセージを送ってみました。今回は単純にチケットの内容を整形して書きんでいるだけで凝った使い方はしていません。OTRS(SES)OTRSとの連携には悩みました。APIを持っているようなのですが、拡張性と汎用性が高いらしく具体的な呼び出し方法を解説したページがないのです。APIでの連携はひとまず見送り、メールにOTRS固有のヘッダーを埋め込むことでステータス変更をさせることにしました。SESのsendRawEmailを使うとカスタムのメールヘッダーを入れることができます。CommunityS3今回はデバッグ目的でWebhookで渡されたJSONをS3へ保存しています。テキストファイルなのでサイズはほとんど気にしなくていいですが、BucketにLifeCycleを設定して自動削除するようにしておくと安心です。きれいなコードではないですが、参考になれば幸いです。非同期処理の扱いがポイント呼び出されたLambdaのコードが、Chatworkへのリクエストを投げてレスポンスが返るまでに終了してしまうという症状に悩まされていました。最初のうちはうまくいっていたのに、コードを追加したところ動かなくなるという不思議。プログラム初心者がはまりやすいポイントらしいです。API呼び出しは非同期のため、メインの処理は呼び出しの完了を待たずに終わってしまう場合があります。そのためちゃんと待ってから処理を終了する必要があります。同期処理にはasyncを使うのが定石のようですので、今回は以下のようにして同期をとりました。Chatwork/SES/S3への各処理は順序を気にしないためparallelで並行処理しています。});};各関数にcallbackを渡して、処理が完了したら終わったことを通知させるわけですね。慣れないうちは、どこから書きはじめれば良いのか分からないものです。AWSのドキュメントにはサンプルコードが掲載されていますので、遠慮なく拝借してきましょう。JavaScriptこれを元に書きかえることで徐々にコツがつかめてくるはずです。Logsへ出力させることができます。上記の通りnode.jsは非同期処理のため、コードの記述順に実行が行われないことが多々あります。慣れないうちはコードがどこでおかしくなっているのか調べるのが難しいため、ログは多めに出しておくのがオススメです。モジュールで外部APIを呼び出す際にも、デバッグを有効にしているとリクエストとレスポンスの内容が見えて便利です。Gatewayを叩けない(ログも残らない)という問題があり、ヌーラボさんに報告だけしてずっと放置していました。先日ヌーラボの中の方から、9/14のリリースで対応したので試してみてね!というメールをいただき試してみたところ、サクっと動きました。このブログの場を借りてお礼とご報告させていただきます。Lambdaで本当に簡単に処理が実装できます。お金もほとんどかからないので、ぜひお試しください。次のJAWS-UG上越妙高はLambdaハンズオンもいいなぁ。リモート】クラスメソッドの会社説明会を開催しますクラスメソッドでは、AWS・AI・ビッグデータ・モバイルなどの技術職や営業のメンバーとして一緒にお仕事をする仲間を大募集しています。#cmdevio新型コロナウイルスの感染拡大を受け、本イベントを延期させていただくことになりました(開催時期未定)。お申し込みいただいた皆様には大変申し訳ございませんが、何卒ご理解いただけますようよろしくお願いいたします。AWSについてライトに色んな情報交換をしましょう。濱田孝治421re:Invnetの動画検索でもめちゃくちゃ便利ですが、その他ブログやホワイトペーパーやGitHubも横断検索できるので、是非一度使ってみてください。CAFEの他、NTTデータとセブンイレブンの取り組みや、サインポスト、Zippinなどの各社と流通・小売業との連携を業界マップに作成してみました。泰雨122皆さん、こんにちは。コンサル部のテウです。2020年もあっという間に2ヶ月が経ちました。今年こそ機械学習に入門しようぜ!!って決心された方もいらっしゃると思います。入門できる方法をご紹介させて頂きたいと思います。本記事の手順通り、ランチタイム等の時間を活かして、手軽に入門してみてください。濱田孝治421re:Invnetの動画検索でもめちゃくちゃ便利ですが、その他ブログやホワイトペーパーやGitHubも横断検索できるので、是非一度使ってみてください。夏目祐樹414こんにちは、CX事業本部の夏目です。MacのタッチバーのタッチIDが非常に便利なのですが、Terminalでsudoを叩かないと行けないときに使えたらなぁと思ったので、情報を共有します。臼田佳祐296ワークフロー自動化OSSのn8nをAWS環境で建てて検証してみました。非常に期待できるサービスです。Fargateの勉強をしています。使ってみたい方は参考にしてください。洋介257SnowflakeがAWSの東京リージョン上で稼働するようになりました。データを日本に置けます。クラスメソッド株式会社が運営するAWS・iOS・HTML5に関する技術情報サイトです。