

# AWS CLI の構造化エラー出力
<a name="cli-usage-error-format"></a>

このトピックでは、AWS Command Line Interface (AWS CLI) の構造化エラー出力の形式について説明します。CLI は stderr にエラーを書き込み、次の形式をサポートします。
+ **[`enhanced`](#cli-error-format-enhanced)** (デフォルト) - 追加の詳細がインラインで表示されるエラーメッセージ。人間が読み取るデバッグに使用します。
+ **[`json`](#cli-error-format-json)** - 出力は [JSON](https://json.org/) 文字列としてフォーマットされます。オートメーションとスクリプトに使用します。
+ **[`yaml`](#cli-error-format-yaml)** - 出力は [YAML](https://yaml.org/) 文字列としてフォーマットされます。オートメーションとスクリプトに使用します。
+ **[`text`](#cli-error-format-text)** - テキストフォーマットを使用してエラーをフォーマットします。クイックビジュアルスキャンに使用します。
+ **[`table`](#cli-error-format-table)** - テーブルフォーマットを使用してエラーをフォーマットします。クイックビジュアルスキャンに使用します。
+ **[`legacy`](#cli-error-format-legacy)** – 構造化された詳細を含まない元のエラー形式。下位互換性のために使用します。

## エラー形式の設定
<a name="cli-error-format-configuring"></a>

エラー形式は、次のいずれかの方法を使用して設定できます。

コマンドラインフラグ  

```
$ aws {{<command>}} --cli-error-format json
```

設定ファイル (`~/.aws/config`)  

```
[default]
cli_error_format = json
```

環境変数  

```
$ export AWS_CLI_ERROR_FORMAT=yaml
```

## エラー出力形式
<a name="cli-error-output-formats"></a>

以降のセクションでは、各型式について説明します。

### 拡張形式 (デフォルト)
<a name="cli-error-format-enhanced"></a>

拡張形式では、エラーメッセージとシンプルな値の追加の詳細がインラインで表示されます。複雑な構造の場合、形式は JSON または YAML を使用するためのヒントを提供します。

**例: リージョン設定がありません**

```
aws: [ERROR]: An error occurred (NoRegion): You must specify a region. You can also configure your region by running "aws configure".
```

**例: 追加フィールドを持つ存在しない Lambda 関数**

```
aws: [ERROR]: An error occurred (ResourceNotFoundException) when calling the GetFunction operation: Function not found: arn:aws:lambda:us-west-2:123456789012:function:nonexistent-function-12345

Additional error details:
Type: User
```

「追加のエラーの詳細」セクションには、サービスのエラーシェイプモデルで定義されているフィールドのみが表示されます。エラーレスポンスのモデル化されていないフィールドは表示されません。

**例: 複雑なエラーフィールド**

```
An error occurred (TransactionCanceledException) when calling the TransactWriteItems operation: Transaction cancelled, please refer cancellation reasons for specific reasons [ConditionalCheckFailed, None]

Additional error details:
CancellationReasons: <complex value>
Use "--cli-error-format json" or another error format to see the full details.
```

### JSON 形式
<a name="cli-error-format-json"></a>

JSON 形式は、すべてのエラーフィールドを含む構造化表現を提供します。

**例: リージョン設定がありません**

```
{
    "Code": "NoRegion",
    "Message": "You must specify a region. You can also configure your region by running \"aws configure\"."
}
```

**例: 存在しない Lambda 関数**

```
{
    "Code": "ResourceNotFoundException",
    "Message": "Function not found: arn:aws:lambda:us-west-2:123456789012:function:nonexistent-function-12345",
    "Type": "User"
}
```

### YAML 形式
<a name="cli-error-format-yaml"></a>

YAML 形式は、すべてのエラーフィールドを含む構造化表現を提供します。

**例: リージョン設定がありません**

```
Code: NoRegion
Message: You must specify a region. You can also configure your region by running "aws configure".
```

**例: 存在しない Lambda 関数**

```
Code: ResourceNotFoundException
Message: "Function not found: arn:aws:lambda:us-west-2:123456789012:function:nonexistent-function-12345"
Type: User
```

### テキスト形式
<a name="cli-error-format-text"></a>

テキスト形式は、成功したコマンド出力と同じフォーマットを使用します。

**例: 存在しない Lambda 関数**

```
ResourceNotFoundException    Function not found: arn:aws:lambda:us-west-2:123456789012:function:nonexistent-function-12345    User
```

### テーブル形式
<a name="cli-error-format-table"></a>

テーブル形式は、成功したコマンド出力と同じフォーマットを使用します。

**例: 存在しない Lambda 関数**

```
------------------------------------------------------------------------------------------------------------------------------------|
|                                                              error                                                                 |
+----------------------------+--------------------------------------------------------------------------------------------------+------+
|            Code            |                              Message                                                             | Type |
+----------------------------+--------------------------------------------------------------------------------------------------+------+
|  ResourceNotFoundException |  Function not found: arn:aws:lambda:us-west-2:123456789012:function:nonexistent-function-12345   | User |
+----------------------------+--------------------------------------------------------------------------------------------------+------+
```

### 従来の形式
<a name="cli-error-format-legacy"></a>

従来の形式は、構造化された詳細のない元のエラー形式を提供します。この形式には、CLI 例外の「An error occurred (ErrorCode):」プレフィックスは含まれません。

**例: リージョン設定がありません**

```
aws: [ERROR]: You must specify a region. You can also configure your region by running "aws configure".
```

**例: 存在しない Lambda 関数**

```
An error occurred (ResourceNotFoundException) when calling the GetFunction operation: Function not found: arn:aws:lambda:us-west-2:123456789012:function:nonexistent-function-12345
```

**注記**  
エラーに、CLI 例外の `aws: [ERROR]:` プレフィックスが一貫して含まれるようになりました。以前のバージョンには、このプレフィックスが常に含まれていたわけではありません。  
次の例外は、設定されたエラー形式に関係なく、常に従来の形式を使用します。  
`UnknownArgumentError` - 使用状況の情報を表示します
キーボード割り込み (`KeyboardInterrupt`)

## 完全な例
<a name="cli-error-format-example"></a>

次の例は、JSON エラー形式のコマンドを示しています。

```
$ aws lambda get-function \
    --function-name nonexistent-function-12345 \
    --cli-error-format json
```

出力 (stderr):

```
{
    "Code": "ResourceNotFoundException",
    "Message": "Function not found: arn:aws:lambda:us-west-2:123456789012:function:nonexistent-function-12345",
    "Type": "User"
}
```

`Type` フィールドは、Lambda サービスのエラーシェイプで定義され、モデル化されたエラーメンバーです。構造化エラー出力には、サービスのエラーモデルで定義されたフィールドのみが含まれます。