目次
とある日
CodeBuildの真価の片鱗を見たのでそれをまとめたいと思います。
CodeBuild
詳細については前回の記事で説明しているのでご参照ください。
Docker image作成
この使い方はかなり一般的だと思います。
公式でも紹介されている方法です。
CodeBuild のDocker サンプル - AWS CodeBuild
CodeBuildを使ってECRに接続してimage作成をする
ローカル環境やテスト環境を設けてDocker構築してimageを作るのがめんどいなってときに使いました。
Cloud9を使えばAWS環境内で同等の環境を整えられますが、CodeBuildの利点はTerrafromで完全にコード化ができる点です。
Dockerfileを上げるのにCodeCommitを使ってファイルを上げる際にコンソールでいじったので完全コード化ではないですが....。
Terrafromを使ってもCodeCommitにソースコードを上げるのにはgitコマンド使わないといけないためめんどくなって手作業でしました。
参考にした記事をいくつか貼りますが、buildspec.ymlは公式のを参考にしたほうが良さそうです。
バージョンの関係とかでコマンドが古くなっている可能性があります。
ちなみに、構築してて躓いたのは権限周りでした。
あと、もちろんDockerの知識も問われます。
しかも、ローカルにDockerの環境がないという条件なのでdocker buildのテストができないのでトライアンドエラーで何度もやりました。
VPCアクセス
数年前から対応しているみたいです。
この使い方はあまりメジャーではない気がしますが。どうなんですかね。
Amazon Virtual Private Cloud での AWS CodeBuild の使用 - AWS CodeBuild
ちなみに、VPCにアクセスできて何がしたいかというとRDSのマスクをしたいと思っています。
↓やりたいこと
はじめはLambdaでSDK for Pythonを書いていい感じにしようと考えていましたが、時にはMySQLコマンドを使いたいときもあったりします。
そのときにCodeBuildを思い出しました。
CodeBuildならコマンドの恩恵を受けれるのではないかと。
しかし蓋を開ければただただめちゃくちゃ大変でした。
今絶賛躓いてます。
VPCを有することでネットワーク周りも構築しないといけないです。
更に、はじめは気づかなかったですが、公式ドキュメントにNATがいるよって書いてあり、ほかにもCodeCommitと連携するとなるとVPCエンドポイントも必要なのではなどなど....。
実際に使うとなるとそこそこ料金がかかる気がしました。
CodeBuildの真価
Lambdaを使えばAWSリソースもコードで操作できるので便利だと思っていましたが、意外とサーバでコマンドを使いたくなったりする瞬間があります。
プログラム書くよりコマンド叩くほうが早いときとか。
MySQLなどのミドルウェアのコマンドの恩恵を受けれるのはかなり便利だと思います。
そんなときには、CodeBuildを使えばLinuxコマンドも使えるしCodeCommitとかからソースコードを持ってきて実行することも可能です。
Lambdaより柔軟にいろいろなリソースを使えると思いました。
ですが、何事も適材適所だと思います。
何でもかんでもLambdaやCodeBuildで解決してもいいことはないと思います。
〆
最近CodeBuildを使ってあれこれしててCodeBuildって便利だなと思ったのでまとめてみました。
CI/CD以外にも使いみちがあります。