3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWSコンソール上の操作だけで簡単なCI/CDを構築してみた

3
Last updated at Posted at 2026-04-24

はじめに

閲覧ありがとうございます、NTTデータ先端技術の@S-takahashi1129です。
今回はインフラ構築自動化学習の一環としてCodePipelineを使い、AWSコンソール上で完結する範囲の簡単なCI/CDを組んでみました。

構成

今回はシンプルに以下のような構成を作成します。
構成図.png

処理の流れは
①CodeCommitでCloudFormationテンプレートを編集、コミット
②コミットをEventBridgeが検知し、パイプラインをアクティブ化
③ソースリポジトリからテンプレートを取得
④テンプレートの構文チェック
⑤CloudFormationでリソースを自動作成
となります。

CodeCommit-リポジトリ作成

CodeCommitのコンソール画面からリポジトリを任意の名前で作成します。
1.png

CodeCommit-CloudFormationファイルの配置

コンソール画面からリポジトリを開き、「ファイルの作成」をクリックします。
2.png

エディタに直接CloudFormationテンプレートを書き込みます。
3.png

template.yaml
AWSTemplateFormatVersion: "2010-09-09"

Resources:
  S3Bucket:
    Type: AWS::S3::Bucket
    Properties:
      BucketName: test-bucket-exp11223344-001
      VersioningConfiguration:
        Status: Enabled

CodeCommit-CodeBuild用のBuildspecファイルの配置

ColoudFormationファイルと同様に、以下の内容のファイルをリポジトリに作成します。

buildspec.yaml
version: 0.2

phases:
  install:
    runtime-versions:
      python: 3.11
    commands:
      - pip install --upgrade pip
      - pip install cfn-lint

  build:
    commands:
      - echo "=== cfn-lint ==="
      - cfn-lint template.yaml


内容としては、cfn-lintで構文チェックするだけの簡単なものです。
最終的にはリポジトリはこのような状態になります。
4.png

CodePipeline-パイプラインの作成

次にパイプラインの作成を行います。

1.作成オプションの選択する

まず、新規パイプラインの作成画面にてCategory「カスタムパイプラインを構築」を選択します。
5.png

2.パイプラインの設定を選択する

パイプラインの名前と、利用するサービスロールを設定します。

7.png

3.Add source stage

ソースステージを設定し、ソースとして先ほど作成したCodeCommitのCloudFormationテンプレートを指定します。
今回はソース変更を検知して自動で更新する構成とするため、EventBridgeの作成も有効化します。

ソースプロバイダー: AWS CodeCommit
リポジトリ名: my-repo (先ほど作成したもの)
ブランチ名: main
ソースの変更を自動的に検出するEventBridgeルールを作成: 有効化

8_source.png

4.ビルドステージを追加する - オプショナル

ビルドステージとして、ビルドプロジェクトを設定します。こちらは新規作成となるので、
「プロジェクトを作成する」から、ビルドプロジェクトの新規作成画面を表示します。
9_Build-1.png

ビルドプロジェクトの設定は基本デフォルトでよいですが、Buildspecファイルの指定については、buildspec.yamlを明示的に指定します。

9_Build-2.png

元のCodePipelineの画面に戻り、作成したビルドプロジェクトが設定されていれば成功です。

5.テスト - オプショナル

今回はスキップします。

6.デプロイステージを追加する

デプロイステージにて、CloudFormationでリソースを作成する設定を行います。

デプロイプロバイダー:CloudFormation
アクションモード:スタックを作成または更新する
スタック名:任意
テンプレート_アーティファクト名:BuildArtifact
テンプレート_ファイル名:template.yaml (CodeCommitに格納したファイル名)

10.png

サービスロールは一般的にCloudFormationが利用するロールを指定すればOKです。

動作確認

Deployまでパイプラインが成功したことを確認し、CloudFormationが実行されてリソースが作成されていることが確認できたら成功です。
11.png

自動更新の確認

CodeCommit上でテンプレートに任意の変更を加えると、自動的にパイプラインが駆動し、CloudFormationが自動実行されると思います。
また、誤ったテンプレートで更新すると、ビルドステージでエラーが発生し、Deployステージには進まない動作となります。

おわりに

以上です。
今回の例は非常に簡易的なもので、実務で使う場合はしっかりGitと連携させたり、インフラ更新前に承認フローをいれたり等もっと作りこむことになります。
Pipeline系サービスの感触を知りたい方の助けになれば幸いです。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?