はじめに
はじめまして、社会人一年目の若手エンジニアです。
AWSのサービスをハンズオン形式で学ぶために、Bootcampクラウドネイティブ編に参加したのでそのときの内容をまとめようと思います。(本当の目的は会社から無料のバウチャーをもらうためですが、、、)
※この記事では特に、Codebuildのbuildspec.yamlの新規作成方法を中心にまとめています
この記事でわかる・できること
- コードをGitLabで管理する方法
- CodeBuildで新規にビルドを作成する方法
- template.yamlを編集して線形デプロイを実装する方法
この記事の対象者
- CI/CDの基礎を学びたい人
- AWSのCode系のサービスについて基礎を学びたい人
- AWSのBootcampでハンズオンの実践に興味がある人
Agenda
- 事前準備
- コードをGitLabで管理する
- コードをCodebuildでビルドする
- SAMで線形デプロイを実行する
それぞれのステップについて、次に詳しく記載します。
事前準備
環境の準備は以下の表示されているような案内に従って、順番に実行して完了してください(スキップしちゃってごめんなさい)。
注意事項①
下記二つはどこかにメモしていないと後々めんどくさいことになるので気を付けてください!!
- Secret Managerで管理されているパスワード
- GitLabで表示されるAccess Token
注意事項②
ポップアップウィンドウでの認証後に正常に更新されない場合がありますが、リトライするとエラーがなくなるので何度か試してみて下さい(私は2回目で正常に更新されました)
コードをGitLabで管理する
今回の環境ではコードを管理するツールとしてGitLabを使用していきます。(事前準備で既に構築済みです)
① GitLabでプロジェクトを作成して、
② VS Code Server のターミナルで以下のコマンドを実行します
git clone <<プロジェクトのクローンURL>>
③ そして VS Code Serverにドラッグ&ドロップでファイルを追加します
④ 最後に忘れずにcommitとpushを実行しましょう
cd ~/environment/training-applicant
git add -A
git commit -m 'ファイルを登録'
git push origin main
コードをCodebuildでビルドする
次にCodeBuildを利用してビルド・テストを実行するために、buildspec.ymlファイルを作成します。
公式ドキュメントにもbuildspecファイルの記述方法は載っていますが、以下ではとりあえずこの項目があればOKという形で記載しています。
# buildspec.yml
version: 0.2
phases:
install:
runtime-versions:
nodejs: 20
commands:
- npm install
pre_build:
commands:
- npm run test
- sam build
build:
commands:
- sam package --s3-bucket $S3_BUCKET --output-template-file packaged.yaml
artifacts:
files:
- packaged.yaml
discard-paths: yes
公式ドキュメント
CodeBuild のビルド仕様リファレンス | AWS
ここでもbuildとpushコマンドは忘れずに実行しましょう。
git add buildspec.yml
git commit -m 'bulidspec.ymlを追加'
git push origin main
Tips
- Buildした後のS3への保存先のパス設定は、artifactsフェーズのfilesで同じ名称を用いて記載します
- buildフェーズなどでのcommandsとfinallyセクションの違い
- commandsは各フェーズ内で実行
- finallyはビルドの最後、かつ成功失敗に関わらず実行
もし「CodePipelineが自動で動かない」や「CodeBuildでエラーが発生する」ときには、、、
事前準備の[トリガーを追加]をCodePipelineから確認してみよう
下記のように、[保存]をしっかりと押す必要があります!!(このせいでだいぶ苦しめられた、、、)
SAMで線形デプロイを実行する
template.yamlファイルに、DeploymentPreferenceの項目を追記します。
# ~~~~上記省略~~~~
Resources:
PutItemFunction:
Type: AWS::Serverless::Function
Properties:
# ~~~~一部省略~~~~
#以下のコマンドを追加する
AutoPublishAlias: live
DeploymentPreference:
Type: Linear10PercentEvery1Minute
# ~~~~下記省略~~~~
注意事項
記述する段落は、Resources⇒PutItemFunction⇒Properties配下になるので、間違えないように気をつけましょう!!
参考情報
おまけ
今回のイベントでは座学と実践が時間ごとに分けられていたので、座学でインプットしたことをいくつか書いておきたいと思います。
- 継続的デリバリーは人による承認の段階がプロセスに組み込まれているが、継続的デプロイメントは組み込まれていないという点で異なる
- buildspec.ymlのphasesの構成要素
- install : 環境を準備するためのパッケージのインストール
- pre build : 構文チェックなどビルド前に実行したいこと
- build : ビルドツールやコマンドの実行
- post build : テスト実行やレポジトリへのコンテナイメージの配布
- SAMでは段階的なデプロイとして、カナリア、線形(Liner)、すべて一度に(AllAtOnce)が選択可能
終わりに
Bootcampイベントは、ドキュメントを参照しながら実際に手を動かしてこれまで学んだ知識を確認できる良い機会になりました。これを機にAWS Certified Developer – Associate試験を受験してさらにスキル向上を目指そうと思います。
つたない文章にもかかわらず最後まで読んで下さった方、ありがとうございました。
本ドキュメントが少しでも参考になれば幸いです。
- AWS は、米国その他の諸国における Amazon.com, Inc. またはその関連会社の商標です。
- その他、記載されている会社名および商品・製品・サービス名は、各社の商標または登録商標です。