

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

# AZ: Application Slowdown
<a name="az-application-slowdown-scenario"></a>

 AZ: Application Slowdown シナリオを使用して、単一のアベイラビリティーゾーン (AZ) 内のリソース間にレイテンシーを追加できます。このレイテンシーにより、アプリケーションの速度低下、部分的な中断、グレー障害と呼ばれる多くの症状が発生します。ターゲットリソース間のネットワークフローにレイテンシーを追加します。ネットワークフローは、コンピューティングリソース間のトラフィック、つまりサーバー、コンテナ、サービス間のリクエスト、レスポンス、その他の通信を伝送するデータパケットを表します。このシナリオは、オブザーバビリティ設定の検証、アラームしきい値の調整、速度低下に対するアプリケーションの感度の検出、AZ 退避などの重要な運用上の意思決定の実践に役立ちます。

 デフォルトでは、シナリオは 30 分間、選択した AZ 内のターゲットリソース間のネットワークフローの 100% に 200 ミリ秒のレイテンシーを追加します。AWS FIS コンソール**の共有パラメータの編集**ダイアログを使用して、シナリオレベルで次のパラメータを調整し、基盤となるアクションに適用できます。
+  アベイラビリティーゾーン - シナリオで損なう AZ を選択できます。
+  ミリ秒 (ms) のレイテンシー - アプリケーションの感度とニーズに基づいて調整します。たとえば、より機密性の高いアプリケーションではレイテンシーを低く設定したり、タイムアウト処理をテストしたりすることができます。現在のアプリケーションレイテンシーの倍数をベースラインとして使用することを検討してください。
+  フローの割合 - トラフィックのサブセットを損なうように減らします。たとえば、ネットワークフローの 25% に影響する 200 ミリ秒のレイテンシーを追加して、より微妙なテストを行うことができます。
+  Duration - 実験の実行時間を設定します。を短縮してテストを高速化したり、長時間持続テストを実行したりできます。たとえば、障害が発生した条件下で復旧メカニズムをテストするには、期間を 2 時間に設定します。
+  リソースターゲティング - タグ (EC2 インスタンスまたは EC2 または Fargate の ECS タスクの場合) またはラベル (EC2 の EKS ポッドの場合) を使用して、シナリオ全体のターゲットリソースを定義できますEC2。独自のタグとラベルを指定することも、シナリオで提供されるデフォルトを使用することもできます。タグやラベルを使用しない場合は、他のパラメータを指定して アクションを編集してリソースをターゲットにできます。
+  カスタマイズ - EC2 または ECS リソースをターゲットにしない場合は、アクションをデフォルトのタグのままにできます。実験では、ターゲットとするリソースが見つからず、アクションはスキップされます。ただし、EKS リソースをターゲットにしない場合は、EKS クラスター識別子を指定する必要があるため、シナリオから EKS アクションとターゲットを完全に削除する必要があります。さらに詳細なカスタマイズのために、実験テンプレートで個々のアクションを直接変更できます。

## アクション
<a name="az-application-slowdown-scenario-actions"></a>

 以下のアクションを組み合わせると、ネットワークフローにレイテンシーが追加され、アプリケーションを介して伝播されるため、アプリケーションの速度低下の多くの症状を 1 つの AZ で作成できます。これらのアクションは並行して実行され、デフォルトでは 200 ミリ秒のレイテンシーが 30 分間追加されます。この期間を過ぎると、レイテンシーは通常のレベルに戻ります。このシナリオを実行するには、EC2 インスタンス、ECS タスク、または EKS ポッドのいずれかのリソースタイプが必要です。

