

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

# AWSTOE コンポーネントマネージャーでサポートされるアクションモジュール
<a name="toe-action-modules"></a>

EC2 Image Builder などのイメージ構築サービスは、 AWSTOE アクションモジュールを使用して、カスタマイズされたマシンイメージの構築とテストに使用される EC2 インスタンスの設定に役立ちます。このセクションでは、一般的に使用される AWSTOE アクションモジュールの機能と、それらの設定方法について説明します。

コンポーネントは、プレーンテキストの YAML ドキュメントを使用して作成されます。ドキュメントの構文については[カスタム AWSTOE コンポーネントのコンポーネントドキュメントフレームワークを使用する](toe-use-documents.md)を参照。

**注記**  
すべてのアクションモジュールは、Linux の `root` と Windows の `NT Authority\SYSTEM` の両方で、実行時に Systems Manager エージェントと同じアカウントを使用します。

以下のクロスリファレンスは、実行されるアクションのタイプ別にアクションモジュールを分類したものです。

 

**一般実行**
+ [Assert (Linux、Windows、macOS)](#action-modules-assertion)
+ [ExecuteBash (Linux、macOS)](#action-modules-executebash)
+ [ExecuteBinary (Linux、Windows、macOS)](#action-modules-executebinary)
+ [ExecuteDocument (Linux、Windows、macOS)](#action-modules-executedocument)
+ [ExecutePowerShell (Windows)](#action-modules-executepowershell)

 

**ファイルダウンロードとアップロード**
+ [S3Download (Linux、Windows、macOS)](#action-modules-s3download)
+ [S3Upload (Linux、Windows、macOS)](#action-modules-s3upload)
+ [WebDownload (Linux、Windows、macOS)](#action-modules-webdownload)

 

**ファイルシステムの操作**
+ [AppendFile (Linux、Windows、macOS)](#action-modules-appendfile)
+ [CopyFile (Linux、Windows、macOS)](#action-modules-copyfile)
+ [CopyFolder (Linux、Windows、macOS)](#action-modules-copyfolder)
+ [CreateFile (Linux、Windows、macOS)](#action-modules-createfile)
+ [CreateFolder (Linux、Windows、macOS)](#action-modules-createfolder)
+ [CreateSymlink (Linux、Windows、macOS)](#action-modules-createsymlink)
+ [DeleteFile (Linux、Windows、macOS)](#action-modules-deletefile)
+ [DeleteFolder (Linux、Windows、macOS)](#action-modules-deletefolder)
+ [ListFiles (Linux、Windows、macOS)](#action-modules-listfiles)
+ [MoveFile (Linux、Windows、macOS)](#action-modules-movefile)
+ [MoveFolder (Linux、Windows、macOS)](#action-modules-movefolder)
+ [ReadFile (Linux、Windows、macOS)](#action-modules-readfile)
+ [SetFileEncoding (Linux、Windows、macOS)](#action-modules-setfileencoding)
+ [SetFileOwner (Linux、Windows、macOS)](#action-modules-setfileowner)
+ [SetFolderOwner (Linux、Windows、macOS)](#action-modules-setfolderowner)
+ [SetFilePermissions (Linux、Windows、macOS)](#action-modules-setfilepermissions)
+ [SetFolderPermissions (Linux、Windows、macOS)](#action-modules-setfolderpermissions)

 

**ソフトウェアインストールアクション**
+ [InstallMSI (Windows)](#action-modules-install-msi)
+ [UninstallMSI (Windows)](#action-modules-uninstall-msi)

 

**システムアクション**
+ [Reboot (Linux、Windows)](#action-modules-reboot)
+ [SetRegistry (Windows)](#action-modules-setregistry)
+ [UpdateOS (Linux、Windows)](#action-modules-updateos)

## 汎用実行モジュール
<a name="action-modules-general-execution"></a>

以下のセクションでは、コマンドを実行したり、実行ワークフローを制御したりするアクションモジュールの詳細について説明します。

**Topics**
+ [Assert (Linux、Windows、macOS)](#action-modules-assertion)
+ [ExecuteBash (Linux、macOS)](#action-modules-executebash)
+ [ExecuteBinary (Linux、Windows、macOS)](#action-modules-executebinary)
+ [ExecuteDocument (Linux、Windows、macOS)](#action-modules-executedocument)
+ [ExecutePowerShell (Windows)](#action-modules-executepowershell)

### Assert (Linux、Windows、macOS)
<a name="action-modules-assertion"></a>

**Assert** アクションモジュールは、[比較演算子](toe-comparison-operators.md)または[論理演算子](toe-logical-operators.md)を入力として使用して、値の比較を実行します。演算子式の結果 (true または false) が、そのステップの全体的な成功または失敗ステータスを示します。

比較演算子または論理演算子式が `true` に評価された場合、ステップは `Success` としてマークされます。それ以外の場合、ステップは `Failed` としてマークされます。ステップが失敗した場合は、`onFailure` パラメータによってステップの結果が決定されます。


**Input**  

| キー名 | 説明 | タイプ | 必須 | 
| --- | --- | --- | --- | 
| input | 比較演算子または論理演算子を 1 つ含みます。論理演算子には複数の比較演算子を含めることができます。 | 演算子に応じて可変 | はい | 

**入力の例: `stringEquals` 比較演算子を使用した単純な比較**

この例は `true` に評価されます。

```
- name: StringComparison
  action: Assert
  inputs:
    stringEquals: '2.1.1'
    value: '{{ validate.ApplicationVersion.outputs.stdout }}'
```

**入力の例: `patternMatches` 比較演算子を使用した正規表現による比較**

これらの例はすべて `true` に評価されます。

```
- name: Letters only
  action: Assert
  inputs:
    patternMatches: '^[a-zA-Z]+$'
    value: 'ThisIsOnlyLetters'

- name: Letters and spaces only
  action: Assert
  inputs:
    patternMatches: '^[a-zA-Z\s]+$'
    value: 'This text contains spaces'
  
- name: Numbers only
  action: Assert
  inputs:
    patternMatches: '^[0-9]+$'
    value: '1234567890'
```

**入力例: 論理演算子と連鎖変数を使用してネストされた比較**

次の例は、連鎖変数との比較を使用する論理演算子を含む、ネストされた比較を示しています。`Assert` は、次のいずれかが true の場合に `true` に評価されます。
+ `ApplicationVersion` は `2.0` より大きく、`CPUArchitecture` は `arm64` に等しくなります。
+ `CPUArchitecture` は `x86_64` に等しくなります。

```
- name: NestedComparisons
  action: Assert
  inputs:
    or: # <- first level deep
      - and: # <- second level deep
          - numberGreaterThan: 2.0 # <- third level deep
            value: '{{ validate.ApplicationVersion.outputs.stdout }}'
          - stringEquals: 'arm64'
            value: '{{ validate.CPUArchitecture.outputs.stdout }}'
      - stringEquals: 'x86_64'
        value: '{{ validate.CPUArchitecture.outputs.stdout }}'
```

**出力:**

`Assert` の出力は、ステップの成功または失敗を示します。

### ExecuteBash (Linux、macOS)
<a name="action-modules-executebash"></a>

**ExecuteBash** アクションモジュールを使用すると、インラインシェルコード/コマンドで bash スクリプトを実行できます。このモジュールは Linux をサポートします。

コマンドブロックで指定したすべてのコマンドと命令はファイル (例:`input.sh`) に変換され、bash シェルで実行されます。シェルファイルを実行した結果がステップの終了コードです。

**ExecuteBash** モジュールは、スクリプトが終了コード `194` で終了した場合、システムの再起動を処理します。起動すると、アプリケーションは以下のいずれかのアクションを実行します。
+ Systems Manager エージェントによって実行された場合、アプリケーションは終了コードを呼び出し側に渡します。Systems Manager エージェント はシステムの再起動を処理し、「[スクリプトからのマネージドインスタンスの再起動](https://docs.aws.amazon.com/systems-manager/latest/userguide/send-commands-reboot.html)」で説明されているように、再起動を開始したのと同じステップを実行します。
+ アプリケーションは現在の `executionstate` を保存し、アプリケーションを再実行するための再起動トリガーを設定し、システムを再起動します。

システムの再起動後、アプリケーションは再起動を開始したのと同じステップを実行します。この機能が必要な場合は、同じシェルコマンドを複数回呼び出しても処理できる同等のスクリプトを記述する必要があります。


**Input**  

| キー名 | 説明 | タイプ | 必須 | 
| --- | --- | --- | --- | 
| commands | bash 構文に従って実行する命令またはコマンドのリストが含まれています。複数行の YAML を使用できます。 | リスト | はい | 

**入力例: 再起動前と再起動後**

```
name: ExitCode194Example
description: This shows how the exit code can be used to restart a system with ExecuteBash
schemaVersion: 1.0
phases:
  - name: build
    steps:
      - name: RestartTrigger
        action: ExecuteBash
        inputs:
          commands:
            - |
              REBOOT_INDICATOR=/var/tmp/reboot-indicator
              if [ -f "${REBOOT_INDICATOR}" ]; then
                echo 'The reboot file exists. Deleting it and exiting with success.'
                rm "${REBOOT_INDICATOR}"
                exit 0
              fi
              echo 'The reboot file does not exist. Creating it and triggering a restart.'
              touch "${REBOOT_INDICATOR}"
              exit 194
```


**Output**  

| フィールド | 説明 | タイプ | 
| --- | --- | --- | 
| stdout | コマンド実行の標準出力。 | string | 

再起動を開始し、`194` アクションモジュールの一部として終了コードを返すと、再起動を開始したのと同じアクションモジュールステップでビルドが再開されます。終了コードなしで再起動を開始すると、ビルドプロセスが失敗する可能性があります。

**出力例: 再起動前 (初めてドキュメントから)**

```
{
	“stdout”: “The reboot file does not exist. Creating it and triggering a restart."
}
```

**出力例: 再起動後 (2 回目にドキュメントを通過)**

```
{
	“stdout”: “The reboot file exists. Deleting it and exiting with success."
}
```

### ExecuteBinary (Linux、Windows、macOS)
<a name="action-modules-executebinary"></a>

**ExecuteBinary** アクションモジュールを使うと、コマンドライン引数のリストを使ってバイナリファイルを実行することができます。

**ExecuteBinary** モジュールは、バイナリファイルが終了コード `194` (Linux) または `3010` (Windows) で終了した場合にシステムの再起動を処理します。この場合、アプリケーションは以下のいずれかのアクションを実行する：
+ Systems Manager エージェントによって実行された場合、アプリケーションは終了コードを呼び出し側に渡します。Systems Manager エージェントはシステムの再起動を処理し、[スクリプトから管理対象インスタンスを再起動する](https://docs.aws.amazon.com/systems-manager/latest/userguide/send-commands-reboot.html)で説明したように、再起動を開始したのと同じステップを実行します。
+ アプリケーションは現在の `executionstate` を保存し、アプリケーションを再実行するための再起動トリガーを設定し、システムを再起動します。

システムの再起動後、アプリケーションは再起動を開始したのと同じステップを実行します。この機能が必要な場合は、同じシェルコマンドを複数回呼び出しても処理できる同等のスクリプトを記述する必要があります。


**Input**  

| キー名 | 説明 | タイプ | 必須 | 
| --- | --- | --- | --- | 
| path | 実行用のバイナリファイルへのパス。 | String | はい | 
| arguments | バイナリの実行時に使用するコマンドライン引数のリストが含まれています。 | 文字列リスト | いいえ | 

**入力例:.NET のインストール**

```
  - name: "InstallDotnet"
    action: ExecuteBinary
    inputs:
      path: C:\PathTo\dotnet_installer.exe
      arguments:
        - /qb
        - /norestart
```


**Output**  

| フィールド | 説明 | タイプ | 
| --- | --- | --- | 
| stdout | コマンド実行の標準出力。 | string | 

**出力例**

```
{
	"stdout": "success"
}
```

### ExecuteDocument (Linux、Windows、macOS)
<a name="action-modules-executedocument"></a>

**ExecuteDocument** アクションモジュールは、ネストされたコンポーネントドキュメントをサポートし、1 つのドキュメントから複数のコンポーネントドキュメントを実行できるようにします。 AWSTOE 実行時に入力パラメータで渡されたドキュメントを検証します。

**制限事項**
+ このアクションモジュールは 1 回だけ実行され、再試行はできません。また、タイムアウト制限を設定するオプションもありません。**ExecuteDocument** は次のデフォルト値を設定し、変更しようとするとエラーを返します。
  + `timeoutSeconds`:-1
  + `maxAttempts`: 1
**注記**  
これらの値は空白のままにしておくと、 はデフォルト値 AWSTOE を使用します。
+ 文書のネストは最大 3 レベルまで可能ですが、それ以上はできません。最上位レベルはネストされていないため、3 レベルのネストは 4 つのドキュメントレベルに相当します。このシナリオでは、最下位の文書は他の文書を呼んではならない。
+ コンポーネントドキュメントを繰り返し実行することはできません。ループ構造の外部で自身を呼び出したり、現在の実行チェーンの上位にある別のドキュメントを呼び出したりするドキュメントは、サイクルを開始して無限ループに陥る可能性があります。 AWSTOE は周期的な実行を検出すると、実行を停止し、失敗を記録します。

![\[ExecuteDocument アクションモジュールのネストレベルの制限。\]](http://docs.aws.amazon.com/ja_jp/imagebuilder/latest/userguide/images/toe-component-document-nesting.png)


コンポーネントドキュメント自体を実行しようとしたり、現在の実行チェーンで上位にあるコンポーネントドキュメントを実行しようとしたりすると、実行は失敗します。

**Input** (入力)


| キー名 | 説明 | タイプ | 必須 | 
| --- | --- | --- | --- | 
| document |  コンポーネントドキュメントのパス。有効なオペレーションは以下のとおりです。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/imagebuilder/latest/userguide/toe-action-modules.html)  | String | はい | 
| document-s3-bucket-owner |  コンポーネントドキュメントが保存されている S3 バケットの S3 バケット所有者のアカウント ID。*(コンポーネントドキュメントで S3 URI を使用している場合にお勧めです。)*  | String | いいえ | 
| phases |  コンポーネントドキュメントで実行するフェーズ。カンマ区切りのリストで指定します。フェーズが指定されていない場合は、すべてのフェーズが実行されます。  | String | いいえ | 
| parameters |  実行時にキーと値のペアとしてコンポーネントドキュメントに渡される入力パラメータ。  | パラメータマップリスト | いいえ | 

**パラメータマップ入力**


| キー名 | 説明 | タイプ | 必須 | 
| --- | --- | --- | --- | 
| name |  **ExecuteDocument** アクションモジュールが実行しているコンポーネントドキュメントに渡す入力パラメータの名前。  | String | はい | 
| value |  入力パラメータの値。  | String | はい | 

**入力例**  
以下の例は、インストールパスによってコンポーネントドキュメントに入力される内容のバリエーションを示しています。

**入力例:ローカルドキュメントパス**

```
# main.yaml
schemaVersion: 1.0

phases:
  - name: build
    steps:
      - name: ExecuteNestedDocument
        action: ExecuteDocument
        inputs:
          document: Sample-1.yaml
          phases: build
          parameters:
            - name: parameter-1
              value: value-1
            - name: parameter-2
              value: value-2
```

**入力例:ドキュメントパスとしての S3 URI**

```
# main.yaml
schemaVersion: 1.0

phases:
  - name: build
    steps:
      - name: ExecuteNestedDocument
        action: ExecuteDocument
        inputs:
          document: s3://my-bucket/Sample-1.yaml
          document-s3-bucket-owner: 123456789012
          phases: build,validate
          parameters:
            - name: parameter-1
              value: value-1
            - name: parameter-2
              value: value-2
```

**入力例:ドキュメントパスとしてEC2 Image Builder コンポーネント ARN**

```
# main.yaml
schemaVersion: 1.0

phases:
  - name: build
    steps:
      - name: ExecuteNestedDocument
        action: ExecuteDocument
        inputs:
          document: arn:aws:imagebuilder:us-west-2:aws:component/Sample-Test/1.0.0
          phases: test
          parameters:
            - name: parameter-1
              value: value-1
            - name: parameter-2
              value: value-2
```

**ForEach ループを使用してドキュメントを実行する**

```
# main.yaml
schemaVersion: 1.0

phases:
  - name: build
    steps:
      - name: ExecuteNestedDocument
        action: ExecuteDocument
        loop:
          name: 'myForEachLoop'
          forEach:
            - Sample-1.yaml
            - Sample-2.yaml
        inputs:
          document: "{{myForEachLoop.value}}"
          phases: test
          parameters:
            - name: parameter-1
              value: value-1
            - name: parameter-2
              value: value-2
```

**For ループを使ってドキュメントを実行する**

```
# main.yaml
schemaVersion: 1.0

phases:
  - name: build
    steps:
      - name: ExecuteNestedDocument
        action: ExecuteDocument
        loop:
          name: 'myForLoop'
          for:
            start: 1
            end: 2
            updateBy: 1
        inputs:
          document: "Sample-{{myForLoop.value}}.yaml"
          phases: test
          parameters:
            - name: parameter-1
              value: value-1
            - name: parameter-2
              value: value-2
```

**Output**  
AWSTOE は、実行される`detailedoutput.json`たびに という出力ファイルを作成します。このファイルには、実行中に呼び出される各コンポーネントドキュメントのすべてのフェーズとステップに関する詳細が含まれています。**ExecuteDocument** アクションモジュールでは、`outputs` で実行時の簡単な概要がフィールドに表示され、`detailedOutput` でアクションモジュールで実行されるフェーズ、ステップ、ドキュメントの詳細も表示されます。

```
{
	\"executedStepCount\":1,\"executionId\":\"97054e22-06cc-11ec-9b14-acde48001122\",\"failedStepCount\":0,\"failureMessage\":\"\",\"ignoredFailedStepCount\":0,\"logUrl\":\"\",\"status\":\"success\"
}",
```

各コンポーネントドキュメントの出力サマリーオブジェクトには、次に示すように、以下の詳細とサンプル値が含まれています。
+ executedStepCount":1
+ "executionId":"12345a67-89bc-01de-2f34-abcd56789012"
+ "failedStepCount":0
+ "failureMessage":""
+ "ignoredFailedStepCount":0
+ "logUrl":""
+ "status":"success"

**出力例**  
次の例は、ネストされた実行が発生した場合の **ExecuteDocument** アクションモジュールからの出力を示しています。この例では、`main.yaml` コンポーネントドキュメントは `Sample-1.yaml` コンポーネントドキュメントを正常に実行します。

```
{
    "executionId": "12345a67-89bc-01de-2f34-abcd56789012",
    "status": "success",
    "startTime": "2021-08-26T17:20:31-07:00",
    "endTime": "2021-08-26T17:20:31-07:00",
    "failureMessage": "",
    "documents": [
        {
            "name": "",
            "filePath": "main.yaml",
            "status": "success",
            "description": "",
            "startTime": "2021-08-26T17:20:31-07:00",
            "endTime": "2021-08-26T17:20:31-07:00",
            "failureMessage": "",
            "phases": [
                {
                    "name": "build",
                    "status": "success",
                    "startTime": "2021-08-26T17:20:31-07:00",
                    "endTime": "2021-08-26T17:20:31-07:00",
                    "failureMessage": "",
                    "steps": [
                        {
                            "name": "ExecuteNestedDocument",
                            "status": "success",
                            "failureMessage": "",
                            "timeoutSeconds": -1,
                            "onFailure": "Abort",
                            "maxAttempts": 1,
                            "action": "ExecuteDocument",
                            "startTime": "2021-08-26T17:20:31-07:00",
                            "endTime": "2021-08-26T17:20:31-07:00",
                            "inputs": "[{\"document\":\"Sample-1.yaml\",\"document-s3-bucket-owner\":\"\",\"phases\":\"\",\"parameters\":null}]",
                            "outputs": "[{\"executedStepCount\":1,\"executionId\":\"98765f43-21ed-09cb-8a76-fedc54321098\",\"failedStepCount\":0,\"failureMessage\":\"\",\"ignoredFailedStepCount\":0,\"logUrl\":\"\",\"status\":\"success\"}]",
                            "loop": null,
                            "detailedOutput": [
                                {
                                    "executionId": "98765f43-21ed-09cb-8a76-fedc54321098",
                                    "status": "success",
                                    "startTime": "2021-08-26T17:20:31-07:00",
                                    "endTime": "2021-08-26T17:20:31-07:00",
                                    "failureMessage": "",
                                    "documents": [
                                        {
                                            "name": "",
                                            "filePath": "Sample-1.yaml",
                                            "status": "success",
                                            "description": "",
                                            "startTime": "2021-08-26T17:20:31-07:00",
                                            "endTime": "2021-08-26T17:20:31-07:00",
                                            "failureMessage": "",
                                            "phases": [
                                                {
                                                    "name": "build",
                                                    "status": "success",
                                                    "startTime": "2021-08-26T17:20:31-07:00",
                                                    "endTime": "2021-08-26T17:20:31-07:00",
                                                    "failureMessage": "",
                                                    "steps": [
                                                        {
                                                            "name": "ExecuteBashStep",
                                                            "status": "success",
                                                            "failureMessage": "",
                                                            "timeoutSeconds": 7200,
                                                            "onFailure": "Abort",
                                                            "maxAttempts": 1,
                                                            "action": "ExecuteBash",
                                                            "startTime": "2021-08-26T17:20:31-07:00",
                                                            "endTime": "2021-08-26T17:20:31-07:00",
                                                            "inputs": "[{\"commands\":[\"echo \\\"Hello World!\\\"\"]}]",
                                                            "outputs": "[{\"stdout\":\"Hello World!\"}]",
                                                            "loop": null,
                                                            "detailedOutput": null
                                                        }]
                                                }]
                                        }]
                                }]
                        }]
                
                }]
        }]
}
```

### ExecutePowerShell (Windows)
<a name="action-modules-executepowershell"></a>

**ExecutePowerShell** アクションモジュールを使用すると、インラインシェルコード/コマンドを使用して PowerShell スクリプトを実行できます。このモジュールは Windows プラットフォームと Windows PowerShell をサポートしています。

コマンドブロックで指定されたすべてのコマンド/命令は、スクリプトファイル（例えば、`input.ps1`）に変換され、Windows PowerShell を使用して実行されます。シェルファイルを実行した結果が終了コードです。

**ExecutePowerShell** モジュールは、シェルコマンドが終了コードが `3010` で終了した場合、システムの再起動を処理します。起動すると、アプリケーションは以下のいずれかのアクションを実行します。
+ Systems Manager エージェントによって実行された場合、終了コードを呼び出し側に渡します。Systems Manager エージェント はシステムの再起動を処理し、「[スクリプトからのマネージドインスタンスの再起動](https://docs.aws.amazon.com/systems-manager/latest/userguide/send-commands-reboot.html)」で説明されているように、再起動を開始したのと同じステップを実行します。
+ 現在の `executionstate` を保存し、アプリケーションを再実行するための再起動トリガーを設定し、システムを再起動します。

システムの再起動後、アプリケーションは再起動を開始したのと同じステップを実行します。この機能が必要な場合は、同じシェルコマンドを複数回呼び出しても処理できる同等のスクリプトを記述する必要があります。


**Input**  

| キー名 | 説明 | タイプ | 必須 | 
| --- | --- | --- | --- | 
| commands | PowerShell 構文に従って実行する命令またはコマンドのリストが含まれています。複数行の YAML を使用できます。 | 文字列リスト | はい。両方ではなく、`commands` または `file` を指定する必要があります。  | 
| file | PowerShell スクリプトファイルへのパスが含まれています。PowerShell は、-file コマンドライン引数を使用してこのファイルに対して実行されます。パスは.ps1ファイルを指していなければなりません。 | String | はい。両方ではなく、`commands` または `file` を指定する必要があります。  | 

**入力例: 再起動前と再起動後**

```
name: ExitCode3010Example
description: This shows how the exit code can be used to restart a system with ExecutePowerShell
schemaVersion: 1.0
phases:
  - name: build
    steps:
      - name: RestartTrigger
        action: ExecutePowerShell
        inputs:
          commands:
            - |
              $rebootIndicator = Join-Path -Path $env:SystemDrive -ChildPath 'reboot-indicator'
              if (Test-Path -Path $rebootIndicator) {
                Write-Host 'The reboot file exists. Deleting it and exiting with success.'
                Remove-Item -Path $rebootIndicator -Force | Out-Null
                [System.Environment]::Exit(0)
              }
              Write-Host 'The reboot file does not exist. Creating it and triggering a restart.'
              New-Item -Path $rebootIndicator -ItemType File | Out-Null
              [System.Environment]::Exit(3010)
```


**Output**  

| フィールド | 説明 | タイプ | 
| --- | --- | --- | 
| stdout | コマンド実行の標準出力。 | string | 

アクションモジュールの一部として再起動を実行して終了コード `3010` を返した場合、ビルドは再起動を開始したのと同じアクションモジュールステップで再開されます。終了コードを指定せずに再起動を実行すると、ビルドプロセスが失敗する可能性があります。

**出力例: 再起動前 (初めてドキュメントから)**

```
{
	“stdout”: “The reboot file does not exist. Creating it and triggering a restart."
}
```

**出力例: 再起動後 (2 回目にドキュメントを通過)**

```
{
	“stdout”: “The reboot file exists. Deleting it and exiting with success."
}
```

## ファイルダウンロードとアップロードモジュール
<a name="action-modules-download-upload"></a>

以下のセクションでは、ファイルをアップロードまたはダウンロードするアクションモジュールの詳細について説明します。

**Topics**
+ [S3Download (Linux、Windows、macOS)](#action-modules-s3download)
+ [S3Upload (Linux、Windows、macOS)](#action-modules-s3upload)
+ [WebDownload (Linux、Windows、macOS)](#action-modules-webdownload)

### S3Download (Linux、Windows、macOS)
<a name="action-modules-s3download"></a>

`S3Download` アクションモジュールを使用すると、Amazon S3 オブジェクトまたはオブジェクトのセットを、`destination` パスで指定したローカルファイルまたはフォルダにダウンロードできます。指定した場所に既にファイルが存在し、`overwrite` フラグが true に設定されている場合、`S3Download` がそのファイルを上書きします。

`source` ロケーションは Amazon S3 内の特定のオブジェクトを指すこともできますし、アスタリスクワイルドカード (`*`) が付いたキー接頭辞を使用して、キー接頭辞パスと一致するオブジェクトのセットをダウンロードすることもできます。`source` ロケーションでキー接頭辞を指定すると、`S3Download` アクションモジュールはプレフィックスに一致するすべてのもの (ファイルとフォルダを含む) をダウンロードします。キー接頭辞がフォーワードスラッシュで終わり、その後にアスタリスク (`/*`) が続くことを確認してください。これにより、プレフィックスに一致するものをすべてダウンロードできるようになります。例: `s3://my-bucket/my-folder/*`。

ダウンロード中に指定されたキー接頭辞 `S3Download` アクションが失敗した場合、フォルダの内容は失敗前の状態にロールバックされません。宛先フォルダは、障害発生時のままです。

**対応するユースケース**  
`S3Download` アクションモジュールは以下のユースケースをサポートしています。
+ Amazon S3 オブジェクトは、ダウンロードパスで指定されたローカルフォルダにダウンロードされます。
+ Amazon S3 オブジェクト (Amazon S3 ファイルパスにキー接頭辞 が付いている) は、指定されたローカルフォルダにダウンロードされます。このローカルフォルダは、キー接頭辞 と一致するすべての Amazon S3 オブジェクトをローカルフォルダに再帰的にコピーします。

**IAM の要件**  
インスタンスプロファイルに関連付ける IAM ロールには、`S3Download` アクションモジュールを実行する権限が必要です。インスタンスプロファイルに関連付けられている IAM ロールに、以下の IAM ポリシーをアタッチする必要があります：
+ **単一ファイル** `s3:GetObject` バケット/オブジェクトに対して(例えば`arn:aws:s3:::BucketName/*`)。
+ **複数のファイル**: `s3:ListBucket`バケット/オブジェクトに対するファイル (例:`arn:aws:s3:::BucketName`) `s3:GetObject` とバケット/オブジェクト (例: `arn:aws:s3:::BucketName/*`)。


**Input**  

|  キー  |  説明  |  タイプ  |  [Required] (必須)  |  [Default] (デフォルト)  | 
| --- | --- | --- | --- | --- | 
|  `source`  |  ダウンロードのソースである Amazon S3 バケット。特定のオブジェクトへのパスを指定するか、またはキー接頭辞 (末尾がスラッシュ) で終わり、アスタリスクワイルドカード (`/*`) が続くものを使用して、キー接頭辞 に一致するオブジェクトのセットをダウンロードできます。  |  String  |  はい  |  該当なし  | 
|  `destination`  |  Amazon S3 オブジェクトがダウンロードされるローカルパス。1 つのファイルをダウンロードするには、パスの一部としてファイル名を指定する必要があります。例えば、`/myfolder/package.zip`。  |  String  |  はい  |  該当なし  | 
|  `expectedBucketOwner`  |  `source` パスで指定されたバケットの必要な所有者アカウント ID。ソースで指定されている Amazon S3 バケットの所有権を確認することをお勧めします。  |  String  |  いいえ  |  該当なし  | 
|  `overwrite`  |  true に設定すると、指定したローカルパスの宛先フォルダに同じ名前のファイルが既に存在する場合、ダウンロードファイルはローカルファイルを上書きします。false に設定すると、ローカルシステム上の既存のファイルは上書きされないよう保護され、アクションモジュールはダウンロードエラーで失敗します。 例: `Error: S3Download: File already exists and "overwrite" property for "destination" file is set to false. Cannot download.`  |  ブール値  |  なし  |  true  | 

**注記**  
次の例では、Windows フォルダパスを Linux パスに置き換えることができます。例えば、`C:\myfolder\package.zip` を `/myfolder/package.zip` に置き換えることができます。

**入力例: Amazon S3 オブジェクトをローカルファイルにコピーする**  
以下の例では、Amazon S3 オブジェクトをローカルファイルにコピーする方法を示します。

```
  - name: DownloadMyFile
    action: S3Download
    inputs:
      - source: s3://amzn-s3-demo-source-bucket/path/to/package.zip
        destination: C:\myfolder\package.zip
        expectedBucketOwner: 123456789022
        overwrite: false
      - source: s3://amzn-s3-demo-source-bucket/path/to/package.zip
        destination: C:\myfolder\package.zip
        expectedBucketOwner: 123456789022
        overwrite: true
      - source: s3://amzn-s3-demo-source-bucket/path/to/package.zip
        destination: C:\myfolder\package.zip
        expectedBucketOwner: 123456789022
```

**入力例：キープレフィックスを持つ Amazon S3 バケット内のすべての Amazon S3 オブジェクトをローカルフォルダにコピーする**  
次の例では、Amazon S3 バケット内のすべての Amazon S3 オブジェクトを、キーのプレフィックス付きでローカルフォルダにコピーする方法を示しています。Amazon S3 にはフォルダという概念がないため、キー接頭辞 に一致するすべてのオブジェクトがコピーされます。ダウンロードできるオブジェクトの最大数は 1000 です。

```
  - name: MyS3DownloadKeyprefix
    action: S3Download
    maxAttempts: 3
    inputs:
      - source: s3://amzn-s3-demo-source-bucket/path/to/*
        destination: C:\myfolder\
        expectedBucketOwner: 123456789022
        overwrite: false
      - source: s3://amzn-s3-demo-source-bucket/path/to/*
        destination: C:\myfolder\
        expectedBucketOwner: 123456789022
        overwrite: true
      - source: s3://amzn-s3-demo-source-bucket/path/to/*
        destination: C:\myfolder\
        expectedBucketOwner: 123456789022
```

**Output**  
なし。

### S3Upload (Linux、Windows、macOS)
<a name="action-modules-s3upload"></a>

**S3Upload** アクションモジュールを使用すると、ソースファイルまたはフォルダから Amazon S3 の場所にファイルをアップロードできます。ソースロケーションに指定されたパスにワイルドカード (`*`) を使用すると、ワイルドカードパターンに一致するパスを持つすべてのファイルをアップロードできます。

再帰的な **S3Upload** アクションが失敗した場合、既にアップロードされたファイルは宛先の Amazon S3 バケットに残ります。

**対応するユースケース**
+ Amazon S3 オブジェクトへのローカルファイル。
+ Amazon S3 キー接頭辞 へのフォルダ内のローカルファイル (ワイルドカード付き)。
+ ローカルフォルダ (`recurse` を `true` に設定されている必要があります) を Amazon S3 キー接頭辞 にコピーします。

**IAM の要件**  
インスタンスプロファイルに関連付ける IAM ロールには、`S3Upload` アクションモジュールを実行する権限が必要です。インスタンスプロファイルに関連付けられている IAM ロールに、以下の IAM ポリシーをアタッチする必要があります。ポリシーは、ターゲット Amazon S3 バケットに `s3:PutObject` アクセス権限を付与する必要があります。例えば、`arn:aws:s3:::BucketName/*` です。


**Input**  

|  キー  |  説明  |  タイプ  |  [Required] (必須)  |  [Default] (デフォルト)  | 
| --- | --- | --- | --- | --- | 
|  `source`  |  ソースファイル/フォルダの生成元のローカルパス。`source` はアスタリスクワイルドカード (`*`) をサポートします。  |  String  |  はい  |  該当なし  | 
|  `destination`  |  ソースファイル/フォルダがアップロードされる宛先 Amazon S3 バケットのパス。  |  String  |  はい  |  該当なし  | 
|  `recurse`  |  `true` に設定すると、**S3Upload** を再帰的に実行します。  |  String  |  いいえ  |  `false`  | 
|  `expectedBucketOwner`  |  宛先パスで指定されている Amazon S3 バケットの予想所有者アカウント ID。宛先に指定された Amazon S3 バケットの所有権を確認することをお勧めします。  |  String  |  いいえ  |  該当なし  | 

**入力例: ローカルファイルをAmazon S3 オブジェクトにコピーする**  
次の例は、ローカルファイルを Amazon S3 オブジェクトにコピーする方法を示しています。

```
  - name: MyS3UploadFile
    action: S3Upload
    onFailure: Abort
    maxAttempts: 3
    inputs:
      - source: C:\myfolder\package.zip
        destination: s3://amzn-s3-demo-destination-bucket/path/to/package.zip
        expectedBucketOwner: 123456789022
```

**入力例：ローカルフォルダ内のすべてのファイルを、キーの接頭辞を持つ Amazon S3 バケットにコピーする**  
次の例では、ローカルフォルダ内のすべてのファイルを、キープレフィックスを持つ Amazon S3 バケットにコピーする方法を示しています。この例では、`recurse` が指定されていないためサブフォルダやその内容はコピーされません。デフォルトは `false` です。

```
  - name: MyS3UploadMultipleFiles
    action: S3Upload
    onFailure: Abort
    maxAttempts: 3
    inputs:
      - source: C:\myfolder\*
        destination: s3://amzn-s3-demo-destination-bucket/path/to/
        expectedBucketOwner: 123456789022
```

**入力例:ローカルフォルダから再帰的に Amazon S3 バケットにコピーする**  
次の例では、ローカルフォルダから Amazon S3 バケットに、キープレフィックスを付けてすべてのファイルとフォルダを再帰的にコピーする方法を示しています。

```
  - name: MyS3UploadFolder
    action: S3Upload
    onFailure: Abort
    maxAttempts: 3
    inputs:
      - source: C:\myfolder\*
        destination: s3://amzn-s3-demo-destination-bucket/path/to/
        recurse: true
        expectedBucketOwner: 123456789022
```

**Output**  
なし。

### WebDownload (Linux、Windows、macOS)
<a name="action-modules-webdownload"></a>

**WebDownload** アクションモジュールを使用すると、HTTP/HTTPS プロトコル (HTTPS を推奨) を介してリモートの場所からファイルやリソースをダウンロードできます。ダウンロードの数やサイズに制限はありません。このモジュールはリトライとエクスポネンシャルバックオフロジックを処理します。

ユーザーの入力に応じて、各ダウンロード操作が成功するまでに最大 5 回の試行が割り当てられます。これらの試行は、アクションモジュールの障害に関連する `maxAttempts` の `steps` ドキュメントフィールドで指定されている試行とは異なります。

このアクションモジュールは暗黙的にリダイレクトを処理します。`200` を除く、すべての HTTP ステータスコードはエラーになります。


**Input**  

| キー名 | 説明 | タイプ | [Required] (必須) | [Default] (デフォルト) | 
| --- | --- | --- | --- | --- | 
| source | RFC 3986 標準に準拠した有効な HTTP/HTTPS URL (HTTPS を推奨)。式を連鎖させることは許可されます。 | String |  はい  | 該当なし | 
| destination | ローカルシステム上のファイルまたはフォルダの絶対パスまたは相対パス。フォルダパスは / で終わる必要があります。末尾が / でなければ、ファイルパスとして扱われます。モジュールは、ダウンロードを成功させるために必要なファイルまたはフォルダを作成します。式を連鎖させることは許可されます。 | String | はい | 該当なし | 
| overwrite | 有効にすると、ローカルシステム上の既存のファイルを、ダウンロードしたファイルまたはリソースで上書きします。有効にしないと、ローカルシステム上の既存のファイルは上書きされず、アクションモジュールはエラーで失敗します。上書きが有効で、チェックサムとアルゴリズムが指定されている場合、アクションモジュールは、既存のファイルのチェックサムとハッシュが一致しない場合にのみファイルをダウンロードします。 | ブール値 | いいえ | true | 
| checksum | チェックサムを指定すると、指定されたアルゴリズムで生成されたダウンロードファイルのハッシュと照合されます。ファイル検証を有効にするには、チェックサムとアルゴリズムの両方を指定する必要があります。式を連鎖させることは許可されます。 | String | いいえ | 該当なし | 
| algorithm | チェックサムの計算に使用するアルゴリズム。オプションには MD5、SHA1、SHA256 および SHA512 があります。ファイル検証を有効にするには、チェックサムとアルゴリズムの両方を指定する必要があります。式を連鎖させることは許可されます。 | String | いいえ | 該当なし | 
| ignoreCertificateErrors | SSL 証明書の検証は有効になっていると無視されます。 | ブール値 | いいえ | false | 


**Output**  

| キー名 | 説明 | タイプ | 
| --- | --- | --- | 
| destination | ダウンロードしたファイルまたはリソースの保存先パスを指定する改行文字で区切られた文字列。 | String | 

**入力例: リモートファイルをローカルの宛先にダウンロードする**

```
  - name: DownloadRemoteFile
    action: WebDownload
    maxAttempts: 3
    inputs:
      - source: https://testdomain/path/to/java14.zip
        destination: C:\testfolder\package.zip
```

**出力:**

```
{
	"destination": "C:\\testfolder\\package.zip"
}
```

**入力例: 複数のリモートファイルを複数のローカル宛先にダウンロードする**

```
  - name: DownloadRemoteFiles
    action: WebDownload
    maxAttempts: 3
    inputs:
      - source: https://testdomain/path/to/java14.zip
        destination: /tmp/java14_renamed.zip
      - source: https://testdomain/path/to/java14.zip
        destination: /tmp/create_new_folder_and_add_java14_as_zip/
```

**出力:**

```
{
	"destination": "/tmp/create_new_folder/java14_renamed.zip\n/tmp/create_new_folder_and_add_java14_as_zip/java14.zip"
}
```

**入力例: ローカル宛先を上書きせずにリモートファイルを 1 つダウンロードし、ファイル検証を行って別のリモートファイルをダウンロードする**

```
  - name: DownloadRemoteMultipleProperties
    action: WebDownload
    maxAttempts: 3
    inputs:
      - source: https://testdomain/path/to/java14.zip
        destination: C:\create_new_folder\java14_renamed.zip
        overwrite: false
      - source: https://testdomain/path/to/java14.zip
        destination: C:\create_new_folder_and_add_java14_as_zip\
        checksum: ac68bbf921d953d1cfab916cb6120864
        algorithm: MD5
        overwrite: true
```

**出力:**

```
{
	"destination": "C:\\create_new_folder\\java14_renamed.zip\nC:\\create_new_folder_and_add_java14_as_zip\\java14.zip"
}
```

**入力例: リモートファイルをダウンロードし、SSL 証明書の検証を無視**

```
  - name: DownloadRemoteIgnoreValidation
    action: WebDownload
    maxAttempts: 3
    inputs:
      - source: https://www.bad-ssl.com/resource
        destination: /tmp/downloads/
        ignoreCertificateErrors: true
```

**出力:**

```
{
	"destination": "/tmp/downloads/resource"
}
```

## ファイルシステム操作モジュール
<a name="action-modules-file-system-operations"></a>

以下のセクションでは、ファイルシステム操作を実行するアクションモジュールの詳細について説明します。

**Topics**
+ [AppendFile (Linux、Windows、macOS)](#action-modules-appendfile)
+ [CopyFile (Linux、Windows、macOS)](#action-modules-copyfile)
+ [CopyFolder (Linux、Windows、macOS)](#action-modules-copyfolder)
+ [CreateFile (Linux、Windows、macOS)](#action-modules-createfile)
+ [CreateFolder (Linux、Windows、macOS)](#action-modules-createfolder)
+ [CreateSymlink (Linux、Windows、macOS)](#action-modules-createsymlink)
+ [DeleteFile (Linux、Windows、macOS)](#action-modules-deletefile)
+ [DeleteFolder (Linux、Windows、macOS)](#action-modules-deletefolder)
+ [ListFiles (Linux、Windows、macOS)](#action-modules-listfiles)
+ [MoveFile (Linux、Windows、macOS)](#action-modules-movefile)
+ [MoveFolder (Linux、Windows、macOS)](#action-modules-movefolder)
+ [ReadFile (Linux、Windows、macOS)](#action-modules-readfile)
+ [SetFileEncoding (Linux、Windows、macOS)](#action-modules-setfileencoding)
+ [SetFileOwner (Linux、Windows、macOS)](#action-modules-setfileowner)
+ [SetFolderOwner (Linux、Windows、macOS)](#action-modules-setfolderowner)
+ [SetFilePermissions (Linux、Windows、macOS)](#action-modules-setfilepermissions)
+ [SetFolderPermissions (Linux、Windows、macOS)](#action-modules-setfolderpermissions)

### AppendFile (Linux、Windows、macOS)
<a name="action-modules-appendfile"></a>

**AppendFile** アクションモジュールは、指定された内容をファイルの既存のコンテンツに追加します。

ファイルエンコーディング値がデフォルトのエンコーディング(`utf-8`) 値と異なる場合は、`encoding` オプションを使用してファイルエンコーディング値を指定できます。デフォルトでは `utf-16` と `utf-32` リトルエンディアンエンディアンエンコーディングを使用すると想定されています。

アクションモジュールは、以下の場合にエラーを返します。
+ 指定したファイルは実行時には存在しません。
+ ファイルの内容を変更するための書き込み権限がない。
+ ファイル操作中にモジュールにエラーが発生した。


**Input**  

| キー名 | 説明 | タイプ | 必須 | デフォルトの値 | 許容値 | すべてのプラットフォームでサポートされています | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | ファイルパス。 | String | はい | 該当なし | 該当なし | はい | 
| content | ファイルに追加するコンテンツ。 | String | いいえ | 空の文字列 | 該当なし | はい | 
| encoding | エンコード形式です。 | String | いいえ | utf8 | utf8、utf-8、utf16、utf-16、utf16-LE、utf-16-LE、utf16-BE、utf-16-BE、utf32、utf-32、utf32-LE、utf-32-LE、utf32-BEおよび  utf-32-BE。エンコーディングオプションの値は大文字と小文字を区別しません。 | はい | 

**入力例: エンコードせずにファイルを追加 (Linux)**

```
  - name: AppendingFileWithOutEncodingLinux
    action: AppendFile
    inputs:
      - path: ./Sample.txt
        content: "The string to be appended to the file"
```

**入力例: エンコーディングなしでファイルを追加 (Windows)**

```
  - name: AppendingFileWithOutEncodingWindows
    action: AppendFile
    inputs:
      - path: C:\MyFolder\MyFile.txt
        content: "The string to be appended to the file"
```

**入力例: エンコーディング付きファイルの追加 (Linux)**

```
  - name: AppendingFileWithEncodingLinux
    action: AppendFile
    inputs:
      - path: /FolderName/SampleFile.txt
        content: "The string to be appended to the file"
        encoding: UTF-32
```

**入力例: エンコーディング付きファイルの追加 (Windows)**

```
  - name: AppendingFileWithEncodingWindows
    action: AppendFile
    inputs:
      - path: C:\MyFolderName\SampleFile.txt
        content: "The string to be appended to the file"
        encoding: UTF-32
```

**入力例: 空の文字列を含むファイルの追加 (Linux)**

```
  - name: AppendingEmptyStringLinux
    action: AppendFile
    inputs:
      - path: /FolderName/SampleFile.txt
```

**入力例: 空の文字列を含むファイルの追加 (Windows)**

```
  - name: AppendingEmptyStringWindows
    action: AppendFile
    inputs:
      - path: C:\MyFolderName\SampleFile.txt
```

**Output**  
なし。

### CopyFile (Linux、Windows、macOS)
<a name="action-modules-copyfile"></a>

**CopyFile** アクションモジュールは、指定されたソースから指定された宛先にファイルをコピーします。デフォルトでは、実行時に宛先フォルダが存在しない場合、モジュールは再帰的に宛先フォルダを作成します。

指定された名前のファイルが指定されたフォルダーにすでに存在する場合、アクションモジュールはデフォルトで既存のファイルを上書きします。上書きオプションを`false`に設定することで、このデフォルトの動作を上書きすることができます。上書きオプションが `false` に設定されていて、指定した場所に指定した名前のファイルが既に存在する場合、アクションモジュールはエラーを返します。このオプションは Linux `cp` のコマンドと同じように機能し、デフォルトでは上書きされます。

ソースファイル名にはワイルドカード (`*`) を含めることができます。ワイルドカード文字は、最後のファイルパスの区切り文字 (`/` または `\`) の後でのみ使用できます。ソースファイル名にワイルドカード文字が含まれている場合、ワイルドカードに一致するすべてのファイルが宛先フォルダにコピーされます。ワイルドカード文字を使用して複数のファイルを移動する場合は、`destination` オプションへの入力の末尾にファイルパスの区切り文字 (`/` または `\`) を付ける必要があります。これは、移動先の入力がフォルダであることを示します。

移動先のファイル名がソースファイル名と異なる場合は、`destination` オプションを使用して移動先のファイル名を指定できます。宛先ファイル名を指定しない場合、ソースファイルの名前を使用して宛先ファイルが作成されます。最後のファイルパス区切り文字 (`/` または `\`) に続くテキストはすべてファイル名として扱われます。ソースファイルと同じファイル名を使用する場合は、`destination` オプションの入力がファイルパスの区切り文字 (`/` または `\`) で終わる必要があります。

アクションモジュールは、以下の場合にエラーを返します。
+ 指定されたフォルダにファイルを作成する権限がない。
+ ソースファイルは実行時には存在しません。
+ 指定したファイル名のフォルダが既に存在し、`overwrite` オプションは `false` に設定されています。
+ 操作の実行中にアクションモジュールがエラーに遭遇しました。


**Input**  

| キー名 | 説明 | タイプ | 必須 | デフォルトの値 | 許容値 | すべてのプラットフォームでサポートされています | 
| --- | --- | --- | --- | --- | --- | --- | 
| source | ソースファイルのパス。 | String | はい | 該当なし | 該当なし | はい | 
| destination | デスティネーションファイルパス。 | String | はい | 該当なし | 該当なし | はい | 
| overwrite | false に設定すると、指定した場所に指定した名前のファイルが既にある場合でも、宛先ファイルは置き換えられません。 | ブール値 | いいえ | true | 該当なし | はい | 

**入力例: ファイルのコピー (Linux)**

```
  - name: CopyingAFileLinux
    action: CopyFile
    inputs:
      - source: /Sample/MyFolder/Sample.txt
        destination: /MyFolder/destinationFile.txt
```

**入力例: ファイルのコピー (Windows)**

```
  - name: CopyingAFileWindows
    action: CopyFile
    inputs:
      - source: C:\MyFolder\Sample.txt
        destination: C:\MyFolder\destinationFile.txt
```

**入力例: ソースファイル名を使用してファイルをコピーする (Linux)**

```
  - name: CopyingFileWithSourceFileNameLinux
    action: CopyFile
    inputs:
      - source: /Sample/MyFolder/Sample.txt
        destination: /MyFolder/
```

**入力例: ソースファイル名を使用してファイルをコピーする (Windows)**

```
  - name: CopyingFileWithSourceFileNameWindows
    action: CopyFile
    inputs:
      - source: C:\Sample\MyFolder\Sample.txt
        destination: C:\MyFolder\
```

**入力例: ワイルドカード文字を使用してファイルをコピーする (Linux)**

```
  - name: CopyingFilesWithWildCardLinux
    action: CopyFile
    inputs:
      - source: /Sample/MyFolder/Sample*
        destination: /MyFolder/
```

**入力例: ワイルドカード文字を使用してファイルをコピーする (Windows）**

```
  - name: CopyingFilesWithWildCardWindows
    action: CopyFile
    inputs:
      - source: C:\Sample\MyFolder\Sample*
        destination: C:\MyFolder\
```

**入力例: 上書きせずにファイルをコピーする (Linux)**

```
  - name: CopyingFilesWithoutOverwriteLinux
    action: CopyFile
    inputs:
      - source: /Sample/MyFolder/Sample.txt
        destination: /MyFolder/destinationFile.txt
        overwrite: false
```

**入力例: 上書きせずにファイルをコピーする (Windows)**

```
  - name: CopyingFilesWithoutOverwriteWindows
    action: CopyFile
    inputs:
      - source: C:\Sample\MyFolder\Sample.txt
        destination: C:\MyFolder\destinationFile.txt
        overwrite: false
```

**Output**  
なし。

### CopyFolder (Linux、Windows、macOS)
<a name="action-modules-copyfolder"></a>

**CopyFolder** アクションモジュールは、指定されたソースから指定された宛先にフォルダをコピーします。`destination` オプションの入力はコピーするフォルダであり、`source` オプションの入力はソースフォルダの内容をコピーするフォルダです。デフォルトでは、実行時に宛先フォルダが存在しない場合、モジュールは再帰的に宛先フォルダを作成します。

指定されたフォルダ内に指定された名前のフォルダが既に存在する場合、アクションモジュールは、デフォルトで、既存のフォルダを上書きします。上書きオプションを`false`に設定することで、このデフォルトの動作を上書きすることができます。上書きオプションが `false` に設定されていて、指定した場所に指定した名前のフォルダが既に存在する場合、アクションモジュールはエラーを返します。

ソースフォルダ名にはワイルドカード (`*`) を含めることができます。ワイルドカード文字は、最後のファイルパスの区切り文字 (`/` または `\`) の後でのみ使用できます。コピー元フォルダ名にワイルドカード文字が含まれている場合、ワイルドカードに一致するすべてのフォルダがコピー先フォルダにコピーされます。ワイルドカード文字を使用して複数のフォルダをコピーする場合、`destination` オプションへの入力は、コピー先の入力がフォルダであることを示すファイルパス区切り記号 (`/` または `\`) で終わる必要があります。

コピー先フォルダ名がソースフォルダ名と異なる場合は、`destination` オプションを使用してコピー先フォルダ名を指定できます。宛先フォルダ名を指定しない場合、ソースフォルダの名前が宛先フォルダの作成に使用されます。最後のファイルパスの区切り文字 (`/` または `\`) に続くテキストはすべてフォルダ名として扱われます。ソースフォルダと同じフォルダ名を使用する場合は、`destination` オプションの入力がファイルパスの区切り文字 (`/` または `\`) で終わる必要があります。

アクションモジュールは、以下の場合にエラーを返します。
+ 指定されたフォルダにフォルダを作成する権限がありません。
+ ソースフォルダは実行時には存在しません。
+ 指定したフォルダ名のフォルダが既に存在し、`overwrite` オプションは `false` に設定されています。
+ 操作の実行中にアクションモジュールがエラーに遭遇しました。


**Input**  

| キー名 | 説明 | タイプ | 必須 | デフォルトの値 | 許容値 | すべてのプラットフォームでサポートされています | 
| --- | --- | --- | --- | --- | --- | --- | 
| source | ソースフォルダのパス。 | String | はい | 該当なし | 該当なし | はい | 
| destination | 宛先フォルダのパス。 | String | はい | 該当なし | 該当なし | はい | 
| overwrite | false に設定すると、指定された場所に指定された名前のフォルダが既にある場合、保存先フォルダは置き換えられません。 | ブール値 | いいえ | true | 該当なし | はい | 

**入力例: フォルダのコピー (Linux)**

```
  - name: CopyingAFolderLinux
    action: CopyFolder
    inputs:
      - source: /Sample/MyFolder/SampleFolder
        destination: /MyFolder/destinationFolder
```

**入力例: フォルダのコピー (Windows)**

```
  - name: CopyingAFolderWindows
    action: CopyFolder
    inputs:
      - source: C:\Sample\MyFolder\SampleFolder
        destination: C:\MyFolder\destinationFolder
```

**入力例: ソースフォルダ名を使用してフォルダをコピーする (Linux)**

```
  - name: CopyingFolderSourceFolderNameLinux
    action: CopyFolder
    inputs:
      - source: /Sample/MyFolder/SourceFolder
        destination: /MyFolder/
```

**入力例: ソースフォルダ名を使用してフォルダをコピーする (Windows)**

```
  - name: CopyingFolderSourceFolderNameWindows
    action: CopyFolder
    inputs:
      - source: C:\Sample\MyFolder\SampleFolder
        destination: C:\MyFolder\
```

**入力例: ワイルドカード文字を使用してフォルダをコピーする (Linux)**

```
  - name: CopyingFoldersWithWildCardLinux
    action: CopyFolder
    inputs:
      - source: /Sample/MyFolder/Sample*
        destination: /MyFolder/
```

**入力例: ワイルドカード文字を使用してフォルダをコピーする (Windows)**

```
  - name: CopyingFoldersWithWildCardWindows
    action: CopyFolder
    inputs:
      - source: C:\Sample\MyFolder\Sample*
        destination: C:\MyFolder\
```

**入力例: フォルダを上書きせずにコピーする (Linux)**

```
  - name: CopyingFoldersWithoutOverwriteLinux
    action: CopyFolder
    inputs:
      - source: /Sample/MyFolder/SourceFolder
        destination: /MyFolder/destinationFolder
        overwrite: false
```

**入力例: フォルダを上書きせずにコピーする (Windows)**

```
  - name: CopyingFoldersWithoutOverwrite
    action: CopyFolder
    inputs:
      - source: C:\Sample\MyFolder\SourceFolder
        destination: C:\MyFolder\destinationFolder
        overwrite: false
```

**Output**  
なし。

### CreateFile (Linux、Windows、macOS)
<a name="action-modules-createfile"></a>

**CreateFile** アクションモジュールは、指定された場所にファイルを作成します。デフォルトでは、モジュールは必要に応じて親フォルダも再帰的に作成します。

ファイルが指定されたフォルダに既に存在する場合、アクションモジュールはデフォルトで、既存のファイルを切り捨てるか上書きする。上書きオプションを`false`に設定することで、このデフォルトの動作を上書きすることができます。上書きオプションが `false` に設定されていて、指定した場所に指定した名前のファイルが既に存在する場合、アクションモジュールはエラーを返します。

ファイルエンコーディング値がデフォルトのエンコーディング (`utf-8`) 値と異なる場合は、`encoding` オプションを使用してファイルエンコーディング値を指定できます。デフォルトでは `utf-16` と `utf-32` リトルエンディアンエンディアンエンコーディングを使用すると想定されています。

`owner`、`group` および `permissions` はオプションの入力です。`permissions` の入力は文字列値でなければなりません。指定しない場合、ファイルはデフォルト値で作成されます。これらのオプションは Windows プラットフォームではサポートされていません。Windows プラットフォームで、`owner`、`group` と `permissions` オプションが使用されている場合、このアクションモジュールは検証してエラーを返します。

このアクションモジュールは、オペレーティングシステムのデフォルト `umask` 値で定義されたパーミッションを持つファイルを作成することができます。デフォルト値をオーバーライドする場合、`umask` 値を設定する必要があります。

アクションモジュールは、以下の場合にエラーを返します。
+ 指定された親フォルダにファイルまたはフォルダを作成する権限がありません。
+ 操作の実行中にアクションモジュールがエラーに遭遇しました。


**Input**  

| キー名 | 説明 | タイプ | 必須 | デフォルトの値 | 許容値 | すべてのプラットフォームでサポートされています | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | ファイルパス。 | String | はい | 該当なし | 該当なし | はい | 
| content | ファイルのテキストコンテンツ。 | String | いいえ | 該当なし | 該当なし | はい | 
| encoding | エンコード形式です。 | String | いいえ | utf8 | utf8、utf-8、utf16、utf-16、utf16-LE、utf-16-LE、utf16-BE、utf-16-BE、utf32、utf-32、utf32-LE、utf-32-LE、utf32-BEおよび  utf-32-BE。エンコーディングオプションの値は大文字と小文字を区別しません。 | はい | 
| owner | ユーザー名または ID。 | String | いいえ | 該当なし | 該当なし | Windows ではサポートされていません。 | 
| group | グループ名または ID。 | String | いいえ | 現在のユーザー。 | 該当なし | Windows ではサポートされていません。 | 
| permissions | ファイルのパーミッション。 | String | いいえ | 0666 | 該当なし | Windows ではサポートされていません。 | 
| overwrite | 指定したファイルの名前が既に存在する場合、この値を false に設定すると、デフォルトでファイルが切り捨てられたり上書きされたりするのを防ぐことができます。 | ブール値 | いいえ | true | 該当なし | はい | 

**入力例: 上書きせずにファイルを作成 (Linux)**

```
  - name: CreatingFileWithoutOverwriteLinux
    action: CreateFile
    inputs:
      - path: /home/UserName/Sample.txt
        content: The text content of the sample file.
        overwrite: false
```

**入力例: 上書きせずにファイルを作成 (Windows)**

```
  - name: CreatingFileWithoutOverwriteWindows
    action: CreateFile
    inputs:
      - path: C:\Temp\Sample.txt
        content: The text content of the sample file.
        overwrite: false
```

**入力例: ファイルプロパティを含むファイルの作成**

```
  - name: CreatingFileWithFileProperties
    action: CreateFile
    inputs:
      - path: SampleFolder/Sample.txt
        content: The text content of the sample file.
        encoding: UTF-16
        owner: Ubuntu
        group: UbuntuGroup
        permissions: 0777
     - path: SampleFolder/SampleFile.txt
        permissions: 755
      - path: SampleFolder/TextFile.txt
        encoding: UTF-16
        owner: root
        group: rootUserGroup
```

**入力例: ファイルのプロパティなしでファイルを作成する**

```
  - name: CreatingFileWithoutFileProperties
    action: CreateFile
    inputs:
      - path: ./Sample.txt
      - path: Sample1.txt
```

**入力例: Linux クリーンアップスクリプトのセクションをスキップするために空のファイルを作成する**

```
  - name: CreateSkipCleanupfile
    action: CreateFile
    inputs:
      - path: <skip section file name>
```

詳細については、[Linux クリーンアップスクリプトをオーバーライドする](security-best-practices.md#override-linux-cleanup-script)を参照してください。

**Output**  
なし。

### CreateFolder (Linux、Windows、macOS)
<a name="action-modules-createfolder"></a>

**CreateFolder** アクションモジュールは、指定された場所にフォルダを作成します。デフォルトでは、モジュールは必要に応じて親フォルダも再帰的に作成します。

指定されたフォルダに既にフォルダが存在する場合、アクションモジュールはデフォルトで、既存のフォルダを切り捨てるか上書きします。上書きオプションを`false`に設定することで、このデフォルトの動作を上書きすることができます。上書きオプションが `false` に設定されていて、指定した場所に指定した名前のフォルダが既に存在する場合、アクションモジュールはエラーを返します。

`owner`、`group` および `permissions` はオプションの入力です。`permissions` の入力は文字列値でなければなりません。これらのオプションは Windows プラットフォームではサポートされていません。Windows プラットフォームで、`owner`、`group` と `permissions` オプションが使用されている場合、このアクションモジュールは検証してエラーを返します。

このアクションモジュールは、`umask` オペレーティングシステムのデフォルト値で定義された権限を持つフォルダを作成できます。デフォルト値をオーバーライドする場合、`umask` 値を設定する必要があります。

アクションモジュールは、以下の場合にエラーを返します。
+ 指定された場所にフォルダを作成する権限がありません。
+ 操作の実行中にアクションモジュールがエラーに遭遇しました。


**Input**  

| キー名 | 説明 | タイプ | 必須 | デフォルトの値 | 許容値 | すべてのプラットフォームでサポートされています | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | フォルダパス。 | String | はい | 該当なし | 該当なし | はい | 
| owner | ユーザー名または ID。 | String | いいえ | 現在のユーザー。 | 該当なし | Windows ではサポートされていません。 | 
| group | グループ名または ID。 | String | いいえ | 現在のユーザーのグループ。 | 該当なし | Windows ではサポートされていません。 | 
| permissions | フォルダのパーミッション。 | String | いいえ | 0777 | 該当なし | Windows ではサポートされていません。 | 
| overwrite | 指定したファイルの名前が既に存在する場合、この値を false に設定すると、デフォルトでファイルが切り捨てられたり上書きされたりするのを防ぐことができます。 | ブール値 | いいえ | true | 該当なし | はい | 

**入力例: フォルダの作成 (Linux)**

```
  - name: CreatingFolderLinux
    action: CreateFolder
    inputs:
      - path: /Sample/MyFolder/
```

**入力例: フォルダの作成 (Windows)**

```
  - name: CreatingFolderWindows
    action: CreateFolder
    inputs:
      - path: C:\MyFolder
```

**入力例: フォルダのプロパティを指定してフォルダの作成**

```
  - name: CreatingFolderWithFolderProperties
    action: CreateFolder
    inputs:
      - path: /Sample/MyFolder/Sample/
        owner: SampleOwnerName
        group: SampleGroupName
        permissions: 0777
      - path: /Sample/MyFolder/SampleFoler/
        permissions: 777
```

**入力例: 既存のフォルダ (ある場合) を上書きするフォルダを作成します。**

```
  - name: CreatingFolderWithOverwrite
    action: CreateFolder
    inputs:
      - path: /Sample/MyFolder/Sample/
        overwrite: true
```

**Output**  
なし。

### CreateSymlink (Linux、Windows、macOS)
<a name="action-modules-createsymlink"></a>

**CreateSymLink** アクションモジュールは、シンボリックリンク、つまり別のファイルへの参照を含むファイルを作成します。このモジュールは Windows プラットフォームではサポートされていません。

`path` および `target` オプションの入力は、絶対パスでも相対パスでもかまいません。`path` オプションの入力が相対パスの場合は、リンクの作成時に絶対パスに置き換えられます。

デフォルトでは、指定された名前のリンクが指定されたフォルダに既に存在する場合、アクションモジュールからエラーが返されます。`force`オプションを`true`に設定することで、このデフォルト動作をオーバーライドすることができます。`force` オプションを `true` に設定すると、モジュールは既存のリンクを上書きします。

親フォルダが存在しない場合、アクションモジュールはデフォルトでそのフォルダを再帰的に作成します。

アクションモジュールは、以下の場合にエラーを返します。
+ ターゲットファイルが実行時に存在しません。
+ 指定された名前の非シンボリックリンクファイルが既に存在する。
+ 操作の実行中にアクションモジュールがエラーに遭遇しました。


**Input**  

| キー名 | 説明 | タイプ | 必須 | デフォルトの値 | 許容値 | すべてのプラットフォームでサポートされています | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | ファイルパス。 | String | はい | 該当なし | 該当なし | Windows ではサポートされていません。 | 
| target | シンボリックリンクが指すターゲットファイルのパス。 | String | はい | 該当なし | 該当なし | Windows ではサポートされていません。 | 
| force | 同じ名前のリンクが既に存在する場合、リンクの作成を強制します。 | ブール値 | いいえ | false | 該当なし | Windows ではサポートされていません。 | 

**入力例: リンクの作成を強制するシンボリックリンクの作成**

```
  - name: CreatingSymbolicLinkWithForce
    action: CreateSymlink
    inputs:
      - path: /Folder2/Symboliclink.txt
        target: /Folder/Sample.txt
        force: true
```

**入力例: リンクの作成を強制しないシンボリックリンクの作成**

```
  - name: CreatingSymbolicLinkWithOutForce
    action: CreateSymlink
    inputs:
      - path: Symboliclink.txt
        target: /Folder/Sample.txt
```

**Output**  
なし。

### DeleteFile (Linux、Windows、macOS)
<a name="action-modules-deletefile"></a>

**DeleteFile** アクションモジュールは、指定された場所にある 1 つまたは複数のファイルを削除します。

`path` の入力は、有効なファイルパスか、ファイル名にワイルドカード文字(`*`)を含むファイルパスでなければならない。ファイル名にワイルドカード文字を指定すると、ワイルドカードに一致する同じフォルダ内のすべてのファイルが削除されます。

アクションモジュールは、以下の場合にエラーを返します。
+ あなたには削除操作を実行する権限がありません。
+ 操作の実行中にアクションモジュールがエラーに遭遇しました。


**Input**  

| キー名 | 説明 | タイプ | 必須 | デフォルトの値 | 許容値 | すべてのプラットフォームでサポートされています | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | ファイルパス。 | String | はい | 該当なし | 該当なし | はい | 

**入力例: 1 つのファイルを削除する (Linux)**

```
  - name: DeletingSingleFileLinux
    action: DeleteFile
    inputs:
      - path: /SampleFolder/MyFolder/Sample.txt
```

**入力例: 1 つのファイルを削除する (Windows)**

```
  - name: DeletingSingleFileWindows
    action: DeleteFile
    inputs:
      - path: C:\SampleFolder\MyFolder\Sample.txt
```

**入力例:「log」で終わるファイルを削除する (Linux)**

```
  - name: DeletingFileEndingWithLogLinux
    action: DeleteFile
    inputs:
      - path: /SampleFolder/MyFolder/*log
```

**入力例:「log」で終わるファイルを削除する (Windows)**

```
  - name: DeletingFileEndingWithLogWindows
    action: DeleteFile
    inputs:
      - path: C:\SampleFolder\MyFolder\*log
```

**入力例: 指定したフォルダ内のファイルをすべて削除する (Linux)**

```
  - name: DeletingAllFilesInAFolderLinux
    action: DeleteFile
    inputs:
      - path: /SampleFolder/MyFolder/*
```

**入力例: 指定したフォルダ内のファイルをすべて削除する (Windows)**

```
  - name: DeletingAllFilesInAFolderWindows
    action: DeleteFile
    inputs:
      - path: C:\SampleFolder\MyFolder\*
```

**Output**  
なし。

### DeleteFolder (Linux、Windows、macOS)
<a name="action-modules-deletefolder"></a>

**DeleteFolder** アクションモジュールはフォルダを削除します。

フォルダが空でない場合は、 フォルダとその内容を削除する `force` オプションを `true` に設定する必要があります。`force` オプションを `true` に設定せず、削除しようとしているフォルダが空でない場合、アクションモジュールはエラーを返します。`force`オプションのデフォルト値は`false`です。

アクションモジュールは、以下の場合にエラーを返します。
+ あなたには削除操作を実行する権限がありません。
+ 操作の実行中にアクションモジュールがエラーに遭遇しました。


**Input**  

| キー名 | 説明 | タイプ | 必須 | デフォルトの値 | 許容値 | すべてのプラットフォームでサポートされています | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | フォルダパス。 | String | はい | 該当なし | 該当なし | はい | 
| force | フォルダが空であろうとなかろうと、フォルダを削除します。 | ブール値 | いいえ | false | 該当なし | はい | 

**入力例: `force` オプションを使用して空でないフォルダを削除する (Linux)** 

```
  - name: DeletingFolderWithForceOptionLinux
    action: DeleteFolder
    inputs:
      - path: /Sample/MyFolder/Sample/
        force: true
```

**入力例: `force` オプションを使用して空でないフォルダを削除する (Windows)** 

```
  - name: DeletingFolderWithForceOptionWindows
    action: DeleteFolder
    inputs:
      - path: C:\Sample\MyFolder\Sample\
        force: true
```

**入力例: フォルダの削除 (Linux)** 

```
  - name: DeletingFolderWithOutForceLinux
    action: DeleteFolder
    inputs:
      - path: /Sample/MyFolder/Sample/
```

**入力例: フォルダの削除 (Windows)** 

```
  - name: DeletingFolderWithOutForce
    action: DeleteFolder
    inputs:
      - path: C:\Sample\MyFolder\Sample\
```

**Output**  
なし。

### ListFiles (Linux、Windows、macOS)
<a name="action-modules-listfiles"></a>

**ListFiles** アクションモジュールは、指定されたフォルダ内のファイルを一覧表示します。recursive オプションを `true` に設定すると、サブフォルダ内のファイルが一覧表示されます。このモジュールは、デフォルトではサブフォルダ内のファイルを一覧表示しません。

指定したパターンに一致する名前のファイルをすべて一覧表示するには、`fileNamePattern` オプションを使用してパターンを指定します。`fileNamePattern` オプションはワイルドカード (`*`) 値を受け入れます。`fileNamePattern` を指定すると、指定されたファイル名形式に一致するすべてのファイルが返されます。

アクションモジュールは、以下の場合にエラーを返します。
+ 指定されたフォルダが実行時に存在しません。
+ 指定された親フォルダにファイルまたはフォルダを作成する権限がありません。
+ 操作の実行中にアクションモジュールがエラーに遭遇しました。


**Input**  

| キー名 | 説明 | タイプ | 必須 | デフォルトの値 | 許容値 | すべてのプラットフォームでサポートされています | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | フォルダパス。 | String | はい | 該当なし | 該当なし | はい | 
| fileNamePattern | 一致するパターンで、そのパターンに一致する名前を持つすべてのファイルを一覧表示します。 | String | いいえ | 該当なし | 該当なし | はい | 
| recursive | フォルダ内のファイルを再帰的に一覧表示します。 | ブール値 | いいえ | false | 該当なし | はい | 

**入力例: 指定したフォルダ内のファイルを一覧表示する (Linux)**

```
  - name: ListingFilesInSampleFolderLinux
    action: ListFiles
    inputs:
      - path: /Sample/MyFolder/Sample
```

**入力例: 指定したフォルダ内のファイルを一覧表示する (Windows)**

```
  - name: ListingFilesInSampleFolderWindows
    action: ListFiles
    inputs:
      - path: C:\Sample\MyFolder\Sample
```

**入力例:「log」で終わるファイルを一覧表示する (Linux)**

```
  - name: ListingFilesWithEndingWithLogLinux
    action: ListFiles
    inputs:
      - path: /Sample/MyFolder/
        fileNamePattern: *log
```

**入力例:「log」で終わるファイルを一覧表示する (Windows)**

```
  - name: ListingFilesWithEndingWithLogWindows
    action: ListFiles
    inputs:
      - path: C:\Sample\MyFolder\
        fileNamePattern: *log
```

**入力例: ファイルを再帰的に一覧表示する**

```
  - name: ListingFilesRecursively
    action: ListFiles
    inputs:
      - path: /Sample/MyFolder/
        recursive: true
```


**Output**  

| キー名 | 説明 | タイプ | 
| --- | --- | --- | 
| files | ファイルのリストです。 | String | 

**出力例**

```
{
	"files": "/sample1.txt,/sample2.txt,/sample3.txt"
}
```

### MoveFile (Linux、Windows、macOS)
<a name="action-modules-movefile"></a>

**MoveFile** アクションモジュールは、指定されたソースから指定された宛先にファイルを移動します。

指定したフォルダーにファイルがすでに存在する場合、アクションモジュールはデフォルトで既存のファイルを上書きします。上書きオプションを`false`に設定することで、このデフォルトの動作を上書きすることができます。上書きオプションが `false` に設定されていて、指定した場所に指定した名前のファイルが既に存在する場合、アクションモジュールはエラーを返します。このオプションは Linux `mv` のコマンドと同じように機能し、デフォルトでは上書きされます。

ソースファイル名にはワイルドカード (`*`) を含めることができます。ワイルドカード文字は、最後のファイルパスの区切り文字 (`/` または `\`) の後でのみ使用できます。ソースファイル名にワイルドカード文字が含まれている場合、ワイルドカードに一致するすべてのファイルが宛先フォルダにコピーされます。ワイルドカード文字を使用して複数のファイルを移動する場合は、`destination` オプションへの入力の末尾にファイルパスの区切り文字 (`/` または `\`) を付ける必要があります。これは、移動先の入力がフォルダであることを示します。

移動先のファイル名がソースファイル名と異なる場合は、`destination` オプションを使用して移動先のファイル名を指定できます。宛先ファイル名を指定しない場合、ソースファイルの名前を使用して宛先ファイルが作成されます。最後のファイルパス区切り文字 (`/` または `\`) に続くテキストはすべてファイル名として扱われます。ソースファイルと同じファイル名を使用する場合は、`destination` オプションの入力がファイルパスの区切り文字 (`/` または `\`) で終わる必要があります。

アクションモジュールは、以下の場合にエラーを返します。
+ 指定されたフォルダにファイルを作成する権限がない。
+ ソースファイルは実行時には存在しません。
+ 指定したファイル名のフォルダが既に存在し、`overwrite` オプションは `false` に設定されています。
+ 操作の実行中にアクションモジュールがエラーに遭遇しました。


**Input**  

| キー名 | 説明 | タイプ | 必須 | デフォルトの値 | 許容値 | すべてのプラットフォームでサポートされています | 
| --- | --- | --- | --- | --- | --- | --- | 
| source | ソースファイルのパス。 | String | はい | 該当なし | 該当なし | はい | 
| destination | デスティネーションファイルパス。 | String | はい | 該当なし | 該当なし | はい | 
| overwrite | false に設定すると、指定した場所に指定した名前のファイルが既にある場合でも、宛先ファイルは置き換えられません。 | ブール値 | いいえ | true | 該当なし | はい | 

**入力例: ファイルを移動する (Linux)**

```
  - name: MovingAFileLinux
    action: MoveFile
    inputs:
      - source: /Sample/MyFolder/Sample.txt
        destination: /MyFolder/destinationFile.txt
```

**入力例: ファイルを移動する (Windows)**

```
  - name: MovingAFileWindows
    action: MoveFile
    inputs:
      - source: C:\Sample\MyFolder\Sample.txt
        destination: C:\MyFolder\destinationFile.txt
```

**入力例: ソースファイル名を使用してファイルを移動する (Linux)**

```
  - name: MovingFileWithSourceFileNameLinux
    action: MoveFile
    inputs:
      - source: /Sample/MyFolder/Sample.txt
        destination: /MyFolder/
```

**入力例: ソースファイル名を使用してファイルを移動する (Windows)**

```
  - name: MovingFileWithSourceFileNameWindows
    action: MoveFile
    inputs:
      - source: C:\Sample\MyFolder\Sample.txt
        destination: C:\MyFolder
```

**入力例: ワイルドカード文字を使用してファイルを移動する (Linux)**

```
  - name: MovingFilesWithWildCardLinux
    action: MoveFile
    inputs:
      - source: /Sample/MyFolder/Sample*
        destination: /MyFolder/
```

**入力例: ワイルドカード文字を使用してファイルを移動する (Windows)**

```
  - name: MovingFilesWithWildCardWindows
    action: MoveFile
    inputs:
      - source: C:\Sample\MyFolder\Sample*
        destination: C:\MyFolder
```

**入力例: ファイルを上書きせずに移動する (Linux)**

```
  - name: MovingFilesWithoutOverwriteLinux
    action: MoveFile
    inputs:
      - source: /Sample/MyFolder/Sample.txt
        destination: /MyFolder/destinationFile.txt
        overwrite: false
```

**入力例: ファイルを上書きせずに移動する (Windows)**

```
  - name: MovingFilesWithoutOverwrite
    action: MoveFile
    inputs:
      - source: C:\Sample\MyFolder\Sample.txt
        destination: C:\MyFolder\destinationFile.txt
        overwrite: false
```

**Output**  
なし。

### MoveFolder (Linux、Windows、macOS)
<a name="action-modules-movefolder"></a>

**MoveFolder** アクションモジュールは、指定されたソースから指定された宛先にフォルダを移動します。`source`オプションの入力は移動するフォルダであり、`destination`オプションの入力は移動元フォルダのコンテンツを移動するフォルダです。

実行時に移動先の親フォルダまたは `destination` オプションへの入力が存在しない場合、モジュールのデフォルト動作では、指定された宛先にフォルダを再帰的に作成します。

ソースフォルダと同じフォルダが宛先フォルダに既に存在する場合、アクションモジュールはデフォルトで、既存のフォルダを上書きします。上書きオプションを`false`に設定することで、このデフォルトの動作を上書きすることができます。上書きオプションが `false` に設定されていて、指定した場所に指定した名前のフォルダが既に存在する場合、アクションモジュールはエラーを返します。

ソースフォルダ名にはワイルドカード (`*`) を含めることができます。ワイルドカード文字は、最後のファイルパスの区切り文字 (`/` または `\`) の後でのみ使用できます。コピー元フォルダ名にワイルドカード文字が含まれている場合、ワイルドカードに一致するすべてのフォルダがコピー先フォルダにコピーされます。ワイルドカード文字を使用して複数のフォルダを移動する場合、`destination` オプションへの入力は、コピー先の入力がフォルダであることを示すファイルパス区切り記号 (`/` または `\`) で終わる必要があります。

コピー先フォルダ名がソースフォルダ名と異なる場合は、`destination` オプションを使用してコピー先フォルダ名を指定できます。宛先フォルダ名を指定しない場合、ソースフォルダの名前が宛先フォルダの作成に使用されます。最後のファイルパスの区切り文字 (`/` または `\`) に続くテキストはすべてフォルダ名として扱われます。ソースフォルダと同じフォルダ名を使用する場合は、`destination` オプションの入力がファイルパスの区切り文字 (`/` または `\`) で終わる必要があります。

アクションモジュールは、以下の場合にエラーを返します。
+ 保存先フォルダにフォルダを作成する権限がありません。
+ ソースフォルダは実行時には存在しません。
+ 指定した名前のフォルダが既に存在し、`overwrite` オプションは `false` に設定されています。
+ 操作の実行中にアクションモジュールがエラーに遭遇しました。


**Input**  

| キー名 | 説明 | タイプ | 必須 | デフォルトの値 | 許容値 | すべてのプラットフォームでサポートされています | 
| --- | --- | --- | --- | --- | --- | --- | 
| source | ソースフォルダのパス。 | String | はい | 該当なし | 該当なし | はい | 
| destination | 宛先フォルダのパス。 | String | はい | 該当なし | 該当なし | はい | 
| overwrite | false に設定すると、指定された場所に指定された名前のフォルダが既にある場合、保存先フォルダは置き換えられません。 | ブール値 | いいえ | true | 該当なし | はい | 

**入力例: フォルダの移動 (Linux)**

```
  - name: MovingAFolderLinux
    action: MoveFolder
    inputs:
      - source: /Sample/MyFolder/SourceFolder
        destination: /MyFolder/destinationFolder
```

**入力例: フォルダの移動 (Windows)**

```
  - name: MovingAFolderWindows
    action: MoveFolder
    inputs:
      - source: C:\Sample\MyFolder\SourceFolder
        destination: C:\MyFolder\destinationFolder
```

**入力例: ソースフォルダ名を使用してフォルダを移動する (Linux)**

```
  - name: MovingFolderWithSourceFolderNameLinux
    action: MoveFolder
    inputs:
      - source: /Sample/MyFolder/SampleFolder
        destination: /MyFolder/
```

**入力例: ソースフォルダ名を使用してフォルダを移動する (Windows)**

```
  - name: MovingFolderWithSourceFolderNameWindows
    action: MoveFolder
    inputs:
      - source: C:\Sample\MyFolder\SampleFolder
        destination: C:\MyFolder\
```

**入力例: ワイルドカード文字を使用してフォルダを移動 (Linux)**

```
  - name: MovingFoldersWithWildCardLinux
    action: MoveFolder
    inputs:
      - source: /Sample/MyFolder/Sample*
        destination: /MyFolder/
```

**入力例: ワイルドカード文字を使用してフォルダを移動する (Windows)**

```
  - name: MovingFoldersWithWildCardWindows
    action: MoveFolder
    inputs:
      - source: C:\Sample\MyFolder\Sample*
        destination: C:\MyFolder\
```

**入力例: フォルダを上書きせずに移動する (Linux)**

```
  - name: MovingFoldersWithoutOverwriteLinux
    action: MoveFolder
    inputs:
      - source: /Sample/MyFolder/SampleFolder
    destination: /MyFolder/destinationFolder
    overwrite: false
```

**入力例: フォルダを上書きせずに移動する (Windows)**

```
  - name: MovingFoldersWithoutOverwriteWindows
    action: MoveFolder
    inputs:
      - source: C:\Sample\MyFolder\SampleFolder
        destination: C:\MyFolder\destinationFolder
        overwrite: false
```

**Output**  
なし。

### ReadFile (Linux、Windows、macOS)
<a name="action-modules-readfile"></a>

**ReadFile** アクションモジュールは、文字列型のテキストファイルの内容を読み取ります。このモジュールを使うと、ファイルの内容を読み取ってチェーニングによって後続のステップで使用したり、データを `console.log` ファイルに読み込んだりできます。指定されたパスがシンボリックリンクの場合、このモジュールはターゲットファイルの内容を返します。このモジュールはテキストファイルのみをサポートします。

ファイルエンコーディング値がデフォルトのエンコーディング (`utf-8`) 値と異なる場合は、`encoding` オプションを使用してファイルエンコーディング値を指定できます。デフォルトでは `utf-16` と `utf-32` リトルエンディアンエンディアンエンコーディングを使用すると想定されています。

デフォルトでは、このモジュールは `console.log` ファイルの内容をファイルに出力できません。`printFileContent` プロパティを `true` に設定すると、この設定を上書きできます。

このモジュールはファイルの内容のみを返すことができます。Excel や JSON ファイルなどのファイルを解析することはできません。

アクションモジュールは、以下の場合にエラーを返します。
+ 実行時にファイルが存在しません。
+ 操作の実行中にアクションモジュールがエラーに遭遇しました。


**Input**  

| キー名 | 説明 | タイプ | 必須 | デフォルトの値 | 許容値 | すべてのプラットフォームでサポートされています | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | ファイルパス。 | String | はい | 該当なし | 該当なし | はい | 
| encoding | エンコード形式です。 | String | いいえ | utf8 | utf8、utf-8、utf16、utf-16、utf16-LE、utf-16-LE、utf16-BE、utf-16-BE、utf32、utf-32、utf32-LE、utf-32-LE、utf32-BEおよび  utf-32-BE。エンコーディングオプションの値は大文字と小文字を区別しません。 | はい | 
| printFileContent | ファイルの内容を console.log ファイルに出力します。 | ブール値 | いいえ | false | 該当なし | はい。 | 

**入力例: ファイルの読み取り (Linux)**

```
  - name: ReadingFileLinux
    action: ReadFile
    inputs:
      - path: /home/UserName/SampleFile.txt
```

**入力例: ファイルの読み込み（Windows）**

```
  - name: ReadingFileWindows
    action: ReadFile
    inputs:
      - path: C:\Windows\WindowsUpdate.log
```

**入力例: ファイルを読み込んでエンコーディングの標準を指定する**

```
  - name: ReadingFileWithFileEncoding
    action: ReadFile
    inputs:
      - path: /FolderName/SampleFile.txt
        encoding: UTF-32
```

**入力例: `console.log` ファイルを読み込んでファイルに出力する**

```
  - name: ReadingFileToConsole
    action: ReadFile
    inputs:
      - path: /home/UserName/SampleFile.txt
        printFileContent: true
```


**Output**  

| フィールド | 説明 | タイプ | 
| --- | --- | --- | 
| content | ファイルの内容。 | string | 

**出力例**

```
{
	"content" : "The file content"
}
```

### SetFileEncoding (Linux、Windows、macOS)
<a name="action-modules-setfileencoding"></a>

**SetFileEncoding** アクションモジュールは、既存のファイルのエンコーディングプロパティを変更します。このモジュールは、`utf-8` ファイルのエンコーディングを指定されたエンコーディング標準に変換できます。デフォルトでは、`utf-16` と `utf-32` リトルエンディアンエンディアンエンコーディングと想定されています。

アクションモジュールは、以下の場合にエラーを返します。
+ 指定された変更を実行するにはアクセス許可が必要です。
+ 実行時にファイルが存在しません。
+ 操作の実行中にアクションモジュールがエラーに遭遇しました。


**Input**  

| キー名 | 説明 | タイプ | 必須 | デフォルトの値 | 許容値 | すべてのプラットフォームでサポートされています | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | ファイルパス。 | String | はい | 該当なし | 該当なし | はい | 
| encoding | エンコード形式です。 | String | いいえ | utf8 | utf8、utf-8、utf16、utf-16、utf16-LE、utf-16-LE、utf16-BE、utf-16-BE、utf32、utf-32、utf32-LE、utf-32-LE、utf32-BEおよび  utf-32-BE。エンコーディングオプションの値は大文字と小文字を区別しません。 | はい | 

**入力例: ファイルエンコーディングプロパティの設定**

```
  - name: SettingFileEncodingProperty
    action: SetFileEncoding
    inputs:
      - path: /home/UserName/SampleFile.txt
        encoding: UTF-16
```

**Output**  
なし。

### SetFileOwner (Linux、Windows、macOS)
<a name="action-modules-setfileowner"></a>

**SetFileOwner** アクションモジュールは、`owner` と `group` 既存のファイルのプロパティと所有者プロパティを変更します。指定されたファイルがシンボリックリンクの場合、`owner` モジュールはソースファイルのプロパティを変更します。このモジュールは Windows プラットフォームではサポートされていません。

このモジュールは、ユーザー名とグループ名を入力として受け入れます。グループ名が指定されていない場合、モジュールはファイルのグループ所有者をユーザーが所属するグループに割り当てます。

アクションモジュールは、以下の場合にエラーを返します。
+ 指定された変更を実行するにはアクセス許可が必要です。
+ 指定したユーザー名またはグループ名は実行時には存在しません。
+ 実行時にファイルが存在しません。
+ 操作の実行中にアクションモジュールがエラーに遭遇しました。


**Input**  

| キー名 | 説明 | タイプ | 必須 | デフォルトの値 | 許容値 | すべてのプラットフォームでサポートされています | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | ファイルパス。 | String | はい | 該当なし | 該当なし | Windows ではサポートされていません。 | 
| owner | ユーザー名。 | string | はい | 該当なし | 該当なし | Windows ではサポートされていません。 | 
| group | ユーザーグループの名前。 | String | いいえ | ユーザーが所属するグループ名。 | 該当なし | Windows ではサポートされていません。 | 

**入力例: ユーザーグループの名前を指定せずにファイル所有者プロパティを設定**

```
  - name: SettingFileOwnerPropertyNoGroup
    action: SetFileOwner
    inputs:
      - path: /home/UserName/SampleText.txt
        owner: LinuxUser
```

**入力例: 所有者とユーザーグループを指定してファイル所有者プロパティを設定**

```
  - name: SettingFileOwnerProperty
    action: SetFileOwner
    inputs:
      - path: /home/UserName/SampleText.txt
        owner: LinuxUser
        group: LinuxUserGroup
```

**Output**  
なし。

### SetFolderOwner (Linux、Windows、macOS)
<a name="action-modules-setfolderowner"></a>

**SetFolderOwner** アクションモジュールは、既存のフォルダのプロパティと `owner` と `group` 所有者プロパティを再帰的に変更します。デフォルトでは、モジュールはフォルダ内のすべてのコンテンツの所有権を変更できます。この動作をオーバーライドする `recursive` オプションを `false` に設定できます。このモジュールは Windows プラットフォームではサポートされていません。

このモジュールは、ユーザー名とグループ名を入力として受け入れます。グループ名が指定されていない場合、モジュールはファイルのグループ所有者をユーザーが所属するグループに割り当てます。

アクションモジュールは、以下の場合にエラーを返します。
+ 指定された変更を実行するにはアクセス許可が必要です。
+ 指定したユーザー名またはグループ名は実行時には存在しません。
+ 実行時にフォルダが存在しません。
+ 操作の実行中にアクションモジュールがエラーに遭遇しました。


**Input**  

| キー名 | 説明 | タイプ | 必須 | デフォルトの値 | 許容値 | すべてのプラットフォームでサポートされています | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | フォルダパス。 | String | はい | 該当なし | 該当なし | Windows ではサポートされていません。 | 
| owner | ユーザー名。 | string | はい | 該当なし | 該当なし | Windows ではサポートされていません。 | 
| group | ユーザーグループの名前。 | String | いいえ | ユーザーが所属するグループ名。 | 該当なし | Windows ではサポートされていません。 | 
| recursive | false に設定すると、フォルダのすべてのコンテンツの所有権を変更するというデフォルトの動作が上書きされます。 | ブール値 | いいえ | true | 該当なし | Windows ではサポートされていません。 | 

**入力例: ユーザーグループの名前を指定せずにフォルダ所有者プロパティを設定する**

```
  - name: SettingFolderPropertyWithOutGroup
    action: SetFolderOwner
    inputs:
      - path: /SampleFolder/
        owner: LinuxUser
```

**入力例: フォルダ内のすべてのコンテンツの所有権を変更せずにフォルダ所有者プロパティを設定する**

```
  - name: SettingFolderPropertyWithOutRecursively
    action: SetFolderOwner
    inputs:
      - path: /SampleFolder/
        owner: LinuxUser
        recursive: false
```

**入力例: ユーザーグループの名前を指定してファイル所有権プロパティを設定します**

```
  - name: SettingFolderPropertyWithGroup
    action: SetFolderOwner
    inputs:
      - path: /SampleFolder/
        owner: LinuxUser
        group: LinuxUserGroup
```

**Output**  
なし。

### SetFilePermissions (Linux、Windows、macOS)
<a name="action-modules-setfilepermissions"></a>

**SetFilePermissions** アクションモジュールは、既存のファイルの内容の `permissions` を変更します。このモジュールは Windows プラットフォームではサポートされていません。

`permissions` の入力は文字列値でなければなりません。

このアクションモジュールは、オペレーティングシステムのデフォルト値で定義された権限を使用してファイルを作成できます。デフォルト値をオーバーライドする場合、`umask` 値を設定する必要があります。

アクションモジュールは、以下の場合にエラーを返します。
+ 指定された変更を実行するにはアクセス許可が必要です。
+ 実行時にファイルが存在しません。
+ 操作の実行中にアクションモジュールがエラーに遭遇しました。


**Input**  

| キー名 | 説明 | タイプ | 必須 | デフォルトの値 | 許容値 | すべてのプラットフォームでサポートされています | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | ファイルパス。 | String | はい | 該当なし | 該当なし | Windows ではサポートされていません。 | 
| permissions | ファイルのパーミッション。 | String | はい | 該当なし | 該当なし | Windows ではサポートされていません。 | 

**入力例:ファイル権限の変更**

```
  - name: ModifyingFilePermissions
    action: SetFilePermissions
    inputs:
      - path: /home/UserName/SampleFile.txt
        permissions: 766
```

**Output**  
なし。

### SetFolderPermissions (Linux、Windows、macOS)
<a name="action-modules-setfolderpermissions"></a>

**SetFolderPermissions** アクションモジュールは、`permissions` の既存のフォルダとそのすべてのサブファイルおよびサブフォルダを再帰的に変更します。デフォルトでは、このモジュールは指定されたフォルダのすべてのコンテンツの許可を変更できます。この動作をオーバーライドする `recursive` オプションを `false` に設定できます。このモジュールは Windows プラットフォームではサポートされていません。

`permissions` の入力は文字列値でなければなりません。

このアクションモジュールは、オペレーティングシステムのデフォルト umask 値に従って権限を変更できます。デフォルト値をオーバーライドする場合、`umask` 値を設定する必要があります。

アクションモジュールは、以下の場合にエラーを返します。
+ 指定された変更を実行するにはアクセス許可が必要です。
+ 実行時にフォルダが存在しません。
+ 操作の実行中にアクションモジュールがエラーに遭遇しました。


**Input**  

| キー名 | 説明 | タイプ | 必須 | デフォルトの値 | 許容値 | すべてのプラットフォームでサポートされています | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | フォルダパス。 | String | はい | 該当なし | 該当なし | Windows ではサポートされていません。 | 
| permissions | フォルダのパーミッション。 | String | はい | 該当なし | 該当なし | Windows ではサポートされていません。 | 
| recursive | false に設定すると、フォルダのすべての内容の権限を変更するというデフォルトの動作が上書きされます。 | ブール値 | いいえ | true | 該当なし | Windows ではサポートされていません。 | 

**入力例: フォルダ権限の設定**

```
  - name: SettingFolderPermissions
    action: SetFolderPermissions
    inputs:
      - path: SampleFolder/
        permissions: 0777
```

**入力例: フォルダのすべてのコンテンツのパーミッションを変更せずに、フォルダのパーミッションを設定する**

```
  - name: SettingFolderPermissionsNoRecursive
    action: SetFolderPermissions
    inputs:
      - path: /home/UserName/SampleFolder/
        permissions: 777
        recursive: false
```

**Output**  
なし。

## ソフトウェアインストールアクション
<a name="action-modules-software-install-actions"></a>

以下のセクションでは、ソフトウェアをインストールまたはアンインストールするアクションモジュールについて説明します。

**IAM の要件**  
インストールダウンロードパスが S3 URI の場合、インスタンスプロファイルに関連付ける IAM ロールには `S3Download` アクションモジュールを実行する権限が必要です。必要なアクセス権限を付与するには、インスタンスプロファイルに関連付けられている `S3:GetObject` IAM ロールに IAM ポリシーをアタッチし、バケットのパスを指定します。例えば、`arn:aws:s3:::BucketName/*` です。

**複雑な MSI 入力**  
入力文字列に二重引用符 (`"`) が含まれている場合は、以下のいずれかの方法を使用して正しく解釈されるようにする必要があります。
+ 次の例のように、文字列の外側には一重引用符 (') を使用し、文字列の内側には二重引用符 (「) を使用できます。

  ```
  properties:
    COMPANYNAME: '"Acme ""Widgets"" and ""Gizmos."""'
  ```

  この場合、文字列の中でアポストロフィを使用する必要がある場合は、そのアポストロフィをエスケープする必要があります。つまり、アポストロフィの前に一重引用符 (') をもう 1 つ使うということです。
+ 文字列の外側には二重引用符 (「) を使用して格納できます。また、次の例のように、バックスラッシュ文字 (`\`) を使用して、文字列内の二重引用符をエスケープできます。

  ```
  properties:
    COMPANYNAME: "\"Acme \"\"Widgets\"\" and \"\"Gizmos.\"\"\""
  ```

これらのメソッドはいずれも、`COMPANYNAME="Acme ""Widgets"" and ""Gizmos."""` 値を**msiexec**コマンドに渡します。

**Topics**
+ [InstallMSI (Windows)](#action-modules-install-msi)
+ [UninstallMSI (Windows)](#action-modules-uninstall-msi)

### InstallMSI (Windows)
<a name="action-modules-install-msi"></a>

`InstallMSI` アクションモジュールは MSI ファイルを使用して Windows アプリケーションをインストールします。ローカルパス、S3 オブジェクト URI、またはウェブ URL を使用して MSI ファイルを指定できます。再起動オプションはシステムの再起動動作を設定します。

AWSTOE は、アクションモジュールの入力パラメータに基づいて**msiexec**コマンドを生成します。`path` (MSI ファイルの場所) と `logFile` (ログファイルの場所) の入力パラメータの値は、引用符 (「) で囲む必要があります。

次の MSI 終了コードは成功とみなされます。
+ 0 - 成功
+ 1614 (製品\$1アンインストールエラー)
+ 1641 (再起動が開始されました)
+ 3010 (再起動が必要です)


**Input**  

| キー名 | 説明 | タイプ | 必須 | デフォルトの値 | 許容値 | 
| --- | --- | --- | --- | --- | --- | 
| path |  次のいずれかを使用して MSI ファイルの場所を指定します。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/imagebuilder/latest/userguide/toe-action-modules.html) チェーン式は許可されています。  | String | はい | 該当なし | 該当なし | 
| reboot |  アクションモジュールが正常に実行された後のシステム再起動動作を設定します。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/imagebuilder/latest/userguide/toe-action-modules.html)  | String | いいえ | Allow | Allow, Force, Skip | 
| logOptions |  MSI インストールロギングに使用するオプションを指定します。指定されたフラグは、ロギングを有効にする `/L` コマンドラインパラメータとともに MSI インストーラーに渡されます。フラグが指定されていない場合、 はデフォルト値 AWSTOE を使用します。 MSI の Log オプションの詳細については、Microsoft Windows Installer 製品ドキュメントの[コマンドラインオプション](https://learn.microsoft.com/en-us/windows/win32/msi/command-line-options)を参照してください。  | String | いいえ | \$1VX | i,w,e,a,r,u,c,m,o,p,v,x,\$1,\$1,\$1 | 
| logFile |  ログファイルの場所への絶対パスまたは相対パス。Log ファイルのパスが存在しない場合は、作成される。ログファイルパスが指定されていない場合、 AWSTOE は MSI インストールログを保存しません。  | String | いいえ | 該当なし | 該当なし | 
| properties |  MSI ロギングプロパティのキーと値のペア。例: `TARGETDIR: "C:\target\location"`   注:以下のプロパティは変更できません。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/imagebuilder/latest/userguide/toe-action-modules.html)  | Map[String]String | いいえ | 該当なし | 該当なし | 
| ignoreAuthenticodeSignatureErrors |  path で指定されたインストーラーの authenticode 署名検証エラーを無視するフラグ。この **Get-AuthenticodeSignature** コマンドはインストーラーを検証するために使用されます。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/imagebuilder/latest/userguide/toe-action-modules.html)  | ブール値 | いいえ | false | true, false | 
| allowUnsignedInstaller |  パスに指定された署名なしインストーラーの実行を許可するフラグ。この **Get-AuthenticodeSignature** コマンドはインストーラーを検証するために使用されます。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/imagebuilder/latest/userguide/toe-action-modules.html)  | ブール値 | いいえ | false | true, false | 

**例**  
以下の例は、コンポーネントドキュメントの入力セクションのバリエーションを示しています。

**入力例: ローカルドキュメントパスのインストール**

```
- name: local-path-install
  steps:
    - name: LocalPathInstaller
      action: InstallMSI
      inputs:
        path: C:\sample.msi
        logFile: C:\msilogs\local-path-install.log
        logOptions: '*VX'
        reboot: Allow
        properties:
          COMPANYNAME: '"Amazon Web Services"'
        ignoreAuthenticodeSignatureErrors: true
        allowUnsignedInstaller: true
```

**入力例: Amazon S3 パスのインストール**

```
- name: s3-path-install
  steps:
    - name: S3PathInstaller
      action: InstallMSI
      inputs:
        path: s3://<bucket-name>/sample.msi
        logFile: s3-path-install.log
        reboot: Force
        ignoreAuthenticodeSignatureErrors: false
        allowUnsignedInstaller: true
```

**入力例: ウェブパスのインストール**

```
- name: web-path-install
  steps:
    - name: WebPathInstaller
      action: InstallMSI
      inputs:
        path: https://<some-path>/sample.msi
        logFile: web-path-install.log
        reboot: Skip
        ignoreAuthenticodeSignatureErrors: true
        allowUnsignedInstaller: false
```

**Output**  
次は `InstallMSI` アクションモジュールの出力の例です。

```
{
	"logFile": "web-path-install.log",
	"msiExitCode": 0,
	"stdout": ""
}
```

### UninstallMSI (Windows)
<a name="action-modules-uninstall-msi"></a>

`UninstallMSI` アクションモジュールでは、MSI ファイルを使用して Windows アプリケーションを削除することができます。ローカルファイルパス、S3 オブジェクト URI、またはウェブ URL を使用して、MSI ファイルの場所を指定できます。再起動オプションはシステムの再起動動作を設定します。

AWSTOE は、アクションモジュールの入力パラメータに基づいて**msiexec**コマンドを生成します。MSI ファイルの場所 (`path`) とログファイルの場所 (`logFile`) は、**msiexec** コマンドの生成時に二重引用符 (") で明示的に囲まれます。

次の MSI 終了コードは成功とみなされます。
+ 0 - 成功
+ 1605 (製品不明エラー)
+ 1614 (製品\$1アンインストールエラー)
+ 1641 (再起動が開始されました)
+ 3010 (再起動が必要です)


**Input**  

| キー名 | 説明 | タイプ | 必須 | デフォルトの値 | 許容値 | 
| --- | --- | --- | --- | --- | --- | 
| path |  次のいずれかを使用して MSI ファイルの場所を指定します。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/imagebuilder/latest/userguide/toe-action-modules.html) チェーン式は許可されています。  | String | はい | 該当なし | 該当なし | 
| reboot |  アクションモジュールが正常に実行された後のシステム再起動動作を設定します。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/imagebuilder/latest/userguide/toe-action-modules.html)  | String | いいえ | Allow | Allow, Force, Skip | 
| logOptions |  MSI インストールロギングに使用するオプションを指定します。指定されたフラグは、ロギングを有効にする `/L` コマンドラインパラメータとともに MSI インストーラーに渡されます。フラグが指定されていない場合、 はデフォルト値 AWSTOE を使用します。 MSI の Log オプションの詳細については、Microsoft Windows Installer 製品ドキュメントの[コマンドラインオプション](https://docs.microsoft.com/en-us/windows/win32/msi/command-line-options)を参照してください。  | String | いいえ | \$1VX | i,w,e,a,r,u,c,m,o,p,v,x,\$1,\$1,\$1 | 
| logFile |  ログファイルの場所への絶対パスまたは相対パス。Log ファイルのパスが存在しない場合は、作成される。ログファイルパスが指定されていない場合、 AWSTOE は MSI インストールログを保存しません。  | String | いいえ | 該当なし | 該当なし | 
| properties |  MSI ロギングプロパティのキーと値のペア。例: `TARGETDIR: "C:\target\location"`   注:以下のプロパティは変更できません。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/imagebuilder/latest/userguide/toe-action-modules.html)  | Map[String]String | いいえ | 該当なし | 該当なし | 
| ignoreAuthenticodeSignatureErrors |  path で指定されたインストーラーの authenticode 署名検証エラーを無視するフラグ。この **Get-AuthenticodeSignature** コマンドはインストーラーを検証するために使用されます。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/imagebuilder/latest/userguide/toe-action-modules.html)  | ブール値 | いいえ | false | true, false | 
| allowUnsignedInstaller |  パスに指定された署名なしインストーラーの実行を許可するフラグ。この **Get-AuthenticodeSignature** コマンドはインストーラーを検証するために使用されます。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/imagebuilder/latest/userguide/toe-action-modules.html)  | ブール値 | いいえ | false | true, false | 

**例**  
以下の例は、コンポーネントドキュメントの入力セクションのバリエーションを示しています。

**入力例:ローカルドキュメントパスインストールの削除**

```
- name: local-path-uninstall
  steps:
    - name: LocalPathUninstaller
      action: UninstallMSI
      inputs:
        path: C:\sample.msi
        logFile: C:\msilogs\local-path-uninstall.log
        logOptions: '*VX'
        reboot: Allow
        properties:
          COMPANYNAME: '"Amazon Web Services"'
        ignoreAuthenticodeSignatureErrors: true
        allowUnsignedInstaller: true
```

**入力例:Amazon S3 パスインストールの削除**

```
- name: s3-path-uninstall
  steps:
    - name: S3PathUninstaller
      action: UninstallMSI
      inputs:
        path: s3://<bucket-name>/sample.msi
        logFile: s3-path-uninstall.log
        reboot: Force
        ignoreAuthenticodeSignatureErrors: false
        allowUnsignedInstaller: true
```

**入力例: ウェブパスのインストールを削除**

```
- name: web-path-uninstall
  steps:
    - name: WebPathUninstaller
      action: UninstallMSI
      inputs:
        path: https://<some-path>/sample.msi
        logFile: web-path-uninstall.log
        reboot: Skip
        ignoreAuthenticodeSignatureErrors: true
        allowUnsignedInstaller: false
```

**Output**  
次は `UninstallMSI` アクションモジュールの出力の例です。

```
{
	"logFile": "web-path-uninstall.log",
	"msiExitCode": 0,
	"stdout": ""
}
```

## システムアクションモジュール
<a name="action-modules-system-actions"></a>

以下のセクションでは、システムアクションを実行したり、システム設定を更新したりするアクションモジュールについて説明します。

**Topics**
+ [Reboot (Linux、Windows)](#action-modules-reboot)
+ [SetRegistry (Windows)](#action-modules-setregistry)
+ [UpdateOS (Linux、Windows)](#action-modules-updateos)

### Reboot (Linux、Windows)
<a name="action-modules-reboot"></a>

**再起動**アクションモジュールはインスタンスを再起動します。再起動の開始を遅らせる設定可能なオプションがあります。デフォルトでは、`delaySeconds` は `0` に設定されています。つまり、遅延はありません。ステップタイムアウトは、インスタンスの再起動時には適用されないため、再起動アクションモジュールではサポートされていません。

アプリケーションが Systems Manager エージェントによって呼び出されると、終了コード (Windows `3010` の場合、Linux `194` の場合) がSystems Manager エージェントに渡されます。システムマネージャーエージェントは、[スクリプトからマネージドインスタンスを再起動する](https://docs.aws.amazon.com/systems-manager/latest/userguide/send-commands-reboot.html)の説明に従ってシステムの再起動を処理します。

アプリケーションがホスト上でスタンドアロンプロセスとして呼び出された場合、現在の実行状態を保存し、再起動後にアプリケーションを再実行するように再起動後の自動実行トリガーを構成し、システムを再起動します。

**再起動後の自動実行トリガー:**
+ **Windows**。 AWSTOE は `SystemStartup` で自動的に実行されるトリガーを含む Windows タスクスケジューラエントリを作成
+ **Linux**。 AWSTOE はシステム再起動後に自動的に実行されるジョブを crontab に追加します。

```
@reboot /download/path/awstoe run --document s3://bucket/key/doc.yaml
```

このトリガーはアプリケーションの起動時にクリーンアップされます。

**再試行**  
デフォルトでは、再試行の最大回数は Systems Manager `CommandRetryLimit` に設定されています。再起動回数が再試行制限を超えると、自動化は失敗します。Systems Manager エージェント設定ファイル (`Mds.CommandRetryLimit`) を編集して制限を変更できます。Systems Manager エージェントオープンソースの「[Runtime Configuration](https://github.com/aws/amazon-ssm-agent/blob/mainline/README.md#runtime-configuration)」を参照してください。

**Reboot** アクションモジュールを使用するには、reboot `exitcode` を含むステップ（例えば `3010`）に対して、アプリケーションバイナリを `sudo user` として実行する必要があります。


**Input**  

| キー名 | 説明 | タイプ | [Required] (必須) | [Default] (デフォルト) | 
| --- | --- | --- | --- | --- | 
| delaySeconds | 再起動を開始する前に、特定の時間だけ遅延させます。 | 整数 |  いいえ  |  `0`  | 

**入力例: 再起動ステップ**

```
  - name: RebootStep
    action: Reboot
    onFailure: Abort
    maxAttempts: 2
    inputs:
      delaySeconds: 60
```

**出力**

なし。

**再起動**モジュールが完了すると、Image Builder はビルドの次のステップに進みます。

### SetRegistry (Windows)
<a name="action-modules-setregistry"></a>

**SetRegistry** アクションモジュールは入力のリストを受け入れ、指定したレジストリキーの値を設定できます。レジストリキーが存在しない場合、定義されたパスに作成されます。この機能は Windows のみに適用されます。


**Input**  

| キー名 | 説明 | タイプ | 必須 | 
| --- | --- | --- | --- | 
| path | レジストリキーのパス。 | String | はい | 
| name | レジストリキーの名前。 | String | はい | 
| value | レジストリキーの値。 | 文字列/数値/配列 | はい | 
| type | レジストリキーの値の型。 | String | はい | 

**サポートされているパスプレフィックス**
+ `HKEY_CLASSES_ROOT / HKCR:`
+ `HKEY_USERS / HKU:`
+ `HKEY_LOCAL_MACHINE / HKLM:`
+ `HKEY_CURRENT_CONFIG / HKCC:`
+ `HKEY_CURRENT_USER / HKCU:`

**サポートされている  型**
+ `BINARY`
+ `DWORD`
+ `QWORD`
+ `SZ`
+ `EXPAND_SZ`
+ `MULTI_SZ`

**入力例:レジストリキー値の設定**

```
  - name: SetRegistryKeyValues
    action: SetRegistry
    maxAttempts: 3
    inputs:
      - path: HKLM:\SOFTWARE\MySoftWare
        name: MyName
        value: FirstVersionSoftware
        type: SZ
      - path: HKEY_CURRENT_USER\Software\Test
        name: Version
        value: 1.1
        type: DWORD
```

**出力**

なし。

### UpdateOS (Linux、Windows)
<a name="action-modules-updateos"></a>

**UpdateOS** アクションモジュールは、Windows と Linux のアップデートをインストールするためのサポートを追加します。使用可能なすべてのアップデートがデフォルトでインストールされます。あるいは、インストールするアクションモジュール用に 1 つ以上の特定のアップデートのリストを設定することもできます。インストールから除外するアップデートを指定することもできます。

「含める」リストと「除外」リストの両方を指定した場合、生成されるアップデートのリストには、「含む」リストにリストされているもののうち、「除外」リストには含まれていないものだけが含まれる可能性があります。

**注記**  
**UpdateOS** は Amazon Linux 2023 (AL2023) をサポートしていません。ベース AMI をすべてのリリースに付属する新しいバージョンに更新することをお勧めします。他の方法については、Amazon Linux 2023 User Guide の [Control updates received from major and minor releases](https://docs.aws.amazon.com/linux/al2023/ug/deterministic-upgrades.html#controlling-release-updates) を参照してください。
+ **Windows**。アップデートは、ターゲットマシンに設定されているアップデートソースからインストールされます。
+ **Linux**。アプリケーションは Linux プラットフォームでサポートされているパッケージマネージャーを確認し、`yum` または `apt-get` パッケージマネージャーを使用します。どちらもサポートされていない場合はエラーが返ります。**UpdateOS** アクションモジュールを実行するための`sudo`権限を持っている必要があります。`sudo` 権限がない場合は、`error.Input` が返されます。


**Input**  

| キー名 | 説明 | タイプ | 必須 | 
| --- | --- | --- | --- | 
| include |  Windows の場合、以下のように指定できる： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/imagebuilder/latest/userguide/toe-action-modules.html) Linux では、インストールするアップデートのリストに含めるパッケージを 1 つ以上指定できます。  | 文字列リスト | いいえ | 
| exclude |  Windows の場合、以下のように指定できる： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/imagebuilder/latest/userguide/toe-action-modules.html) Linux の場合、インストールするアップデートのリストから除外するパッケージを 1 つ以上指定できます。  | 文字列リスト | いいえ | 

**入力例: Linux アップデートのインストールのサポートを追加**

```
  - name: UpdateMyLinux
    action: UpdateOS
    onFailure: Abort
    maxAttempts: 3
    inputs:
      exclude:
        - ec2-hibinit-agent
```

**入力例: Windows 更新プログラムのインストールサポートの追加**

```
  - name: UpdateWindowsOperatingSystem
    action: UpdateOS
    onFailure: Abort
    maxAttempts: 3
    inputs:
      include:
        - KB1234567
        - '*Security*'
```

**出力**

なし。