Closed5
AWSのCodeシリーズをハンズオンでペタペタ触る
なるほど。なるほど。
- ソースステージ(github, codecommitの対象リポジトリとブランチを選択)
- ビルドステージ(codebuild)
- デプロイステージ(codedeploy)
- レビュー
とあらかじめCIに必要なパイプラインの流れが決まっている感じかー
まずはコードデプロイをぽちぽち触ってデプロイステージを用意しておく必要がある
さらにそのためにはデプロイグループを作成する必要がある。
そのためにECSやEC2でアプリをデプロイできる状態にしておく必要がある。
なので
- ECRにイメージをプッシュ
- ECSでそのイメージを使ってアプリをデプロイ
- codedeployでそのクラスターをターゲットに指定する
ECRへのイメージのプッシュ(ハンズオン)
ECRにアプリのイメージをプッシュするために以下サンプルアプリを利用します。
DBも必要なく環境変数だけ変えれば動作を変えられるシンプルなアプリです。
これを pullしてきて、まずはイメージをbuildします。
d build -t color:v1 .
AWSの公式の説明の通り ECRにプッシュする準備を進めます。
# ログイン
aws ecr get-login-password --region region | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com
> Login Succeeded
# イメージIDを取得
docker image ls | grep color | grep v1 | awk '{print $3}' | pbcopy
# v1としてタグ付け
docker tag ${イメージのID} aws_account_id.dkr.ecr.region.amazonaws.com/my-repository:tag
# プッシュ
docker push aws_account_id.dkr.ecr.region.amazonaws.com/my-repository:tag
> v1: digest: sha256:...
これでプッシュ完了です。
ハマったところ
m1 マックを利用しているからちゃんとアーキテクチャを指定しないと死ぬ
docker build --platform amd64
ECSでサービスを動かす
ネットワークリソースなどは Terraformでさくっと作成(このあたりは別途記事化)
以下こちらの記事とか参考に
まずはクラスター作成
次にタスク定義を作成
Farageteで立ち上げる
ハマったところメモ
-
ECRからプルする用のVPCエンドポイントの作成を忘れていた
- ecr.api
- ecr.dkr
- s3 (gateway)
-
デバッグ用にECS Exec用のエンドポイントも必要
やったぜ
このスクラップは6ヶ月前にクローズされました