🏭 CodePipeline & タスク概要

初心者でも分かる!お弁当工場のたとえで学ぶCI/CDパイプライン

概要理解
Docker改修
Config更新
Pipeline構築

🍱 まずはたとえ話で全体像を掴もう

初心者向け
🏭
CodePipeline = お弁当工場のベルトコンベア
各工程で作業して、完成品を次の工程に渡していく仕組み
🍱 お弁当工場 💻 CodePipeline 📝 具体的な内容
🗄️ 食材倉庫 Source(S3) ソースコードのzipファイルを保管
📦 調理台に並べる Artifact管理S3 zipを解凍してコードを展開
👨‍🍳 調理場 CodeBuild Dockerイメージのビルド
🍱 お弁当箱に詰め分け OutputArtifacts DeployGroup毎にソースを分配
📋 レシピ appspec.yaml デプロイ手順を定義
🚚 配送先 DeployGroup デプロイ先のEC2グループ
🏭 工場の設計図 CloudFormation インフラ全体をコードで定義

💡 今回のタスク :新しい配送先「 GENAIさん宅 」を追加する作業!

🔄 CodePipelineの仕組み

CodePipelineの仕組みの図 3個のノード(円形)、13個のコンポーネント(矩形)、矢印や接続線で構成された図。25個のラベル付き要素を含む。 ① Source ステージ 🗄️ 食材倉庫から取り出す 📦 ソースS3(zip) 📂 Artifact S3(解凍) ② CodeBuild ステージ 👨‍🍳 調理して詰め分ける 🐳 Docker Build ↓ 配送先毎に分配 📦 AP用 📦 GENAI用 🆕 NEW! ③ CodeDeploy ステージ 🍱 レシピ通りに盛り付け 📋 appspec.yaml を読む ↓ スクリプト実行 🖥️ AP環境 EC2群 🤖 GENAI環境 🆕 NEW! 💡 クリックで詳細表示 | Source Build Deploy = 今回追加する部分

📥 Source ステージ

技術的な動作

  • S3バケットからソースコード(zip)を取得
  • zipを解凍してArtifact管理S3に配置
  • 次のステージ(CodeBuild)に渡す

🍱 お弁当工場で例えると

冷凍庫(ソースS3)から食材(コード)を取り出して、調理台(Artifact管理S3)に並べる工程。まだ調理前の状態。

🔨 CodeBuild ステージ

技術的な動作

  • Artifact管理S3からコードを取得
  • buildspec.yml に従ってビルド実行
  • Dockerイメージをビルド&ECRにプッシュ
  • DeployGroup毎にOutputArtifactsを分配

🍱 お弁当工場で例えると

調理場で食材を調理(ビルド)して、配送先ごとに異なるお弁当箱(Artifact)に詰め分ける工程。Aさん用とBさん用で中身を変えられる!

🆕 今回の変更点:

GENAI用のOutputArtifactsを追加して、GENAI DeployGroupに渡す

🚀 CodeDeploy ステージ

技術的な動作

  • 各DeployGroupがInputArtifactsを受け取る
  • appspec.yaml を読み込む
  • 定義されたシェルスクリプトを順次実行
  • EC2インスタンスにデプロイ完了

🍱 お弁当工場で例えると

レシピ(appspec.yaml)を見ながら、盛り付け手順(シェルスクリプト)を実行。最後にお客様(EC2)に配送完了!

🆕 今回の変更点:

GENAI用のDeployGroupを追加し、専用のappspec.yamlとスクリプトを配置

☁️ CloudFormation 変更箇所

Before(変更前)
# CodeBuild OutputArtifacts OutputArtifacts: - Name: BuildOutput - Name: APDeployArtifact # CodeDeploy DeploymentGroups DeploymentGroups: - APDeploymentGroup
After(変更後)
# CodeBuild OutputArtifacts OutputArtifacts: - Name: BuildOutput - Name: APDeployArtifact - Name: GENAIDeployArtifact # 🆕追加 # CodeDeploy DeploymentGroups DeploymentGroups: - APDeploymentGroup - GENAIDeploymentGroup # 🆕追加

📁 追加が必要なファイル

📄
buildspec.yml
変更(Artifact追加)
📁
GENAI/
新規フォルダ
📋
appspec.yaml
GENAI用新規
*.sh
デプロイスクリプト

📋 3つの主要タスク

🔗 タスクの依存関係

🐳
Docker改修
セキュリティ指摘対応
⏰ 今回は触らない(時間をかけて)
⚙️
Config更新
アクセス許可設定
📌 先に着手可能
🔄
CodePipeline
GENAI環境追加
🎯 メインタスク
🐳 Docker(Dockerfile & requirements.txt)- セキュリティ指摘対策
🏠 たとえ話: 古い家(Python 3.9)から新しい家(Python 3.1X)に引っ越しする作業。家具(パッケージ)も全て新しいものに買い替え、セキュリティシステム(脆弱性対策)も最新に!

