

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

# ステップ 3: 「Hello, World\$1」をアップロードする Amazon S3 へのアプリケーション
<a name="tutorials-windows-upload-application"></a>

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

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

**Topics**
+ [Amazon S3 バケットをプロビジョニングします](#tutorials-windows-upload-application-create-s3-bucket)
+ [バケットのアプリケーションファイルを準備する](#tutorials-windows-upload-application-prepare-application-files)
+ [アプリケーションのファイルを 1 つのアーカイブファイルにバンドルし、アーカイブファイルをプッシュする](#tutorials-windows-upload-application-bundle-and-push-archive)

## Amazon S3 バケットをプロビジョニングします
<a name="tutorials-windows-upload-application-create-s3-bucket"></a>

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

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

**注記**  
バケット名は、すべての AWS アカウントで Amazon S3 全体で一意である必要があります。**amzn-s3-demo-bucket** を使用できない場合、**amzn-s3-demo-bucket** の後にダッシュと自分の名前のイニシャル、または他の一意な識別子など別のバケット名を試してください。このチュートリアル全体で、バケット名を **amzn-s3-demo-bucket** に置き換えます。  
Amazon S3 バケットは、ターゲット Amazon EC2 インスタンスが起動されるのと同じ AWS リージョンに作成する必要があります。例えば、バケットを米国東部 (バージニア北部) リージョンで作成する場合、対象の Amazon EC2 インスタンスを米国東部 (バージニア北部) リージョンで起動する必要があります。

**Topics**
+ [Amazon S3 バケット (CLI) の作成](#tutorials-windows-upload-application-create-s3-bucket-cli)
+ [Amazon S3 バケット (コンソール) の作成](#tutorials-windows-upload-application-create-s3-bucket-console)
+ [Amazon S3 バケットと AWS アカウントにアクセス許可を付与する](#tutorials-windows-upload-application-create-s3-bucket-grant-permission)

### Amazon S3 バケット (CLI) の作成
<a name="tutorials-windows-upload-application-create-s3-bucket-cli"></a>

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

```
aws s3 mb s3://amzn-s3-demo-bucket --region region
```

### Amazon S3 バケット (コンソール) の作成
<a name="tutorials-windows-upload-application-create-s3-bucket-console"></a>

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

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

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

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

### Amazon S3 バケットと AWS アカウントにアクセス許可を付与する
<a name="tutorials-windows-upload-application-create-s3-bucket-grant-permission"></a>

Amazon S3 バケットへのアップロードには、許可が必要です。Amazon S3 バケットポリシーで、これらのアクセス許可を指定できます。たとえば、次の Amazon S3 バケットポリシーでは、ワイルドカード文字 (\$1) を使用すると、 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 の検索](https://docs.aws.amazon.com/IAM/latest/UserGuide/console_account-alias.html#FindingYourAWSId)」を参照してください。

今は、Amazon S3 バケットが参加している各 Amazon EC2 インスタンスからのダウンロードリクエストを許可していることを確認するのに適した時期です。Amazon S3 バケットポリシーで、これを指定できます。例えば、次の Amazon S3 バケットポリシーでは、ワイルドカード文字 (\$1) を使用すると、ARN `arn:aws:iam::444455556666:role/CodeDeployDemo` を含む IAM インスタンスプロファイルがアタッチされた Amazon EC2 インスタンスが、`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 バケットポリシーを生成しアタッチする方法の詳細については、「[バケットポリシーの例](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html)」を参照してください。

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

------
#### [ JSON ]

****  

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

------

IAM ポリシーの作成方法については、「IAM ユーザーガイド**」の「[IAM ポリシーの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)」を参照してください。アクセス権限セットにポリシーを追加する方法については、「AWS IAM アイデンティティセンター ユーザーガイド**」の「[アクセス権限セットを作成します。](https://docs.aws.amazon.com/singlesignon/latest/userguide/howtocreatepermissionset.html)」を参照してください。

## バケットのアプリケーションファイルを準備する
<a name="tutorials-windows-upload-application-prepare-application-files"></a>

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

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

## アプリケーションのファイルを 1 つのアーカイブファイルにバンドルし、アーカイブファイルをプッシュする
<a name="tutorials-windows-upload-application-bundle-and-push-archive"></a>

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

**注記**  
バケットにオブジェクトを保存したり、バケットの内外にアプリケーションのリビジョンを転送したりする場合に課金されることがあります。詳細については、「[Amazon S3 の料金](https://aws.amazon.com/s3/pricing/)」を参照してください。

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

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

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

   ```
   aws deploy create-application --application-name HelloWorld_App
   ```

1. CodeDeploy び [push](https://docs.aws.amazon.com/cli/latest/reference/deploy/push.html) コマンドを呼び出してファイルをまとめてバンドルし、Amazon S3 にリビジョンをアップロードし、アップロードされたリビジョンに関する情報を 1 つの操作で CodeDeploy に登録します。

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

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