LoginSignup
17
11

More than 5 years have passed since last update.

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

Last updated at Posted at 2019-01-29

必要ソフトの準備(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でデプロイを自動化

17
11
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
17
11