ステップ 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 を使用して Amazon S3 バケットAPIsを作成できます。バケットを作成したら、バケットとユーザーにアクセス許可を付与してください CodeDeploy。

注記

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

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

Amazon S3 バケットを作成するには (CLI)

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

aws s3 mb s3://amzn-s3-demo-bucket --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 アカウント111122223333は という名前の Amazon S3 バケット内の任意のディレクトリにファイルをアップロードできますamzn-s3-demo-bucket

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

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

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

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

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

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

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

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 プッシュコマンドを呼び出してファイルをバンドルし、リビジョンを Amazon S3 にアップロードし、アップロードされたリビジョン CodeDeploy に関する情報を に登録します。すべて 1 回のアクションで行えます。

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

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