2026-05-09_CA-SRE-ECS-ハンズオン
#cyberagent
hr.icon
自己紹介
守田さん
サムザップ サーバーリーダー
岩立さん
QualiArts SRE
岸端さん
QualiArts 学マスバックエンド
鈴木さん
24入社 QualiArts 学マスインゲーム寄りバックエンド
伊藤さん
新規事業 バックエンド
片山さん
AJA バックエンド 同志社
成尾さん
ネイティブ 関学
会社説明
メディア
ゲーム
広告
本題
!AWSログイン
container orchestrationとは(座学)
ECS
https://scrapbox.io/files/69fe93fc5c3c134ed4271d40.png
タスク定義
タスク定義ファミリー名ってやつがタスク定義の名前
ファミリーってなんだ
fargateではネットワークモード: awsvpcの指定が必須
最小(.25vCPU .5GB)
クラスター
AWS Fargateのみ
ALB
外部向け v4
vpc作成
AZ数3!
subnet ?サブネットに個数ってどういうことだろう
public3
private0
このUIかっこいいな
スクショできなかった
https://scrapbox.io/files/69fe96cf5c3c134ed4273978.png
https://scrapbox.io/files/69fe97205c3c134ed42739ce.png
セキュリティグループ
インバウンド
TCP 80 anywhere v4
デフォルトは外しておく なんでだろう
重ねがけ用途であるだけ
https://scrapbox.io/files/69fe97b25c3c134ed4273a98.png
ターゲットグループの作成
IPアドレス ここの指定は何?
ターゲットの登録 ECSが全部やるのでなにもなし
https://scrapbox.io/files/69fe99965c3c134ed4273d33.png
ALBはアクティブになっているか確認
https://scrapbox.io/files/69fe9a2b5c3c134ed4273ea6.png
サービスの作成
タスク単体で作成することは可能ではあるが、オーケストレーションできない
落ちても復帰しない等
環境 Fargate
必要タスク数 3
ネットワーキング
vpc指定
サブネット
既存のセキュリティグループを使用 → セキュリティグループ指定
ロードバランシング
use
ALB
作成したALBを指定
リスナー 既存
ターゲットグループ 既存
https://scrapbox.io/files/69fe93fc5c3c134ed4271d40.png
完成!
タスク定義
サービス
ALB
タスクを落としてみる
https://scrapbox.io/files/69fe9ef35c3c134ed4274cfd.png
https://scrapbox.io/files/69fe9f045c3c134ed4274d16.png
https://scrapbox.io/files/69fe9f115c3c134ed4274d2a.png
https://scrapbox.io/files/69fe9f1a5c3c134ed4274d3f.png
https://scrapbox.io/files/69fe9f285c3c134ed4274d59.png
ロードバランシングを確認してみよう
新規リビジョン
イメージを変えてみる
280734291456.dkr.ecr.ap-northeast-1.amazonaws.com/cloudnative-handson:latest
サービスを更新
リビジョンを最新にする
アンケートがでてきた
https://scrapbox.io/files/69fea1855c3c134ed42752b0.png
https://scrapbox.io/files/69fea1ce5c3c134ed427534a.png
日本語のローカライズがおもしろい
https://scrapbox.io/files/69fea2a95c3c134ed427552f.png
code:error
CannotPullContainerError: pull image manifest has been retried 7 time(s): failed to resolve ref 280734291456.dkr.ecr.ap-northeast-1.amazonaws.com/cloudnative-handson:latest: 280734291456.dkr.ecr.ap-northeast-1.amazonaws.com/cloudnative-handson:latest: not found
https://scrapbox.io/files/69fea4585c3c134ed427598e.png
https://scrapbox.io/files/69fea48b5c3c134ed42759e4.png
リビジョンを変える(デプロイをする)と、成功するまでは前デプロイのタスクが残った状態で動き続ける
https://scrapbox.io/files/69fea5a85c3c134ed4275cf0.png
code:error
停止コード: TaskFailedToStart
CannotPullContainerError: pull image manifest has been retried 7 time(s): image Manifest does not contain descriptor matching platform 'linux/amd64'
macでデフォルトだとarm64でimage作成してしまう
https://scrapbox.io/files/69fea7445c3c134ed427618a.png
https://scrapbox.io/files/69fea7575c3c134ed42761a0.png
EKS on EC2
https://scrapbox.io/files/69feb99a5c3c134ed4278cb2.png
VPC作成
az 3 public subnet 3 private subnet 0
https://scrapbox.io/files/69feba275c3c134ed4278da5.png
生成されたサブネットすべてにパブリックIPv4アドレス自動割り当て設定をする
クラスター作成
eksClusterRole
vpcさっきの指定
https://scrapbox.io/files/69febc8e5c3c134ed42791ce.png
ノードグループの追加
発展課題
ECS
CI / CD
ECRにリポジトリ作成
code:shell
aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin 280734291456.dkr.ecr.ap-northeast-1.amazonaws.com/kanda-cloudnative-handson
https://github.com/sil-org/ecs-deploy
これを使うらしい
docker imageのpushはできた
https://scrapbox.io/files/69fed6535c3c134ed427c0d4.png https://scrapbox.io/files/69fed6675c3c134ed427c0ee.png
タスク定義を作り直さなければいけないらしい
別のECRに切り替える場合
タスク定義を新しいものに変更
タスクサービスを更新 タスク定義を新規作成したものに変更
https://scrapbox.io/files/69fee2845c3c134ed427d979.png
code:shell
curl kanda-ecs-alb-1517593606.ap-northeast-3.elb.amazonaws.com:8080
Hello, Docker! <3%
deploy.shでもうごいた!
gh actionsでやるぞ
oidc認証でaws cliをつかう
aws-actions/configure-aws-credentials
既存のroleにrepoを追加
code:json
"StringLike": {
"token.actions.githubusercontent.com:sub": [
...,
"repo:nenrinyear/ca_ecs-ci-cd-handson:*"
]
}
https://github.com/nenrinyear/ca_ecs-ci-cd-handson/actions/runs/25596025404/job/75141993749
LT会
鈴木さん
Tursoを使ってみる
QualiArts 学マス
インゲーム: アプリケーション ロジック
マネージドな分散DB
トゥルソ
Tursoとは
SQLiteをフォークしたlibSQLがベース
DBの置きパターンが3つある
ローカル+クラウド逐次同期
クラウド完結
アプリ側+クラウド
岸端さん
フルマネージドサービスとの付き合い方
QualiArts
誤解を恐れずに言うと「迷ったらフルマネージドへ」
マネージド vs フルマネージド
マネージド
一部をクラウドが管理
最低運用人数増加: 学習/運用コストが増大
フルマネージド
実行基盤の管理責任をより広くクラウドに移譲
高い
少人数開発/運用に強い → 属人性が減らせる
1/15 人月分のコスト差
いかに早くユーザーにとって価値のあるサービスを提供できるか という着眼点de
短期
インフラのモジュール数が多いほどリリース時の工数が増える
長期
維持費 = 最低メンテ人員の人件費 + インフラ費用
維持費が低いほど利益を長く出せてサービスの寿命を伸ばせる
少ない人数で早く開発して