ちょっと実装したいことができ、AWS Lambda関数で実装することにしました。JavaのライブラリであるFlywayを使いたいこともあり、Lambda関数をJavaで実装することにします。
Layer機能を使いたかったため、build.gradleに以下の記述を追記します。
// 依存ライブラリだけのパッケージを作る tasks.register('packageLibs', Zip) { into('java/lib') { from configurations.runtimeClasspath } archiveAppendix = 'libs' } // 自分で実装したプログラムだけのパッケージを作る tasks.register('packageSkinny', Zip) { from compileJava from processResources archiveAppendix = 'thin' }
これで、./gradlew packageLibs
で依存ライブラリだけのパッケージを作ることができ、これをLayerに保存することができます。
また、./gradlew packageSkinny
で自分で実装したプログラムだけのパッケージを作ることができます。これで変更が多い自分が実装したプログラムだけを小さなパッケージとして作ることができます。
最初は自分のMac上でパッケージを作成していましたが、面倒くさくなったのでCodeBuildを使ってビルド作業をやってもらいます。
buildspec.yml
を以下のように実装すればOK。インデント要注意です(どハマりました)。
version: 0.2 phases: install: runtime-versions: java: corretto17 build: commands: - ./gradlew clean packageLibs - ./gradlew packageSkinny artifacts: files: - '*.zip' base-directory: 'build/distributions'
これでCodeBuildがビルドしてくれます。
興味本位でログをS3に吐き出すようにしてみたのですが、gz形式で圧縮された形で出力されるのでちょっとデバッグは厳しいですね。
今週はここまで。次はCodeDeployとかを使ってLambdaにデプロイしてみようかなと思います。