Help us understand the problem. What is going on with this article?

AWS S3+CodeDeployでデプロイしてみたよ

More than 1 year has passed since last update.

必要ソフトの準備(Python, pip, AWS CLI || git)

CodeDeployを使用するにあたってソースコードを何処から持ってくる必要がありますが、CodeDeployで選べるのはS3かGitHubのどちらかとなります。

  • piplineを使えばcodecommit等も使えますが、今回はS3での手順となります。
  • アップ先にS3を使用する場合は、AWSコンソールから直接アップするかAWSCLIのコマンドでアップする方法があります。
    AWS CLIのインストール

AWS設定

ファイルアップロード用 S3バケットの作成

  • バケット名:codedeploy-bucket

CodeDeploy から EC2 や AutoScaling などの情報を参照するための権限(IAM Role)を作成

  • AWS の Management Colsole から IAM を選択し Role を作成します。「IAM → ロール → ロールの作成 → CodeDeploy → ユースケースの選択(CodeDeploy) → 次(アクセス権限) → 次(確認) → ロールの作成」

S3からファイルを取得する権限(IAM Role)を作成しEC2にアタッチ

  • S3から情報取得するロールの作成:「IAM → ロール → ロールの作成 → EC2 → 次(アクセス権限) → AmazonS3ReadOnlyAccessを選択 → 次(確認) → ロールの作成」
  • EC2にロールをアタッチ:「ec2管理 → インスタンス選択 → アクション → インスタンスの設定 → IAMロールの割当て/置換」からアタッチ

EC2にAWS CodeDeploy エージェントをインストール(CodeDeployはrubyで動いてるので入って無ければrubyを入れる。例ではwgetも使用)

yum -y install ruby
yum -y install wget
cd /home/ec2-user
wget https://aws-codedeploy-ap-northeast-1.s3.amazonaws.com/latest/install
chmod +x ./install
sudo ./install auto

※ bucket-nameは作成したS3バケットと同じaws-codedeploy-ap-northeast-1(東京)
※ CodeDeploy エージェントをインストールすると /var/log/aws/codedeploy-agent/ にログが出力されるようになる
参考: https://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/codedeploy-agent-operations-install-linux.html

CodeDeployエージェント起動

sudo service codedeploy-agent start
sudo service codedeploy-agent status

デプロイ設定

アップ対象のフォルダ内にappspec.yml を作成(下記例は最低限)

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

※参考:https://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/reference-appspec-file.html

アプリケーション作成

  • CodeDeploy の Console画面にて、デプロイ → アプリケーション → アプリケーションの作成

デプロイグループの作成

デプロイ

  1. S3へソースのアップ。
aws deploy push --application-name hoge --description "hoge" --ignore-hidden-files --s3-location s3://codedeploy-bucket/hoge.zip --source .

※「AWS CLI」でS3にアップする場合
2. AWSコンソール画面からCodeDeploy → デプロイ → アプリケーション → アプリケーション選択 → デプロイタブ → デプロイの作成
3. デプロイグループ:AWS設定で作成したデプロイグループ選択
4. リビジョンタイプ:今回は「S3に格納・・・」を選択
5. リビジョンの場所:アップしたリビジョンを選択 ※手動デプロイだと対象が分かり辛い
6. 各種動作を設定して、「デプロイの作成」でデプロイ実行

まとめ

CodeDeploy単体だと、都度ソースを手動でアップしデプロイを実行しなければいけませんので非常に面倒です。デプロイ対象の判別も目視なのでミスが発生してしまいそうです。

CodePiplineを使えば自動デプロイも可能でその辺が見事に解消されるので、そちらも合せて使う事をお勧めします。
CodeCommit+CodeDeploy+CodePiplineでデプロイを自動化

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
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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
ユーザーは見つかりませんでした