

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

# CloudWatch Logs を使用した Step Functions の実行履歴のログ記録
<a name="cw-logs"></a>

標準ワークフローは実行履歴を に記録しますが AWS Step Functions、オプションで Amazon CloudWatch Logs へのログ記録を設定できます。

Express ワークフローは、標準ワークフローとは異なり AWS Step Functionsに実行履歴を記録しません。Express ワークフローの実行履歴と結果を表示するには、Amazon CloudWatch Logs へのログ記録を設定する必要があります。ログを発行しても、実行がブロックまたは遅くなることはありません。

**ログ配信の保証**  
Amazon CloudWatch Logs はベストエフォートで配信されます。ログエントリの完全性と適時性は保証されません。Express ワークフローで保証されたワークフロー履歴が必要な場合は、Amazon DynamoDB などの適切なデータストレージサービスにデータを記録するワークフローステップを実装することをお勧めします。あるいは、保証された実行履歴のために **Standard ワークフロー**の使用を検討することもできます。

**料金情報**  
ログ記録を設定すると、[CloudWatch Logs 料金](https://aws.amazon.com/cloudwatch/pricing)が適用され、提供されたログのレートで請求されます。詳細については、「CloudWatch の料金」ページの **[ログ]** タブにある [**Vended Logs**] を参照してください。

## のログ記録の設定
<a name="monitoring-logging-configure"></a>

Step Functions コンソールを使用して Standard ワークフローを作成する場合、ステートマシンで CloudWatch Logs にログを送信する設定は**行われません**。Step Functions コンソールを使用して Express ワークフローを作成する場合、ステートマシンはデフォルトで CloudWatch Logs にログを送信するように設定されます。

Express ワークフローの場合、Step Functions は CloudWatch Logs に必要な AWS Identity and Access Management (IAM) ポリシーを持つロールを作成できます。API、CLI、または CloudFormationを使用して標準ワークフローまたは Express ワークフローを作成する場合、 ではデフォルトでログ記録が有効にならず、またロールに必要な許可があることを確認する必要があります。

コンソールからスタートした各実行について、Step Functions は CloudWatch Logs へのリンクを提供し、その実行に固有のログイベントを取得するための正しいフィルターが設定されています。

オプションで、ログを暗号化するようにカスタマーマネージド AWS KMS キーを設定できます。詳細とアクセス許可の設定については、「[保管中のデータ暗号化](encryption-at-rest.md)」を参照してください。

ログ記録を設定するには、[CreateStateMachine](https://docs.aws.amazon.com/step-functions/latest/apireference/API_CreateStateMachine.html) または [UpdateStateMachine](https://docs.aws.amazon.com/step-functions/latest/apireference/API_UpdateStateMachine.html) を使用するときに、[LoggingConfiguration](https://docs.aws.amazon.com/step-functions/latest/apireference/API_LoggingConfiguration.html) パラメータを渡すことができます。CloudWatch Logs Insights を使用すると CloudWatch Logs でデータをさらに分析できます。詳細については、[CloudWatch Logs Insights を使用したログデータの分析](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AnalyzingLogData.html)を参照してください。

## CloudWatch Logs ペイロード
<a name="cloudwatch-payload"></a>

実行履歴イベントは、入力プロパティまたは出力プロパティを定義に含めることができるかもしれません。CloudWatch Logs に送信されるエスケープされた入力または出力が 248 KiB を超えると、CloudWatch Logs のクォータにより切り捨てられます。
+  `inputDetails` と `outputDetails` パイプラインをレビューして、ペイロードが切り捨てられたかどうかを確定できます。詳細については、[`HistoryEventExecutionDataDetails` データ](https://docs.aws.amazon.com/step-functions/latest/apireference/API_HistoryEventExecutionDataDetails.html)を参照してください。
+  標準ワークフローs では、[https://docs.aws.amazon.com/step-functions/latest/apireference/API_GetExecutionHistory.html](https://docs.aws.amazon.com/step-functions/latest/apireference/API_GetExecutionHistory.html) を使用して完全な実行履歴を表示できます。
+  `GetExecutionHistory` は、Express ワークフローでは使用できません。フル入出力を表示したいのであれば、Amazon S3 ARN を使用できます。詳細については、「[Step Functions で大きなペイロードを渡す代わりに Amazon S3 の ARN を使用する](sfn-best-practices.md#avoid-exec-failures)」を参照してください。

## CloudWatch Logs にログ記録するための IAM ポリシー
<a name="cloudwatch-iam-policy"></a>

CloudWatch Logs にログ記録するための適切な許可を持つ、ステートマシンの実行 IAM ロールを、以下の例に示されるように設定する必要もあります。

**IAM ポリシーの例**  
以下は、アクセス許可を設定するために使用できるポリシーの例です。次の例に示すように、`Resource` フィールドに **\$1** を指定する必要があります。CreateLogDelivery や DescribeLogGroups などの CloudWatch API アクションは、[Amazon CloudWatch Logs で定義されるリソースタイプ](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncloudwatchlogs.html#amazoncloudwatchlogs-resources-for-iam-policies)をサポートしていません。詳細については、「[Amazon CloudWatch Logs で定義されるアクション](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncloudwatchlogs.html#amazoncloudwatchlogs-actions-as-permissions)」を参照してください。
+ CloudWatch リソースの情報については、「*Amazon CloudWatch ユーザーガイド*」の「[CloudWatch Logs がリソースとオペレーションをログに記録する](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format)」を参照してください。
+ CloudWatch Logs にログを送信するよう設定するために必要なアクセス許可については、「*CloudWatch Logs に送信されるログ*」セクションの「[ユーザーアクセス許可](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-logs-infrastructure-CWL)」を参照してください。

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogDelivery",
                "logs:CreateLogStream",
                "logs:GetLogDelivery",
                "logs:UpdateLogDelivery",
                "logs:DeleteLogDelivery",
                "logs:ListLogDeliveries",
                "logs:PutLogEvents",
                "logs:PutResourcePolicy",
                "logs:DescribeResourcePolicies",
                "logs:DescribeLogGroups"
            ],
            "Resource": "*"
        }
    ]
}
```

## Step Functions 実行イベントのログレベル
<a name="cloudwatch-log-level"></a>

ログレベルの範囲は `ALL` から `ERROR`、`FATAL`、`OFF` です。すべてのイベントタイプは `ALL` に対してログに記録され、`OFF` に設定するとイベントタイプはログに記録されません。`ERROR` および `FATAL` については、次の表を参照してください。

これらの**ログレベル**に基づいて Express ワークフローを実行したときに表示される実行データの詳細については、「[Standard コンソールと Express コンソールのエクスペリエンスの違い](concepts-view-execution-details.md#console-exp-differences)」を参照してください。


| イベントタイプ | `ALL` | `ERROR` | `FATAL` | `OFF` | 
| --- | --- | --- | --- | --- | 
|  ChoiceStateEntered  | ログ記録済み | ログに記録されない | ログに記録されない | ログに記録されない | 
|  ChoiceStateExited  | ログ記録済み | ログに記録されない | ログに記録されない | ログに記録されない | 
|  ExecutionAborted  | ログ記録済み | ログ記録済み | ログ記録済み | ログに記録されない | 
|  ExecutionFailed  | ログ記録済み | ログ記録済み | ログ記録済み | ログに記録されない | 
|  ExecutionStarted  | ログ記録済み | ログに記録されない | ログに記録されない | ログに記録されない | 
|  ExecutionSucceeded  | ログ記録済み | ログに記録されない | ログに記録されない | ログに記録されない | 
|  ExecutionTimedOut  | ログ記録済み | ログ記録済み | ログ記録済み | ログに記録されない | 
|  FailStateEntered  | ログ記録済み | ログ記録済み | ログに記録されない | ログに記録されない | 
|  LambdaFunctionFailed  | ログ記録済み | ログ記録済み | ログに記録されない | ログに記録されない | 
| LambdaFunctionScheduled | ログ記録済み | ログに記録されない | ログに記録されない | ログに記録されない | 
|  LambdaFunctionScheduleFailed  | ログ記録済み | ログ記録済み | ログに記録されない | ログに記録されない | 
|  LambdaFunctionStarted  | ログ記録済み | ログに記録されない | ログに記録されない | ログに記録されない | 
|  LambdaFunctionStartFailed  | ログ記録済み | ログ記録済み | ログに記録されない | ログに記録されない | 
|  LambdaFunctionSucceeded  | ログ記録済み | ログに記録されない | ログに記録されない | ログに記録されない | 
|  LambdaFunctionTimedOut  | ログ記録済み | ログ記録済み | ログに記録されない | ログに記録されない | 
|  MapIterationAborted  | ログ記録済み | ログ記録済み | ログに記録されない | ログに記録されない | 
|  MapIterationFailed  | ログ記録済み | ログ記録済み | ログに記録されない | ログに記録されない | 
|  MapIterationStarted  | ログ記録済み | ログに記録されない | ログに記録されない | ログに記録されない | 
|  MapIterationSucceeded  | ログ記録済み | ログに記録されない | ログに記録されない | ログに記録されない | 
|  MapRunAborted  | ログ記録済み | ログ記録済み | ログに記録されない | ログに記録されない | 
|  MapRunFailed  | ログ記録済み | ログ記録済み | ログに記録されない | ログに記録されない | 
|  MapStateAborted  | ログ記録済み | ログ記録済み | ログに記録されない | ログに記録されない | 
|  MapStateEntered  | ログ記録済み | ログに記録されない | ログに記録されない | ログに記録されない | 
|  MapStateExited  | ログ記録済み | ログに記録されない | ログに記録されない | ログに記録されない | 
|  MapStateFailed  | ログ記録済み | ログ記録済み | ログに記録されない | ログに記録されない | 
|  MapStateStarted  | ログ記録済み | ログに記録されない | ログに記録されない | ログに記録されない | 
|  MapStateSucceeded  | ログ記録済み | ログに記録されない | ログに記録されない | ログに記録されない | 
|  ParallelStateAborted  | ログ記録済み | ログ記録済み | ログに記録されない | ログに記録されない | 
|  ParallelStateEntered  | ログ記録済み | ログに記録されない | ログに記録されない | ログに記録されない | 
|  ParallelStateExited  | ログ記録済み | ログに記録されない | ログに記録されない | ログに記録されない | 
| ParallelStateFailed | ログ記録済み | ログ記録済み | ログに記録されない | ログに記録されない | 
|  ParallelStateStarted  | ログ記録済み | ログに記録されない | ログに記録されない | ログに記録されない | 
|  ParallelStateSucceeded  | ログ記録済み | ログに記録されない | ログに記録されない | ログに記録されない | 
|  PassStateEntered  | ログ記録済み | ログに記録されない | ログに記録されない | ログに記録されない | 
|  PassStateExited  | ログ記録済み | ログに記録されない | ログに記録されない | ログに記録されない | 
|  SucceedStateEntered  | ログ記録済み | ログに記録されない | ログに記録されない | ログに記録されない | 
|  SucceedStateExited  | ログ記録済み | ログに記録されない | ログに記録されない | ログに記録されない | 
|  TaskFailed  | ログ記録済み | ログ記録済み | ログに記録されない | ログに記録されない | 
|  TaskScheduled  | ログ記録済み | ログに記録されない | ログに記録されない | ログに記録されない | 
| TaskStarted | ログ記録済み | ログに記録されない | ログに記録されない | ログに記録されない | 
|  TaskStartFailed  | ログ記録済み | ログ記録済み | ログに記録されない | ログに記録されない | 
|  TaskStateAborted  | ログ記録済み | ログ記録済み | ログに記録されない | ログに記録されない | 
|  TaskStateEntered  | ログ記録済み | ログに記録されない | ログに記録されない | ログに記録されない | 
| TaskStateExited | ログ記録済み | ログに記録されない | ログに記録されない | ログに記録されない | 
| TaskSubmitFailed | ログ記録済み | ログ記録済み | ログに記録されない | ログに記録されない | 
| TaskSubmitted | ログ記録済み | ログに記録されない | ログに記録されない | ログに記録されない | 
| TaskSucceeded | ログ記録済み | ログに記録されない | ログに記録されない | ログに記録されない | 
| TaskTimedOut | ログ記録済み | ログ記録済み | ログに記録されない | ログに記録されない | 
| WaitStateAborted | ログ記録済み | ログ記録済み | ログに記録されない | ログに記録されない | 
| WaitStateEntered | ログ記録済み | ログに記録されない | ログに記録されない | ログに記録されない | 
| WaitStateExited | ログ記録済み | ログに記録されない | ログに記録されない | ログに記録されない | 

## CloudWatch Logs へのログ記録のトラブルシューティング
<a name="cloudwatch-log-troubleshooting"></a><a name="troubleshooting-logging-to-cloudwatch"></a>

ステートマシンが CloudWatch Logs にログを送信できない、またはエラー「`AccessDeniedException : The state machine IAM Role is not authorized to access the Log Destination`」が表示される場合は、以下の手順を試してください。

1. CloudWatch Logs にログを記録するためのアクセス許可を持つ、ステートマシン実行ロールを検証します。

   [CreateStateMachine](https://docs.aws.amazon.com/step-functions/latest/apireference/API_CreateStateMachine.html) または [UpdateStateMachine](https://docs.aws.amazon.com/step-functions/latest/apireference/API_UpdateStateMachine.html) API エンドポイントを呼び出すときは、`roleArn` パラメータで指定された IAM ロールに、前述の IAM ポリシーの例に示した必要なアクセス許可が付与されていることを確認します。

1. CloudWatch Logs リソースポリシーが 5,120 文字の制限を超えていないことを確認します。

   ポリシーが文字制限を超える場合は、ロググループ名に `/aws/vendedlogs/states` のプレフィックスを付けて、ステートマシンにアクセス許可を付与し、制限を回避します。

   Step Function コンソールでロググループを作成すると、推奨されるロググループ名には既に `/aws/vendedlogs/states` のプレフィックスが付いています。ログ記録のベストプラクティスの詳細については、「[CloudWatch Logs リソースポリシーのサイズ制限の回避](sfn-best-practices.md#bp-cwl)」を参照してください。

1. アカウントの CloudWatch Logs ログリソースポリシーの数が **10** 未満であることを確認します。

   CloudWatch Logs では、リージョンごと、アカウントごとに、リソースポリシーのクォータが 10 に設定されています。既に 10 個のリソースポリシーがあるステートマシンでログ記録を有効にしようとすると、ステートマシンは作成も更新もされず、エラーが表示されます。ログ記録に関するクォータの詳細については、「[CloudWatch Logs のクォータ](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/cloudwatch_limits_cwl.html)」を参照してください。

   問題を確認するには、CLI コマンドを使用してリソースポリシーの数を確認します。

    [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/logs/describe-resource-policies.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/logs/describe-resource-policies.html)

   問題を解決するには、既存のリソースポリシーを修正します。

   まず、既存のポリシーをバックアップします。次に、類似のアクションやリソースを新しいポリシーに結合し、以下の CLI コマンドを使用してアカウントに新しい配信ソースを作成します。

   [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/logs/put-delivery-source.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/logs/put-delivery-source.html)

   ポリシーをバックアップして更新したら、次のコマンドを使用して未使用のポリシーを削除します。

    [https://docs.aws.amazon.com/cli/latest/reference/logs/delete-resource-policy.html](https://docs.aws.amazon.com/cli/latest/reference/logs/delete-resource-policy.html)