1
Help us understand the problem. What are the problem?

posted at

updated at

AWS CodeDeploy でEC2にファイルをデプロイ

AWSのCodeDeployサービスを使用して、EC2にファイルをデプロイ
現行の環境で、複数ファイルをデプロイする際での手順。
(続けてCodePiplineについても追記)

VPC作成(ネットに接続しているVPCが既にあれば飛ばしてOK)

VPCダッシュボード>VPCウィザードを起動>「パブリックとプライベートサブネットを持つVPC」で選択
IPv4CIDRブロック:10.0.0.0/16
VPC名:わかりやすい任意の名前
パブリックサブネットIPv4CIDR:10.0.0.0/24
パブリックサブネット名:わかりやすい任意の名前
プライベートサブネットIPv4CIDR:10.0.0.1/24
アベイラビリティーゾーン:ap-northeast-1a
プライベートサブネット名:わかりやすい任意の名前
Elastic IP 割り当て ID:用意したElasticIPを選択する(別タブでVPC>Elastic IP>Elastic IP アドレスの割り当て>割り当て)

IAMロール作成

一つ目作成

IAMダッシュボード>ロール>ロールを作成
ユースケースの選択:EC2
ロールの作成:awscodedeployroleを検索して選択
任意のタグと名前(EC2Codedeployroleなど)を付けて作成

二つ目作成

IAMダッシュボード>ロール>ロールを作成
ユースケースの選択:EC2
ロールの作成:awscodedeployroleを検索して選択
任意のタグと名前(deploygroupCodedeployroleなど)を付けて作成

*ロール>作成したロールを選択>信頼関係のタブ>信頼関係の編集
ポリシードキュメント内のService項目を以下に書き換える

"Service": "codedeploy.ap-northeast-1.amazonaws.com"

EC2起動

EC2ダッシュボード>インスタンスを起動

AMI

Amazon Linux 2

インスタンスタイプ

t2.micro

インスタンスの設定

ネットワークとサブネット:インターネットに接続できるもの
自動割り当てパブリック IP:有効
IAM ロール:今回作成したロール

ストレージの追加

デフォルトの汎用SSD

タグの追加

わかりやすい任意の名タグ

セキュリティグループの設定

セキュリティグループの割り当て:新しいセキュリティグループを作成する
セキュリティグループ名:[アプリ名]-sg など
説明:セキュリティグループ名と同じでよい
ルールの追加:HTTP 0.0.0.0/0

インスタンスにSSHで接続する

*WindowsはTeraTermなどを起動
*つなげたいインスタンスのパブリックIPv4アドレスをコピー
*ホスト(T):[インスタンスのIPv4アドレス]
*ユーザー名:ec2-usr
*RSA/DSA/ECDSA/ED25519鍵を使う
*インスタンスを起動したときにダウンロードしたキーペアを選択

ターミナルの操作

vi install.shでviエディタへ

以下を貼り付けて保存

sudo yum update
sudo yum install ruby
sudo yum install wget

#!/bin/bash
CODEDEPLOY_BIN="/opt/codedeploy-agent/bin/codedeploy-agent"
$CODEDEPLOY_BIN stop
yum erase codedeploy-agent -y
cd /home/ec2-user
wget https://aws-codedeploy-ap-northeast-1.s3.ap-northeast-1.amazonaws.com/latest/install
chmod +x ./install
sudo ./install auto

以下コマンドで作成したシェルスクリプトに権限を付与
chmod +x install.sh
権限が付与されていることを確認
ll install.sh
シェルスクリプトを実行
./install.sh

LUMPをインストールしておく

sudo amazon-linux-extras install -y lamp-mariadb10.2-php7.2 php7.2
sudo yum install -y httpd mariadb-server
sudo systemctl start httpd
sudo systemctl enable httpd

githubの操作

自分のgithub上で新しいリポジトリを作成

gitの操作

gitbashでこちらのAWSのgihubリポジトリのファイルをダウンロードする

git clone git clone https://github.com/aws-samples/aws-codedeploy-samples.git
*appspec.yml内のsourceを書き換える(以下PHPアプリケーションなどの複数ファイルの場合)

version: 0.0
os: linux
files:
- source: /
destination: /var/www/html/

*必要に応じて新しいディレクトリを用意する

mkdir ディレクトリ名
cd ディレクトリ名

*ダウンロードしてきたscriptsディレクトリとappspec.yml、デプロイしたいPHPアプリケーションを一つのディレクトリにまとめる
*githubリポジトリに上記ディレクトリの中身をpush

git init
git add .
git commit -m "first commit"
git branch -M main
git remote add origin https://github.com/アカウント名/リポジトリ名.git
git push -u origin main

AWS CodeDeployの設定

アプリケーションの作成

Codedeployのコンソール>アプリケーションの作成
アプリケーション名:任意の名前
コンピューティングプラットフォーム:EC2/オンプレミス

デプロイグループの作成

アプリケーション名:任意の名前
サービスロール:今回作成したIAMロール名のサービスロールを選択
デプロイタイプ:インプレース
環境設定:Amazon EC2 インスタンス
インスタンスに設定したタグを指定する
ロードバランサー:有効にするのチェックをはずす
そのほかはデフォルトでデプロイグループの作成

デプロイの作成

アプリケーションは GitHub に格納されています を選択
GitHub トークン名:GitHubアカウント名をで検索し、GitHubアカウントと接続 をクリック
リポジトリ名:アカウント/リポジトリ名
コミットID:最新のコミットIDを入力

「成功」が表示されたらデプロイ完了!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
1
Help us understand the problem. What are the problem?