### ECS ネットワークレイテンシー
<a name="az-application-slowdown-scenario-actions-ecs-network-latency"></a>

 AZ: Application Slowdown には、ECS タスクのレイテンシーを導入するための [aws:ecs:task-network-latency](https://docs.aws.amazon.com/fis/latest/userguide/fis-actions-reference.html#task-network-latency) が含まれています。アクションは、選択した AZ のタスクをターゲットにします。デフォルトでは、値が の という名前の[タグ](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-using-tags.html)`AZApplicationSlowdown`を持つタスクを対象としています`LatencyForECS`。デフォルトのタグを独自のタグに置き換えるか、タスクにシナリオタグを追加できます。有効なタスクが見つからない場合、このアクションはスキップされます。ECS で実験を実行する前に、[ECS タスクアクションの設定手順](https://docs.aws.amazon.com/fis/latest/userguide/ecs-task-actions.html)に従う必要があります。

### EKS ネットワークレイテンシー
<a name="az-application-slowdown-scenario-actions-eks-network-latency"></a>

 AZ: Application Slowdown には、EKS ポッドのレイテンシーを導入するための [aws:eks:pod-network-latency](https://docs.aws.amazon.com/fis/latest/userguide/fis-actions-reference.html#pod-network-latency) が含まれています。アクションは、選択した AZ のポッドをターゲットにします。デフォルトでは、key=value 形式のラベルを持つクラスター内のポッドをターゲットにします。デフォルトのラベルは です`AZApplicationSlowdown=LatencyForEKS`。デフォルトのラベルを独自のラベルに置き換えるか、このラベルをポッドに追加できます。有効なポッドが見つからない場合、このアクションはスキップされます。EKS で実験を実行する前に、[EKS ポッドアクションのセットアップ手順](https://docs.aws.amazon.com/fis/latest/userguide/eks-pod-actions.html)に従う必要があります。

### EC2 ネットワークレイテンシー
<a name="az-application-slowdown-scenario-actions-ec2-network-latency"></a>

 AZ: Application Slowdown は、[aws:ssm:send-command](https://docs.aws.amazon.com/fis/latest/userguide/fis-actions-reference.html#ssm-send-command) アクションを使用して [AWSFIS-Run-Network-Latency-Sources](https://docs.aws.amazon.com/fis/latest/userguide/actions-ssm-agent.html#awsfis-run-network-latency-sources) ドキュメントを実行し、EC2 インスタンスのレイテンシーを導入します。アクションは、選択した AZ のインスタンスをターゲットにします。デフォルトでは、値が の という名前の[タグ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html)`AZApplicationSlowdown`を持つインスタンスをターゲットにしています`LatencyForEC2`。デフォルトのタグを独自のタグに置き換えるか、このタグをインスタンスに追加できます。有効なインスタンスが見つからない場合、このアクションはスキップされます。SSM を使用して EC2 で実験を実行する前に、[AWS Systems Manager エージェントを設定](https://docs.aws.amazon.com/fis/latest/userguide/actions-ssm-agent.html)する必要があります。

## 制限事項
<a name="az-application-slowdown-scenario-limitations"></a>
+  このシナリオに[停止条件](https://docs.aws.amazon.com/fis/latest/userguide/stop-conditions.html)は含まれていません。アプリケーションに適した停止条件を実験テンプレートに追加する必要があります。

## 要件
<a name="az-application-slowdown-scenario-requirements"></a>
+  AWS FIS [実験ロール](https://docs.aws.amazon.com/fis/latest/userguide/getting-started-iam-service-role.html)に必要なアクセス許可を追加します。
+  選択した AZ 内の EC2 インスタンス、ECS タスク、または EKS ポッドの 3 つのタイプのいずれかから 1 つ以上のリソースをターゲットにする必要があります。
+  シナリオのすべてのターゲットは、同じ VPC 内にある必要があります。

## アクセス許可
<a name="az-application-slowdown-scenario-permissions"></a>

 このシナリオを実行するには、FIS が実験でターゲットとするリソースタイプのロールと管理ポリシー、EC2、ECS、EKS を引き受けることを許可する信頼ポリシーを持つ IAM ロールが必要です。AZ: Application Slowdown シナリオから実験テンプレートを作成すると、FIS は信頼ポリシーと次の AWS 管理ポリシーを使用してロールを作成します。
+  [AWSFaultInjectionSimulatorEC2Access](https://docs.aws.amazon.com/fis/latest/userguide/security-iam-awsmanpol.html#AWSFaultInjectionSimulatorEC2Access) 
+  [AWSFaultInjectionSimulatorECSAccess](https://docs.aws.amazon.com/fis/latest/userguide/security-iam-awsmanpol.html#AWSFaultInjectionSimulatorECSAccess) 
+  [AWSFaultInjectionSimulatorEKSAccess](https://docs.aws.amazon.com/fis/latest/userguide/security-iam-awsmanpol.html#AWSFaultInjectionSimulatorEKSAccess) 

 既存の [IAM ロール](https://docs.aws.amazon.com/fis/latest/userguide/getting-started-iam-service-role.html)を使用して AZ: Application Slowdown シナリオを実行している場合は、次のポリシーをアタッチして AWS FIS に必要なアクセス許可を付与できます。

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DescribeTasks",
            "Effect": "Allow",
            "Action": "ecs:DescribeTasks",
            "Resource": "*"
        },
        {
            "Sid": "DescribeContainerInstances",
            "Effect": "Allow",
            "Action": "ecs:DescribeContainerInstances",
            "Resource": "arn:aws:ecs:*:*:container-instance/*/*"
        },
        {
            "Sid": "DescribeInstances",
            "Effect": "Allow",
            "Action": "ec2:DescribeInstances",
            "Resource": "*"
        },
        {
            "Sid": "DescribeSubnets",
            "Effect": "Allow",
            "Action": "ec2:DescribeSubnets",
            "Resource": "*"
        },
        {
            "Sid": "DescribeCluster",
            "Effect": "Allow",
            "Action": "eks:DescribeCluster",
            "Resource": "arn:aws:eks:*:*:cluster/*"
        },
        {
            "Sid": "TargetResolutionByTags",
            "Effect": "Allow",
            "Action": "tag:GetResources",
            "Resource": "*"
        },
        {
            "Sid": "SendCommand",
            "Effect": "Allow",
            "Action": [
                "ssm:SendCommand"
            ],
            "Resource": [
                "arn:aws:ec2:*:*:instance/*",
                "arn:aws:ssm:*:*:managed-instance/*",
                "arn:aws:ssm:*:*:document/*"
            ]
        },
        {
            "Sid": "ListCommands",
            "Effect": "Allow",
            "Action": [
                "ssm:ListCommands"
            ],
            "Resource": "*"
        },
        {
            "Sid": "CancelCommand",
            "Effect": "Allow",
            "Action": [
                "ssm:CancelCommand"
            ],
            "Resource": "*"
        }
    ]
}
```

## シナリオのコンテンツ
<a name="az-application-slowdown-scenario-content"></a>

 次のコンテンツはシナリオを定義しています。この JSON を保存し、AWS コマンドラインインターフェイス (AWS CLI) から [create-experiment-template](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/fis/create-experiment-template.html) コマンドを使用して[実験テンプレート](https://docs.aws.amazon.com/fis/latest/userguide/experiment-templates.html)を作成するのに使用できます。シナリオの最新バージョンについては、FIS コンソールのシナリオライブラリにアクセスし、**コンテンツ**タブに移動します。

```
{
    "tags": {
        "Name": "AZ: Application Slowdown"
    },
    "description": "Add latency between resources within a single AZ.",
    "actions": {
        "LatencyForEKS": {
            "actionId": "aws:eks:pod-network-latency",
            "parameters": {
                "delayMilliseconds": "200",
                "duration": "PT30M",
                "flowsPercent": "100",
                "interface": "DEFAULT",
                "kubernetesServiceAccount": "fis-service-account",
                "sources": "us-east-1a"
            },
            "targets": {
                "Pods": "TargetsForEKS"
            }
        },
        "LatencyForEC2": {
            "actionId": "aws:ssm:send-command",
            "parameters": {
                "duration": "PT30M",
                "documentArn": "arn:aws:ssm:us-east-1::document/AWSFIS-Run-Network-Latency-Sources",
                "documentParameters": "{\"DelayMilliseconds\":\"200\",\"Sources\":\"us-east-1a\",\"Interface\":\"DEFAULT\",\"TrafficType\":\"egress\",\"DurationSeconds\":\"1800\",\"FlowsPercent\":\"100\",\"InstallDependencies\":\"True\"}"
            },
            "targets": {
                "Instances": "TargetsForEC2"
            }
        },
        "LatencyForECS": {
            "actionId": "aws:ecs:task-network-latency",
            "parameters": {
                "delayMilliseconds": "200",
                "duration": "PT30M",
                "flowsPercent": "100",
                "installDependencies": "true",
                "sources": "us-east-1a",
                "useEcsFaultInjectionEndpoints": "true"
            },
            "targets": {
                "Tasks": "TargetsForECS"
            },
            "startAfter": []
        }
    },
    "targets": {
        "TargetsForEKS": {
            "parameters": {
                "availabilityZoneIdentifier": "us-east-1a",
                "clusterIdentifier": "",
                "namespace": "default",
                "selectorType": "labelSelector",
                "selectorValue": "AZApplicationSlowdown=LatencyForEKS"
            },
            "resourceType": "aws:eks:pod",
            "selectionMode": "ALL"
        },
        "TargetsForEC2": {
            "filters": [
                {
                    "path": "Placement.AvailabilityZone",
                    "values": [
                        "us-east-1a"
                    ]
                }
            ],
            "resourceTags": {
                "AZApplicationSlowdown": "LatencyForEC2"
            },
            "resourceType": "aws:ec2:instance",
            "selectionMode": "ALL"
        },
        "TargetsForECS": {
            "filters": [
                {
                    "path": "AvailabilityZone",
                    "values": [
                        "us-east-1a"
                    ]
                }
            ],
            "resourceTags": {
                "AZApplicationSlowdown": "LatencyForECS"
            },
            "resourceType": "aws:ecs:task",
            "selectionMode": "ALL"
        }
    },
    "experimentOptions": {
        "accountTargeting": "single-account",
        "emptyTargetResolutionMode": "skip"
    },
    "stopConditions": [
        {
            "source": "none"
        }
    ]
}
```