0
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?

More than 1 year has passed since last update.

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

Last updated at Posted at 2021-12-10

はじめに

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 リージョン を選択します。

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

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

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

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

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

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

選択しない

  1. [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」を選択する

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

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

マネージド型イメージ

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

Amazon Linux 2

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

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

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

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

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

Amazon S3

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

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

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

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

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

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

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

新しいサービスロール

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

AWS CodeCommit

  1. [ソースステージを追加する] - リポジトリ名を入力する
  2. [ソースステージを追加する] - ブランチ名を入力する
  3. [ビルドステージを追加する] - プロバイダーを構築するを選択する

AWS CodeBuild

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

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

  1. [ビルドステージを追加する] - プロジェクト名を入力する
  2. [ビルドステージを追加する] - 環境変数を追加する

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

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

「単一ビルド」

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

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

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:

0
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
0
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?