はじめに
AWS DVAの勉強を始めて、SAAやSOAでは問われることのなかったCode○○系のサービスについての問題が多くみられるようになった。
一つも知らないので、情報を調べてまとめてみることにする。
Code○○系のサービス
CodeArtifact
さまざまなソフトウェアパッケージライブラリの保存、公開、管理を行えるサービス。
CodeBuild
継続的インテグレーション(CI)を実現するサービス
ソースコードのビルド、単体テスト、テスト結果の生成を自動化することができる。
buildspec.ymlファイル
ビルドプロセスを自動化するために、buildspec.ymlというファイルを作成し、アプリケーションのソースコードプロジェクトのルートに配置する。
buildspec.ymlの例↓
version: 0.2
phases:
install:
commands:
- echo Installing dependencies...
- npm install
pre_build:
commands:
- echo Pre-build phase...
build:
commands:
- echo Build phase...
- npm run build
post_build:
commands:
- echo Post-build phase...
- npm run test
artifacts:
files:
- '**/*'
Secret Manager や System Manager Parametor Storeとの連携が可能。
パラメーターを環境変数経由で取得できる。
CodeCommit
※2024年7月25日をもって、新規利用は終了している。既存ユーザーは使いたければ引き続き使用できるっぽいけど、実際はもう誰も使ってない認識で良さそう
マネージド型のソース管理サービス。Gitのようなもの。
CodeCommitを利用する場合、接続するための認証情報を端末にセットアップする必要がある。
主にHTTPS接続する場合と、SHH接続する場合での設定が必要。
CodeDeploy
EC2やLambda、オンプレミスインスタンスなど、さまざまなコンピューティングサービスに対してのアプリケーションのデプロイを自動化するサービス。
デプロイ方法
デプロイ方法を以下2種類から選択できる↓
①In-Placeデプロイメント
デプロイ対象のインスタンもしくはコンテナに、直接アプリケーションをデプロイする
②Blue/Greenデプロイメント
新しいアプリケーションのノード群を作成し、テスト完了後にトラフィックを新しいノード群に切り替える
デプロイグループ
デプロイのターゲットとなるEC2インスタンスやLambda関数をグループ化し、デプロイグループとして管理する。
これにより、どのリソースに対してデプロイを行うかを明確にする。
appspec.ymlファイル
デプロイプロセスを自動化するために、appspec.ymlというファイルを作成し、アプリケーションのソースコードプロジェクトのルートに配置する。
appspec.ymlの例↓
version: 0.0
os: linux
files:
- source: /src
destination: /dest
permissions:
- object: /dest
owner: root
group: root
mode: 755
hooks:
BeforeInstall:
- location: scripts/before_install.sh
timeout: 300
runas: root
AfterInstall:
- location: scripts/after_install.sh
timeout: 300
runas: root
CodePipeline
継続的デリバリー(CD)を実現するサービス
CIでコード品質のテストが行われた後の、デプロイ準備や追加のテスト(結合テスト、ユーザーテスト、ペネトレーションテスト)、デプロイを自動化できる。
上記一連の流れをパイプラインという。
パイプラインの中で、どのサービスがビルドするのか、どのサービスがテストするのか、どのサービスがデプロイするのか、という役割を決めて管理する、例えるなら監督のような立場のサービス、という認識。
おわりに
現在参画している案件で新しいアプリケーションの開発がスタートしているので、パイプライン作成などのタスクが降ってきた場合はこの辺りで得た知識を活用してやっていきたい。