LoginSignup
0

More than 1 year has passed since last update.

posted at

updated at

[AWS] CodeCommit + CodeBuild + CodePipeline + S3で静的コンテンツをデプロイする環境を作ってみる!

はじめに

AWSを使っている現場では働いたことあるけど環境を0から構築したことないな〜という人です。
今回は検証用に「AWSマネジメントコンソール」を使って動くものを構築した手順を簡単にメモしています!
詳細を省いているので随時追加していく予定です。

AWSにアクセスする方法

AWSにアクセスし利用する方法としては下記3パターンあるようです。

AWSマネジメントコンソール CLI SDK

3パターンの比較については下記記事などを参考

参考:https://aws.taf-jp.com/blog/18947

今回はAWSが初めてでも扱いやすそうな「AWSマネジメントコンソール」を使用します!

1. CodeCommitでリポジトリを作成する

  1. https://console.aws.amazon.com/codesuite/codecommit/home で CodeCommit コンソールを開きます。

  2. リージョンセレクタで、リポジトリを作成する AWS リージョン を選択します。

    アジアパシフィック(東京)

  3. [Repositories (リポジトリ)] ページで、[Create repository (リポジトリの作成)] を選択します。

  4. [Create repository (リポジトリの作成)] ページの [Repository name (リポジトリ名)] に、リポジトリの名前を入力します。

  5. (オプション) [Description (説明)] にリポジトリの説明を入力します。

  6. (オプション) [Add tag] を選択して 1 つ以上のリポジトリタグ (AWS リソースを整理して管理するのに役立つカスタム属性ラベル) をリポジトリに追加します。
    ※リポジトリのタグ付けについて(https://docs.aws.amazon.com/ja_jp/codecommit/latest/userguide/how-to-tag-repository.html)

  7. (オプション) このリポジトリに Java または Python コードが含まれており、CodeGuru Reviewer で分析する場合は、Enable Amazon CodeGuru Reviewer for Java and Python を選択します。

    選択しない

  8. [Create] を選択します。

参考: AWS CodeCommit リポジトリを作成する(コンソール)

2. S3にバケットを作成する

  1. [バケットを作成] - バケット名を入力する
  2. [バケットを作成] - AWS リージョンを選択する

アジアパシフィック(東京)

3.[オブジェクト所有者]

ACL 有効

4.[このバケットのブロックパブリックアクセス設定]

全てチェックを外す(「パブリックアクセスをすべてブロック」のチェックを外す)

5.「バケットを作成」をクリックする

3. CodeBuildでビルドプロジェクトを作成する

  1. AWS CodeBuild コンソール (https://console.aws.amazon.com/codesuite/codebuild/home) を開きます。

  2. ビルドプロジェクトを作成するを選択します。

  3. [プロジェクトの設定] - プロジェクト名を入力する

  4. [ソース] - ソースプロバイダを選択する

    「AWS CodeCommit」を選択する

  5. [ソース] - リポジトリを入力する

  6. [環境] - 環境イメージを選択する

    マネージド型イメージ

  7. [環境] - オペレーティングシステムを選択する

    Amazon Linux 2

  8. [環境] - サービスロール

    「新しいサービスロール」

  9. [Buildspec] - ビルド仕様を選択する

    「buildspec ファイルを使用する」

  10. [アーティファクト] - タイプを選択する

    Amazon S3

  11. [アーティファクト] - バケット名を入力する

    2. S3にバケットを作成するで作成したバケット名

  12. 「ビルドプロジェクトを作成する」をクリックする

参考:AWS CodeBuild ビルドプロジェクトの作成 (コンソール)

4. CodePipelineでビルド&デプロイのプロセスを自動化する

  1. AWS Management ConsoleCodePipeline コンソール(http://console.aws.amazon.com/codesuite/codepipeline/home)を開く

2.「パイプラインを作成する」をクリック
3. [パイプラインの設定を選択する] - パイプライン名を入力する
4. [パイプラインの設定を選択する] - サービスロールを選択する

新しいサービスロール

  1. [ソースステージを追加する] - ソースプロバイダーを選択する

    AWS CodeCommit

  2. [ソースステージを追加する] - リポジトリ名を入力する

  3. [ソースステージを追加する] - ブランチ名を入力する

  4. [ビルドステージを追加する] - プロバイダーを構築するを選択する

    AWS CodeBuild

  5. [ビルドステージを追加する] - リージョンを選択する

    アジアパシフィック(東京)

  6. [ビルドステージを追加する] - プロジェクト名を入力する

  7. [ビルドステージを追加する] - 環境変数を追加する

    ビルド時に必要な環境変数を設定 ex) API_KEYなど

  8. [ビルドステージを追加する] ビルドタイプを選択する

    「単一ビルド」

  9. [デプロイステージを追加する] 導入段階をスキップするをクリック

  10. [レビュー]パイプラインを作成するをクリック

5. ロールのアクセス権限を設定する

手順2で作成したCodeBuildのプロジェクトにS3へのアクセス権限を付与する

  1. ロール > [プロジェクト名]へアクセス
  2. 「アクセス権限」タブを選択
  3. 下記のポリシーを追加する
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kms:GenerateDataKey",
                "s3:PutObject"
            ],
            "Resource": "${S3のリソース}"
        }
    ]
}

4.Amazon S3 > [プロジェクト名]へアクセス
5.「アクセス許可」タブを選択
6.「バケットポリシー」へ下記のポリシーを追加する

{
    "Version": "2008-10-17",
    "Statement": [
        {
            "Sid": "1",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject"
            ],
            "Resource": "${S3のリソース}"
        }
    ]
}

終わりに

かなり雑に一旦書いてしまった。。!
このあとCloudFront + S3環境構築手順(CloudFront経由のみS3へのアクセスを許可する) についてもまとめる予定です。
AWSの資格勉強したくなってきたー:muscle:

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
What you can do with signing up
0