ステップ 3: 「Hello, World!」をアップロードする Amazon S3 へのアプリケーション - AWS CodeDeploy

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

ステップ 3: 「Hello, World!」をアップロードする Amazon S3 へのアプリケーション

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

注記

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

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

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

AWS CLI、Amazon S3 コンソール、Amazon S3 API を使用して、Amazon S3 バケットを作成することができます。バケットを作成したら、バケットとその CodeDeploy ユーザーにアクセス許可を付与します。

注記

バケットの名前はすべての 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. Amazon S3 コンソール (https://console.aws.amazon.com/s3/) を開きます。

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

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

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

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

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

{ "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 バケットポリシーを生成しアタッチする方法の詳細については、「バケットポリシーの例」を参照してください。

ステップ 1: セットアップ で作成した CodeDeploy 管理ユーザーに Amazon S3 バケットにリビジョンをアップロードするアクセス許可が必要です。これを指定する 1 つの方法は、IAM ポリシーを使用してユーザーのアクセス権限セットに追加するか、IAM ロール (ユーザーに引き受けを許可する) に追加することです。次の IAM ポリシーでは、ユーザーが codedeploydemobucket という名前の Amazon S3 バケット内の任意の場所でリビジョンをアップロードできるようにします。

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":["s3:PutObject"], "Resource":"arn:aws:s3:::codedeploydemobucket/*" } ] }

IAM ポリシーの作成方法については、「IAM ユーザーガイド」の「IAM ポリシーの作成 」を参照してください。アクセス権限セットにポリシーを追加する方法については、『AWS IAM Identity Centerユーザーガイド』の「アクセス権限セットの作成」を参照してください。

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

ウェブページ、AppSpec ファイル、およびスクリプトが開発マシン上で次のように整理されていることを確認します。

c:\ |-- temp\ |--HelloWorldApp\ |-- appspec.yml |-- before-install.bat |-- index.html

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

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

注記

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

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

    cd c:\temp\HelloWorldApp
    注記

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

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

    aws deploy create-application --application-name HelloWorld_App
  3. CodeDeploy び push コマンドを呼び出してファイルをまとめてバンドルし、Amazon S3 にリビジョンをアップロードし、アップロードされたリビジョンに関する情報を 1 つの操作で CodeDeploy に登録します。

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

    このコマンドは、現在のディレクトリ (隠しファイルを除く) から、HelloWorld_App.zip という名前の 1 つのアーカイブファイルにファイルをバンドルし、リビジョンを codedeploydemobucket バケットにアップロードし、CodeDeploy でアップロードしたリビジョンについての情報を登録します。