Closed5

AWSのCodeシリーズをハンズオンでペタペタ触る

bun913bun913

なるほど。なるほど。

  • ソースステージ(github, codecommitの対象リポジトリとブランチを選択)
  • ビルドステージ(codebuild)
  • デプロイステージ(codedeploy)
  • レビュー

とあらかじめCIに必要なパイプラインの流れが決まっている感じかー

bun913bun913

まずはコードデプロイをぽちぽち触ってデプロイステージを用意しておく必要がある

さらにそのためにはデプロイグループを作成する必要がある。

そのためにECSやEC2でアプリをデプロイできる状態にしておく必要がある。

なので

  • ECRにイメージをプッシュ
  • ECSでそのイメージを使ってアプリをデプロイ
  • codedeployでそのクラスターをターゲットに指定する
bun913bun913

ECRへのイメージのプッシュ(ハンズオン)

ECRにアプリのイメージをプッシュするために以下サンプルアプリを利用します。
DBも必要なく環境変数だけ変えれば動作を変えられるシンプルなアプリです。

https://github.com/bun913/sample_app

これを pullしてきて、まずはイメージをbuildします。

d build -t color:v1 .

AWSの公式の説明の通り ECRにプッシュする準備を進めます。
https://docs.aws.amazon.com/ja_jp/AmazonECR/latest/userguide/docker-push-ecr-image.html

# ログイン
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  
bun913bun913

ECSでサービスを動かす

ネットワークリソースなどは Terraformでさくっと作成(このあたりは別途記事化)

以下こちらの記事とか参考に

https://dev.classmethod.jp/articles/try-aws-ci-cd-for-amazon-ecs/

まずはクラスター作成

次にタスク定義を作成

Farageteで立ち上げる

ハマったところメモ

このスクラップは6ヶ月前にクローズされました