⚠️ 対応が必要な項目

  • Python 3.9 → 3.1X への移行
  • psycopg2の互換性調査(Python 3.1Xで動かない可能性)
  • SQLAlchemy 1系→2系への変更調査
  • OS / Pythonパッケージ / Linuxパッケージの全更新
  • 追加依頼モジュールへの対応
  • 動作検証モジュールの募集&検証

🔧 フォロー内容

  • 最新断面資材の提供
  • セキュリティ指摘確認方法の共有
  • OSアップデート方法(ECR AmazonLinux2023最新タグ)
  • Pythonパッケージ更新手順(バージョン無指定で最新取得)
  • Linuxパッケージ更新手順(yum installで最新取得)
📌 重要: 今回はDockerfile/requirements.txtは触らない。ただしセキュリティ指摘に備えて、ユーザーさんに時間をかけて改修版を作成いただく。
⚙️ Config(jupyter_config_dev.py)- アクセス設定
🔑 たとえ話: 会員名簿(JupyterAccessList.csv)を更新して、新しいメンバーも建物に入れるようにドアの鍵設定を変更する作業。

📝 対応項目

  • アクセス許可AD SGの追加
  • s3://bu-7/JupyterAccessList.csv の更新
  • configでCSVを読み込む処理の変更
🔧 フォロー: 最新断面資材の提供 + 更新方針の共有
🔄 CodePipeline(CloudFormation)- GENAI環境追加 ★メイン
🚚 たとえ話: 配送ルート表(CloudFormation)に「GENAIさん宅」という新しい届け先を追加する作業。伝票(buildspec)も書き換え、GENAIさん専用のレシピ(appspec)も用意!

✅ CloudFormation変更点

CodeBuild
  • GENAI用OutputArtifactsを追加①
CodeDeploy
  • GENAI DeploymentGroup追加
  • InputArtifactsを①に設定
Pipeline
  • アーティファクトの記載追加

📁 リリース資材の変更

  • buildspec.yml - Artifact記載変更
  • 新規DeployGroup用フォルダ作成
  • appspec.yaml 新規作成(GENAI用)
  • シェルスクリプト追加

📅 作業スケジュール

📋 EC2構築
来週〜再来週

手順書準備OK → 作業枠を設けて実施

☁️ CloudFormation yaml作成
並行作業

ユーザーさん側でCodePipeline構築用のyamlを作成

📦 リリース資材編集
並行作業

AP環境用設定をGENAI向けに書き換え、設定ファイル修正

🐳 Docker/requirements改修
時間をかけて

セキュリティ指摘に備えて、ユーザーさんに改修版を作成いただく(今回は触らない)

👥 責任分担マトリクス

タスク 👤 ユーザーさん 🙋 Mさん/チーム
EC2構築 実施 手順書提供
CloudFormation yaml作成 作成 方針共有
リリース資材編集 編集 最新資材提供
Docker/requirements改修 改修 セキュリティ確認方法共有
Config更新 実施 方針共有
最新資材提供 - 提供
主担当
サポート
- 該当なし

タスクチェックリスト

クリックでチェック
🔄 CodePipeline関連
CloudFormation yaml作成
CodeBuild OutputArtifacts追加
GENAI DeploymentGroup追加
buildspec.yml変更
GENAI用appspec.yaml作成
デプロイスクリプト追加
🐳 Docker関連(将来対応)
Python 3.1X移行調査
psycopg2互換性確認
SQLAlchemy 2系移行調査
セキュリティ指摘全修正
動作検証モジュール募集
⚙️ Config / EC2関連
EC2構築実施
AD SG追加
JupyterAccessList.csv更新
config読み込み処理変更

📚 用語集(Glossary)

🔄 CodePipeline
AWSのCI/CDサービス。コードの取得→ビルド→デプロイを自動化するパイプライン
🍱 お弁当工場のベルトコンベア全体
📦 Artifact
各ステージ間で受け渡される成果物(ファイル群)
🍱 調理済みの料理が入ったお弁当箱
🔨 CodeBuild
ソースコードをコンパイル・ビルドするサービス
👨‍🍳 食材を調理する調理場
🚀 CodeDeploy
EC2等にアプリケーションをデプロイするサービス
🚚 お弁当を配送する配送部門
👥 DeploymentGroup
デプロイ先のEC2インスタンスをグループ化したもの
🏠 配送先の住所グループ(Aさん宅、GENAIさん宅)
📋 appspec.yaml
CodeDeployがデプロイ時に実行する手順を定義したファイル
📖 盛り付け・配送のレシピ本
📝 buildspec.yml
CodeBuildがビルド時に実行する手順を定義したファイル
📖 調理のレシピ本
☁️ CloudFormation
AWSインフラをコード(yaml/json)で定義・構築するサービス
🏭 工場全体の設計図

Created by SSuzuki1063

AWS SAP Learning Resources