翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS FIS API またはコマンドラインツールを使用して実験テンプレートを作成する場合は、JavaScript Object Notation (JSON) でテンプレートを作成できます。実験テンプレートのコンポーネントの詳細については、「AWS FIS 実験テンプレートコンポーネント」を参照してください。
サンプルテンプレートのいずれかを使用して実験テンプレートを作成するには、それを JSON ファイルに保存します (例えば、my-template.json
)。そして独自の値で、斜体
のプレースホルダの値を置き換えて、次の実験テンプレートの作成コマンドを実行します。
aws fis create-experiment-template --cli-input-json file://
my-template
.json
テンプレートの例
フィルターに基づいて EC2 インスタンスを停止する
次の例では、指定された VPC 内の指定されたタグを持つ、指定されたリージョンで実行中の Amazon EC2 インスタンスをすべて停止します。2 分後に再起動します。
{
"tags": {
"Name": "StopEC2InstancesWithFilters"
},
"description": "Stop and restart all instances in us-east-1b with the tag env=prod in the specified VPC",
"targets": {
"myInstances": {
"resourceType": "aws:ec2:instance",
"resourceTags": {
"env
": "prod
"
},
"filters": [
{
"path": "Placement.AvailabilityZone",
"values": ["us-east-1b
"]
},
{
"path": "State.Name",
"values": ["running
"]
},
{
"path": "VpcId",
"values": [ "vpc-aabbcc11223344556
"]
}
],
"selectionMode": "ALL
"
}
},
"actions": {
"StopInstances": {
"actionId": "aws:ec2:stop-instances",
"description": "stop the instances",
"parameters": {
"startInstancesAfterDuration": "PT2M
"
},
"targets": {
"Instances": "myInstances"
}
}
},
"stopConditions": [
{
"source": "aws:cloudwatch:alarm",
"value": "arn:aws:cloudwatch:us-east-1
:111122223333
:alarm:alarm-name
"
}
],
"roleArn": "arn:aws:iam::111122223333
:role/role-name
"
}
指定された数の EC2 インスタンスを停止する
次の の例では、指定されたタグを持つ 3 つのインスタンスを停止します。 AWS FIS は、ランダムに停止する特定のインスタンスを選択します。2 分後にこれらのインスタンスが再起動されます。
{
"tags": {
"Name": "StopEC2InstancesByCount"
},
"description": "Stop and restart three instances with the specified tag",
"targets": {
"myInstances": {
"resourceType": "aws:ec2:instance",
"resourceTags": {
"env
": "prod
"
},
"selectionMode": "COUNT(3)
"
}
},
"actions": {
"StopInstances": {
"actionId": "aws:ec2:stop-instances",
"description": "stop the instances",
"parameters": {
"startInstancesAfterDuration": "PT2M
"
},
"targets": {
"Instances": "myInstances"
}
}
},
"stopConditions": [
{
"source": "aws:cloudwatch:alarm",
"value": "arn:aws:cloudwatch:us-east-1
:111122223333
:alarm:alarm-name
"
}
],
"roleArn": "arn:aws:iam::111122223333
:role/role-name
"
}
事前設定された AWS FIS SSM ドキュメントを実行する
次の の例では、事前設定された FIS SSM AWS ドキュメント AWSFIS-Run-CPU-Stress. AWS FIS を使用して、指定された EC2 インスタンスで 60 秒間 CPU フォールトインジェクションを実行します。 AWSFIS-Run-CPU-Stress
{
"tags": {
"Name": "CPUStress"
},
"description": "Run a CPU fault injection on the specified instance",
"targets": {
"myInstance": {
"resourceType": "aws:ec2:instance",
"resourceArns": ["arn:aws:ec2:us-east-1
:111122223333
:instance/instance-id
"],
"selectionMode": "ALL
"
}
},
"actions": {
"CPUStress": {
"actionId": "aws:ssm:send-command",
"description": "run cpu stress using ssm",
"parameters": {
"duration": "PT2M
",
"documentArn": "arn:aws:ssm:us-east-1
::document/AWSFIS-Run-CPU-Stress
",
"documentParameters": "{\"DurationSeconds\": \"60
\", \"InstallDependencies\": \"True
\", \"CPU\": \"0
\"}"
},
"targets": {
"Instances": "myInstance"
}
}
},
"stopConditions": [
{
"source": "aws:cloudwatch:alarm",
"value": "arn:aws:cloudwatch:us-east-1
:111122223333
:alarm:alarm-name
"
}
],
"roleArn": "arn:aws:iam::111122223333
:role/role-name
"
}
事前定義されたオートメーション Runbook を実行する
次の例では、Systems Manager が提供する Runbook を使用して Amazon SNS に通知を発行します。AWS-PublishSNSNotification。指定された SNS トピックに通知を発行する権限をロールに付与する必要があります。
{
"description": "Publish event through SNS",
"stopConditions": [
{
"source": "none"
}
],
"targets": {
},
"actions": {
"sendToSns": {
"actionId": "aws:ssm:start-automation-execution",
"description": "Publish message to SNS",
"parameters": {
"documentArn": "arn:aws:ssm:us-east-1
::document/AWS-PublishSNSNotification",
"documentParameters": "{\"Message\": \"Hello, world
\", \"TopicArn\": \"arn:aws:sns:us-east-1
:111122223333
:topic-name
\"}",
"maxDuration": "PT1M
"
},
"targets": {
}
}
},
"roleArn": "arn:aws:iam::111122223333
:role/role-name
"
}
ターゲット IAM ロールを使用して EC2 インスタンスの API アクションをスロットルします
次の例では、ターゲット定義で指定された IAM ロールによって実行された API コールのアクション定義で指定された API コールの 100% をスロットリングします。
注記
Auto Scaling グループのメンバーである EC2 インスタンスをターゲットにする場合は、代わりに [aws:ec2:asg-insufficient-instance-capacity-error] アクションを使用し、Auto Scaling グループでターゲットにしてください。詳細については、「aws:ec2:asg-insufficient-instance-capacity-error」を参照してください。
{
"tags": {
"Name": "ThrottleEC2APIActions"
},
"description": "Throttle the specified EC2 API actions on the specified IAM role",
"targets": {
"myRole": {
"resourceType": "aws:iam:role",
"resourceArns": ["arn:aws:iam::111122223333
:role/role-name
"],
"selectionMode": "ALL
"
}
},
"actions": {
"ThrottleAPI": {
"actionId": "aws:fis:inject-api-throttle-error",
"description": "Throttle APIs for 5 minutes",
"parameters": {
"service": "ec2",
"operations": "DescribeInstances,DescribeVolumes
",
"percentage": "100
",
"duration": "PT2M
"
},
"targets": {
"Roles": "myRole"
}
}
},
"stopConditions": [
{
"source": "aws:cloudwatch:alarm",
"value": "arn:aws:cloudwatch:us-east-1
:111122223333
:alarm:alarm-name
"
}
],
"roleArn": "arn:aws:iam::111122223333
:role/role-name
"
}
Kubernetes クラスタ内のポッドの CPU のストレステスト
次の例では、Chaos Mesh を使用して Amazon EKS Kubernetes クラスター内のポッドの CPU について 1 分間ストレステストを行います。
{
"description": "ChaosMesh StressChaos example",
"targets": {
"Cluster-Target-1": {
"resourceType": "aws:eks:cluster",
"resourceArns": [
"arn:aws:eks:arn:aws::111122223333
:cluster/cluster-id
"
],
"selectionMode": "ALL
"
}
},
"actions": {
"TestCPUStress": {
"actionId": "aws:eks:inject-kubernetes-custom-resource",
"parameters": {
"maxDuration": "PT2M
",
"kubernetesApiVersion": "chaos-mesh.org/v1alpha1",
"kubernetesKind": "StressChaos",
"kubernetesNamespace": "default",
"kubernetesSpec": "{\"selector\":{\"namespaces\":[\"default\"],\"labelSelectors\":{\"run\":\"nginx\"}},\"mode\":\"all\",\"stressors\": {\"cpu\":{\"workers\":1,\"load\":50}},\"duration\":\"1m\"}"
},
"targets": {
"Cluster": "Cluster-Target-1"
}
}
},
"stopConditions": [{
"source": "none"
}],
"roleArn": "arn:aws:iam::111122223333
:role/role-name
",
"tags": {}
}
以下の例では、Litmus を使用して Amazon EKS Kubernetes クラスター内のポッドの CPU について 1 分間ストレステストを行います。
{
"description": "Litmus CPU Hog",
"targets": {
"MyCluster": {
"resourceType": "aws:eks:cluster",
"resourceArns": [
"arn:aws:eks:arn:aws::111122223333
:cluster/cluster-id
"
],
"selectionMode": "ALL
"
}
},
"actions": {
"MyAction": {
"actionId": "aws:eks:inject-kubernetes-custom-resource",
"parameters": {
"maxDuration": "PT2M
",
"kubernetesApiVersion": "litmuschaos.io/v1alpha1",
"kubernetesKind": "ChaosEngine",
"kubernetesNamespace": "litmus",
"kubernetesSpec": "{\"engineState\":\"active\",\"appinfo\":{\"appns\":\"default\",\"applabel\":\"run=nginx\",\"appkind\":\"deployment\"},\"chaosServiceAccount\":\"litmus-admin\",\"experiments\":[{\"name\":\"pod-cpu-hog\",\"spec\":{\"components\":{\"env\":[{\"name\":\"TOTAL_CHAOS_DURATION\",\"value\":\"60\"},{\"name\":\"CPU_CORES\",\"value\":\"1\"},{\"name\":\"PODS_AFFECTED_PERC\",\"value\":\"100\"},{\"name\":\"CONTAINER_RUNTIME\",\"value\":\"docker\"},{\"name\":\"SOCKET_PATH\",\"value\":\"/var/run/docker.sock\"}]},\"probe\":[]}}],\"annotationCheck\":\"false\"}"
},
"targets": {
"Cluster": "MyCluster"
}
}
},
"stopConditions": [{
"source": "none"
}],
"roleArn": "arn:aws:iam::111122223333
:role/role-name
",
"tags": {}
}