概要
AWSサポートより、CodeBuildにおけるUbuntu14.04 EOL通知が来たのでその対応時にハマった点を記録する。
TL;DR
- OSはUbuntuのまま
- RuntimeをStandardにする
- Imageを
aws/codebuild/standard:2.0
へ変更する - buildspecで
Runtime(docker: 18)
を指定する - aptはapt-getへ変更する
- sudoは要らない
The policy's default version was not created by enhanced zero click role creation or was not the most recent version created by enhanced zero click role creation.
が出たら、Allow AWS CodeBuild to modify this service role so it can be used with this build project
のチェックを外す
Image
元々、UbuntuのRuntimeでBaseを使用していたところ、これが14.04だった。
まず、これらをStandardへ変更し、Imageは aws/codebuild/standard:2.0
へ変更する必要がある。
buildspec.
そのままだと動かず YAML_FILE_ERROR Message: This build image requires selecting at least one runtime version.
というエラーが出る。
例のごとく日本語ドキュメントはまだ対応していないようだが、英語のドキュメントにはbuildspecにruntime versionを記載するように書いてある。
具体的には下記を追加する。
phases:
install:
runtime-versions:
docker: 18
aptからapt-getへ
また、baseではsudoが必要だったが、不要になっているし、apt実行時にwarningになるのでapt-getへ変更する。
Phase context status code: COMMAND_EXECUTION_ERROR Message: Error while executing command: apt update && sudo apt-get -y install mysql-client curl. Reason: exit status 127
sudoは不要
sudoを使っているとsudoが見つからないとなるので、削除してしまう。sudoがなくてもパッケージインストールは出来る。
/codebuild/output/tmp/script.sh: 4: /codebuild/output/tmp/script.sh: sudo: not found
The policy’s default version was not created by enhanced zero click role creation or was not the most recent version created by enhanced zero click role creation
これは自動的に作成されたIAMポリシーを手動で編集したりすると出てしまうらしい。
Allow AWS CodeBuild to modify this service role so it can be used with this build project
のチェックを外すことで解決できる。
そのかわりポリシーが不足した場合は、対象のIAMポリシーを手動で編集が必要。
以上で移行が行えた。
CodeBuildはCircleCIとかでやっていたことをAWSに統合することができたりして便利だけど、CircleCIにはあってCodeBuildには無い機能(トラブル時にSSHして確認する機能)があるので、少し癖を掴む必要がある。
特にAWSのこの手のサービスは全て裏でDockerが動いているようなので、その辺を意識しながらトラブルシュート出来ると良さそう。
上記に移行の一つ一つは大したことはないけど、重なると対応にそれなりに時間がかかるのでメモとして残しておきます。
参考URL
- https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-available.html
- https://docs.aws.amazon.com/codebuild/latest/userguide/troubleshooting.html
- https://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/troubleshooting.html#enhanced-zero-click-role-creation
<p style='padding: 5px;'>