Integromat を使って backlog の課題更新内容を slack に投げる
つい最近、Integromat という IFTTT や Zapier に似たサービスがあることを知りました。 IFTTT や Zapier はシンプルで使いやすいけど Integromat はちょっとややこしいという感想がいくつかのブログで見られましたが、私的にはわりとすんなり使えたのでこれでいろいろやりたいなーと思っています。
今回は、backlog で課題追加や更新があった際に、その内容を slack に通知する仕組みを作ってみました。
Integromat のサインアップや基本的な使い方
いくつかのブログで丁寧に書かれているので省略します。(めんどいだけ…
どんな構成にしたか
左のWebhooks が backlog です。真ん中の Router が内容によって処理をかえるための if 文みたいなやつです。右の Slack が実際の処理内容です。
Router での分岐条件
backlog の課題が追加された場合に右上の Slack の処理をさせるようにしています。課題追加の type は 1 なので、type が 1 だったらこっち、みたいな感じです。
backlog の課題が更新された場合は、右の Slack を処理させるようにします。type は 2(更新) か 3(完了) です。
Slack での処理
こちらは backlog 課題追加時のアクションです。
こっちが backlog で課題更新(完了含む)された場合のアクションです。
slack での見え方
上記のように設定すると、backlog で課題追加されるとこんな風に投稿されます。
backlog で課題が更新されるとこんな風に投稿されます。
感想
最近ではチャットツールでやりとりしていて、メールをほとんど見なくなった会社が増えてきていると思います。 backlog は通知されないとメールでしか課題更新に気づけませんが、こうやって slack 等のチャットツールに自動投稿するようにしておけばすぐに気づけますね。 backlog だけでなく、Webhook が使えるサービスでも同じような仕組みを作ることができるので、いろんな場面で使えるんじゃないかなーと思います。便利な世の中になりましたね!
PrivateLink を CloudFormation で作ってみた
少しづつ CloudFormation から離れつつあります、那須です。
ちょっと前に CloudFormation で PrivateLink が作れるって AWS さんからニュースが出てました。
AWS PrivateLink リソースに対する CloudFormation サポートの導入
最近手作業で PrivateLink を構築したばっかりだったので、実際にやってみました!
作る AWS リソース
テンプレート内容
NLB、VPC Endpoint Service、VPC Endpoint の 3 つのリソースを一気に作成するテンプレートでテストしてみました。 NLB のパラメータは雑に入れてしまいましたが、とりあえず作りたいだけだったのでこれでよしとします。
{ "AWSTemplateFormatVersion": "2010-09-09", "Parameters": { "NlbArn": { "Type": "String", "Description": "NLB ARN" }, "VpcId": { "Type": "String", "Description": "VPC-ID for VPC Endpoint" }, "SecurityGroupId": { "Type": "String", "Description": "SG-ID for VPC Endpoint" }, "SubnetId": { "Type": "String", "Description": "SubnetID for VPC Endpoint" } }, "Resources": { "Nlb": { "Type": "AWS::ElasticLoadBalancingV2::LoadBalancer", "Properties": { "Name": "testnlb", "Scheme": "internal", "Type": "network", "Subnets": [ "subnet-xxxxxxxx", "subnet-xxxxxxxx" ] } }, "VpcEndpointService": { "Type": "AWS::EC2::VPCEndpointService", "Properties": { "NetworkLoadBalancerArns": [ { "Ref": "Nlb" } ], "AcceptanceRequired": true }, "DependsOn": [ "Nlb" ] }, "VpcEndpoint": { "Type": "AWS::EC2::VPCEndpoint", "Properties": { "VpcId": { "Ref": "VpcId" }, "ServiceName": { "Fn::Sub": "com.amazonaws.vpce.${AWS::Region}.${VpcEndpointService}" }, "VpcEndpointType": "Interface", "SubnetIds": [ { "Ref": "SubnetId" } ], "SecurityGroupIds": [ { "Ref": "SecurityGroupId" } ] }, "DependsOn": [ "VpcEndpointService" ] } } }
結果
NLB、VPC Endpoint Service、VPC Endpoint の 3 つのリソースは作成されました! が、よく見ると VPC Endpoint Service で エンドポイントの接続承認待ちの状態で止まってしまいました。 そのまま放っておくとエラーになってロールバックされますが、承認待ちの状態で手作業で承認すると CloudFormation のスタック作成は成功しました。
承認タスクは CloudFormation で対応できないか?
エンドポイントサービスのドキュメントを見ると下記のように書かれていました。
docs.aws.amazon.com
To accept a request, use AcceptVpcEndpointConnections.
というわけで、現時点では手作業か API コールするしかなさそうです。 AcceptanceRequired を false にすればいいと思いますが、そのような運用になっている場面ってあまりなさそうなので、そのうち対応されることを期待しておこうと思います。
まとめ
PrivateLink を CloudFormation で作成する機会ってあまりなさそうですが、もしそういう場面に直面された方の参考になればうれしいです。