LoginSignup
1
0

More than 5 years have passed since last update.

AWS FargateでRubyを実行してiOSアプリの証明書とかの有効期限をSlackに通知する

Last updated at Posted at 2018-10-07

AWS LambdaでRubyを実行してiOSアプリの証明書とかの有効期限をSlackに通知する を利用してmobileprovisionやcertの有効期限を定期的にSlackに投稿していたのですが、先日何故か動かなくなりました。

修正ついでに先日AWS Fargateがスケジュール実行をサポートされたので、そっちに移行する事にしました。

TL;TR

アプリ入れたDockerイメージ公開したので、それ使ってFargateで実行すれば通知してくれます。

Lambda版からの変更点

nodeを削除してrubyのみへ

Lambda版ではNode側でAppleDeveloperPortalのID/PassとSlackのWEBHOOKURLをKMSで復号していました。Dockerコンテナにrubyとnodeの両方のランタイムを入れると無駄にサイズが大きくなるので、ruby側に寄せました。

ruby, fastlaneを最新へ

TravelingRubyやLambdaのサイズ制約がなくなりましたので、存分に最新版を使えます。

CloudFormation

今回のアプリが入ったDockerイメージはdockerhubで公開しているので、Fargate側で指定して実行するだけで動かせます。動かすためのIAM Role, ECSのタスク定義, ECSのクラスタまでを作成するymlを書きました。

CloudFormationにはスケジュール実行のリソースもあるのですが、実行するVPC情報が必要で不特定多数向けに正常動作するように書くのは面倒だったので省きました。
かわりに作成時のスクショを置いておきます。

スケジュール実行の定義

名前は適当につけましょう。 cron(0 1 1 * ? *) で毎月1日の10時JSTに実行されます。
スクリーンショット 2018-10-07 11.08.46.png

起動タイプはFARGATE、作成したタスク定義を指定します
スクリーンショット 2018-10-07 11.09.33.png

コンテナの上書きの箇所で環境変数を変更します。ID, PASS, WEBHOOKURL
にはKMSで暗号化したものを入れます。
スクリーンショット 2018-10-07 11.10.01.png

これで毎月1日に有効期限がSlackに通知されます!

ところで

アプリ側のコード変えてないのですが、Fargateでちゃんと動いています。なんでLambda版は失敗しだしたんでしょうかねぇ。。たぶんApple側の変更で古めのfastlaneだとうまく取得できていなかった・・・とかでしょうか。

Repo

Source: https://github.com/hands-lab/ios-cer-profile-expiration-date-checker
DockerImage: https://hub.docker.com/r/rplusplus/ios-cer-profile-expiration-date-checker/

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0