

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

# AppSpec の「ファイル」セクション (EC2/オンプレミスデプロイのみ)
<a name="reference-appspec-file-structure-files"></a>

デプロイの **Install** イベント中にインスタンスにインストールする、アプリケーションリビジョンのファイルに関する情報を CodeDeploy に提供します。このセクションは、デプロイ中にリビジョンからインスタンス上の場所にファイルをコピーする場合のみ必要です。

このセクションの構造は次のとおりです。

```
files:
  - source: source-file-location-1
    destination: destination-file-location-1
file_exists_behavior: DISALLOW|OVERWRITE|RETAIN
```

複数の `source` と `destination` ペアを設定できます。

`source` は、リビジョンからインスタンスにコピーするファイルまたはディレクトリを識別します。
+ `source` はファイルを参照し、指定されたファイルのみがインスタンスにコピーされます。
+ `source` はディレクトリを参照し、そのディレクトリのすべてのファイルがインスタンスにコピーされます。
+ `source` がシングルスラッシュ (Amazon Linux、RHEL、および Ubuntu Server のインスタンスでは "/"、Windows Server のインスタンスでは "\$1") である場合、リビジョンのすべてのファイルがインスタンスにコピーされます。

`source` で使用されているパスは `appspec.yml` ファイルに対する相対パスで、 ファイルはリビジョンのルートに存在する必要があります。リビジョンのファイル構造の詳細については、「[CodeDeploy のリビジョンを計画する](application-revisions-plan.md)」を参照してください。

`destination` は、ファイルをコピーするインスタンス上の場所を識別します。これは、`/root/destination/directory` (Linux、RHEL、Ubuntuの場合) または `c:\destination\folder` (Windows の場合) のような完全修飾パスである必要があります。

`source` と `destination` は、それぞれ文字列で指定されます。

`file_exists_behavior` 命令はオプションで、CodeDeploy がデプロイターゲットの場所にすでに存在し、前回成功したデプロイの一部ではなかったファイルを処理する方法を指定します。この設定は、以下のいずれかの値を取ることができます。
+ DISALLOW: デプロイは失敗です。オプションが何も指定されていないときは、これもデフォルトの動作となります。
+ OVERWRITE: 現在デプロイされているアプリケーションリビジョンのファイルのバージョンにより、インスタンスの既存のファイルのバージョンが置き換えられます。
+ RETAIN: インスタンスにすでに存在するファイルのバージョンは保持され、新しいデプロイの一部として使用されます。

`file_exists_behavior` 設定を使用する場合、この設定を理解してください。
+ は 1 度だけ指定でき、`files:` にリストされたすべてのファイルとディレクトリに適用されます。
+ は、 `--file-exists-behavior` AWS CLI オプションと `fileExistsBehavior` API オプション (どちらもオプション) よりも優先されます。

以下は、Amazon Linux、Ubuntu Server、または RHEL インスタンスの `files` セクションの例です。

```
files:
  - source: Config/config.txt
    destination: /webapps/Config
  - source: source
    destination: /webapps/myApp
```

この例では、次の 2 つのオペレーションが、**Install** イベント中に実行されます。

1. 使用するリビジョンの `Config/config.txt` ファイルをインスタンスの `/webapps/Config/config.txt` パスにコピーします。

1. リビジョンの `source` ディレクトリのすべてのファイルを、インスタンスの `/webapps/myApp` ディレクトリに再帰的にコピーします。

## 「files」セクションの例
<a name="reference-appspec-file-structure-files-examples"></a>

次の例は、`files` セクションを指定する方法を示しています。これらの例は、Windows Server ファイルとディレクトリ (フォルダ) 構造を示していますが、Amazon Linux、Ubuntu Server、および RHEL インスタンスに簡単に適用することができます。

**注記**  
EC2/オンプレミスデプロイのみ、`files` セクションを使用します。 AWS Lambda デプロイには適用されません。

