Diary

@ssig33

AWS CodeBuild をちょっと触ってみた

フルマネージドのビルドサービス という触れ込みで、実際まあその通りなんだけど、これはあくまでもビルドツールであって CI ツールではない。出来ることはビルドだけ。

なので Amazon Travis 的なサービスではない。 AWS CodePipeline や Lambda や API Gateway などと組合せることで一気通貫の CI 環境を構築することはもちろん可能だが、大抵の場合において Travis に金を払ったほうがいいと思う。 Jenkins おじさんならぬ AWS CodePipeline が発生してしまう。

ビルドタスクが大量にあり Travis なり Jenkins なりのレーンが頻繁に逼迫してる会社ならばこれらサービスを使ってやっていくコストをペイできることでしょう。

一方で個人が Github の Private リポジトリの master を継続ビルドする、ぐらいならまあ一瞬で構築できるし安いのでそういう用途ならアリです。

ということまではまあ Amazon 側が想定してる使い方だと思うんですが、これすごく便利です。

これ何に使えるかというと、時間課金の Docker コンテナ実行環境として使えます。

  • 何らかのイベントに応じて短時間大火力の CPU を使いたい
  • cron で Docker コンテナを起動してなにかの処理をしたい

みたいなことは比較的頻繁にあると思います。僕は結構いろいろあります。これを実現するためには、これまで AWS では、事前に十分な量のインスタンスを用意しておくとか、正直とても人間の使うものとは思えない EC2 Container Service の使いかたを習熟するとかいったことが求められてきました。

しかし、ポート公開の必要のないコンテナであれば、 CodeBuild の Build specification で

phases:
  build:
    commands:
      - docker run SOME_IMAGE

とかなんとか指定しとくだけで、 CodeBuild の高性能な実行環境で実行できます。あとはこの Build Project を lambda かなにかから必要に応じて叩いてやればよいだけです。

lambda とあわせて利用することで非常に安価なバッチ実行環境が手に入ります。さっそくいろんなバッチをこれに乗せて遊んでいる。

05 Dec 2016 Mon 15:27 (UTC)