ステップ 3: アプリケーションを WordPress Amazon S3 にアップロードする - AWS CodeDeploy

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ステップ 3: アプリケーションを WordPress Amazon S3 にアップロードする

次に、ソースコンテンツを準備し、 がデプロイ CodeDeploy できる場所にアップロードします。次の手順では、Amazon S3 バケットをプロビジョニングしてバケット用のアプリケーションリビジョンのファイルを準備し、リビジョンのファイルをバンドルしてから、そのリビジョンをバケットにプッシュする方法を示します。

注記

このチュートリアルでは説明していませんが、 CodeDeploy を使用して GitHub リポジトリからインスタンスにアプリケーションをデプロイできます。詳細については、「 CodeDeploy との統合 GitHub」を参照してください。

Amazon S3 バケットをプロビジョニングします

ストレージコンテナあるいは Amazon S3 バケット を作成、または既存のバケットを使用します。バケットにリビジョンをアップロードできること、およびデプロイで使用する Amazon EC2 インスタンスがバケットからリビジョンをダウンロードできることを確認します。

AWS CLI、Amazon S3 コンソール、または Amazon S3 APIs を使用してAmazon S3バケットを作成できます。バケットを作成したら、バケットとその AWS アクセス許可を付与します。

注記

バケット名は、すべての AWS アカウントで Amazon S3 全体で一意である必要があります。codedeploydemobucket を使用できない場合、codedeploydemobucket の後にダッシュと自分の名前のイニシャル、または他の一意な識別子など別のバケット名を試してください。このチュートリアル全体で、バケット名を codedeploydemobucket に置き換えます。

Amazon S3 バケットは、ターゲット Amazon EC2 インスタンスが起動されるのと同じ AWS リージョンに作成する必要があります。例えば、バケットを米国東部 (バージニア北部) リージョンで作成する場合、対象の Amazon EC2 インスタンスを米国東部 (バージニア北部) リージョンで起動する必要があります。

Amazon S3 バケット (CLI) の作成

mb コマンドを呼び出して、codedeploydemobucket という名前の Amazon S3 バケットを作成します。

aws s3 mb s3://codedeploydemobucket --region region

Amazon S3 バケット (コンソール) の作成

  1. https://console.aws.amazon.com/s3/でAmazon S3 コンソールを開きます。

  2. Amazon S3 コンソールで [バケットの作成] を選択します。

  3. [Bucket name] ボックスで、バケットの名前を入力します。

  4. [Region] リストで、ターゲットリージョンを選択し、[Create] を選択します。

Amazon S3 バケットと AWS アカウントにアクセス許可を付与する

Amazon S3 バケットへのアップロードには、許可が必要です。Amazon S3 バケットポリシーで、これらのアクセス許可を指定できます。例えば、次の Amazon S3 バケットポリシーでは、ワイルドカード文字 (*) を使用すると、 AWS アカウント111122223333は という名前の Amazon S3 バケット内の任意のディレクトリにファイルをアップロードできますcodedeploydemobucket

{ "Statement": [ { "Action": [ "s3:PutObject" ], "Effect": "Allow", "Resource": "arn:aws:s3:::codedeploydemobucket/*", "Principal": { "AWS": [ "111122223333" ] } } ] }

AWS アカウント ID を表示するには、AWS 「アカウント ID の検索」を参照してください。

今は、Amazon S3 バケットが参加している各 Amazon EC2 インスタンスからのダウンロードリクエストを許可していることを確認するのに適した時期です。Amazon S3 バケットポリシーで、これを指定できます。例えば、次の Amazon S3 バケットポリシーでは、ワイルドカード文字 (*) を使用すると、ARN arn:aws:iam::444455556666:role/CodeDeployDemo を含む IAM インスタンスプロファイルがアタッチされた Amazon EC2 インスタンスが、codedeploydemobucket という名前の Amazon S3 バケットの任意のディレクトリからファイルをダウンロードすることを許可します。

{ "Statement": [ { "Action": [ "s3:Get*", "s3:List*" ], "Effect": "Allow", "Resource": "arn:aws:s3:::codedeploydemobucket/*", "Principal": { "AWS": [ "arn:aws:iam::444455556666:role/CodeDeployDemo" ] } } ] }

Amazon S3 バケットポリシーを生成しアタッチする方法の詳細については、「バケットポリシーの例」を参照してください。

IAM ポリシーを作成しアタッチする方法については、「ポリシーの使用」を参照してください。

バケットのアプリケーションファイルを準備する

WordPress アプリケーションファイル、 AppSpec ファイル、およびスクリプトが、次のような開発マシンで整理されていることを確認します。

/tmp/ |--WordPress/ |-- appspec.yml |-- scripts/ | |-- change_permissions.sh | |-- create_test_db.sh | |-- install_dependencies.sh | |-- start_server.sh | |-- stop_server.sh |-- wp-admin/ | |-- (various files...) |-- wp-content/ | |-- (various files...) |-- wp-includes/ | |-- (various files...) |-- index.php |-- license.txt |-- readme.html |-- (various files ending with .php...)

アプリケーションのファイルを 1 つのアーカイブファイルにバンドルし、アーカイブファイルをプッシュする

WordPress アプリケーションファイルと AppSpec ファイルをアーカイブファイル (アプリケーションリビジョン と呼ばれる) にバンドルします。

注記

バケットにオブジェクトを保存したり、バケットの内外にアプリケーションのリビジョンを転送したりする場合に課金されることがあります。詳細については、「Amazon S3 の料金」を参照してください。

  1. 開発マシンで、ファイルが保存されたフォルダに切り替えます。

    cd /tmp/WordPress
    注記

    このフォルダに切替わらなければ、ファイルのバンドルは現在のフォルダで起動されます。例えば、現在のフォルダが /tmp ではなく /tmp/WordPress である場合、バンドルは、tmp サブフォルダ以上を含む可能性のある WordPress フォルダ内のファイルとサブフォルダから開始します。

  2. create-application コマンドを呼び出して、WordPress_App という名前の新しいアプリケーションを登録します。

    aws deploy create-application --application-name WordPress_App
  3. CodeDeploy プッシュコマンドを呼び出してファイルをバンドルし、リビジョンを Amazon S3 にアップロードし、アップロードされたリビジョン CodeDeploy に関する情報を に登録します。これらはすべて 1 回のアクションで完了します。

    aws deploy push \ --application-name WordPress_App \ --s3-location s3://codedeploydemobucket/WordPressApp.zip \ --ignore-hidden-files

    このコマンドは、現在のディレクトリ (非表示のファイルを除く) のファイルを という名前の単一のアーカイブファイルにバンドルしWordPressApp.zip、リビジョンをcodedeploydemobucketバケットにアップロードし、アップロードされたリビジョン CodeDeploy に関する情報を に登録します。