次の例では、以下のファイルが `source` のルートのバンドルに表示されることを前提としています。
+ `appspec.yml`
+ `my-file.txt`
+ `my-file-2.txt`
+ `my-file-3.txt`

```
# 1) Copy only my-file.txt to the destination folder c:\temp.
#
files:
  - source: .\my-file.txt
    destination: c:\temp
#
# Result:
#   c:\temp\my-file.txt
#
# ---------------------
#
# 2) Copy only my-file-2.txt and my-file-3.txt to the destination folder c:\temp.
#
files:
  - source: my-file-2.txt
    destination: c:\temp
  - source: my-file-3.txt
    destination: c:\temp
#
# Result:
#   c:\temp\my-file-2.txt
#   c:\temp\my-file-3.txt
#
# ---------------------
#
# 3) Copy my-file.txt, my-file-2.txt, and my-file-3.txt (along with the appspec.yml file) to the destination folder c:\temp.
#
files:
  - source: \
    destination: c:\temp
#
# Result:
#   c:\temp\appspec.yml
#   c:\temp\my-file.txt
#   c:\temp\my-file-2.txt
#   c:\temp\my-file-3.txt
```

次の例では、`appspec.yml` が `source` のルートのバンドルに、3 つのファイルを含む `my-folder` という名前のフォルダとともに表示されることを前提としています。
+ `appspec.yml`
+ `my-folder\my-file.txt`
+ `my-folder\my-file-2.txt`
+ `my-folder\my-file-3.txt`

```
# 4) Copy the 3 files in my-folder (but do not copy my-folder itself) to the destination folder c:\temp. 
#
files:
  - source: .\my-folder
    destination: c:\temp
#
# Result:
#   c:\temp\my-file.txt
#   c:\temp\my-file-2.txt
#   c:\temp\my-file-3.txt
#
# ---------------------
#
# 5) Copy my-folder and its 3 files to my-folder within the destination folder c:\temp.
#
files:
  - source: .\my-folder
    destination: c:\temp\my-folder
#
# Result:
#   c:\temp\my-folder\my-file.txt
#   c:\temp\my-folder\my-file-2.txt
#   c:\temp\my-folder\my-file-3.txt
#
# ---------------------
#
# 6) Copy the 3 files in my-folder to other-folder within the destination folder c:\temp.
#
files:
  - source: .\my-folder
    destination: c:\temp\other-folder
#
# Result:
#   c:\temp\other-folder\my-file.txt
#   c:\temp\other-folder\my-file-2.txt
#   c:\temp\other-folder\my-file-3.txt	
#
# ---------------------
#
# 7) Copy only my-file-2.txt and my-file-3.txt to my-folder within the destination folder c:\temp.
#
files:
  - source: .\my-folder\my-file-2.txt
    destination: c:\temp\my-folder
  - source: .\my-folder\my-file-3.txt
    destination: c:\temp\my-folder
#
# Result:
#   c:\temp\my-folder\my-file-2.txt
#   c:\temp\my-folder\my-file-3.txt
#
# ---------------------
#
# 8) Copy only my-file-2.txt and my-file-3.txt to other-folder within the destination folder c:\temp.
#
files:
  - source: .\my-folder\my-file-2.txt
    destination: c:\temp\other-folder
  - source: .\my-folder\my-file-3.txt
    destination: c:\temp\other-folder
#
# Result:
#   c:\temp\other-folder\my-file-2.txt
#   c:\temp\other-folder\my-file-3.txt
#
# ---------------------
#
# 9) Copy my-folder and its 3 files (along with the appspec.yml file) to the destination folder c:\temp. If any of the files already exist on the instance, overwrite them.
#
files:
  - source: \
    destination: c:\temp
file_exists_behavior: OVERWRITE
#
# Result:
#   c:\temp\appspec.yml
#   c:\temp\my-folder\my-file.txt
#   c:\temp\my-folder\my-file-2.txt
#   c:\temp\my-folder\my-file-3.txt
```