AWS CLI를 사용한 AWS FIS 예시 - AWS Command Line Interface

이 문서는 AWS CLI의 버전 1에만 해당합니다. AWS CLI의 버전 2와 관련된 문서는 버전 2 사용 설명서를 참조하세요.

AWS CLI를 사용한 AWS FIS 예시

다음 코드 예시에서는 AWS FIS에서 AWS Command Line Interface를 사용하여 작업을 수행하고 일반적인 시나리오를 구현하는 방법을 보여줍니다.

작업은 대규모 프로그램에서 발췌한 코드이며 컨텍스트에 맞춰 실행해야 합니다. 작업은 관련 시나리오의 컨텍스트에 따라 표시되며, 개별 서비스 함수를 직접적으로 호출하는 방법을 보여줍니다.

각 예시에는 전체 소스 코드에 대한 링크가 포함되어 있으며, 여기에서 컨텍스트에 맞춰 코드를 설정하고 실행하는 방법에 대한 지침을 찾을 수 있습니다.

주제

작업

다음 코드 예시에서는 create-experiment-template을 사용하는 방법을 보여 줍니다.

AWS CLI

실험 템플릿을 생성하는 방법

다음 create-experiment-template 예제에서는 AWS FIS 계정에 실험 템플릿을 생성합니다.

aws fis create-experiment-template \ --cli-input-json file://myfile.json

myfile.json의 콘텐츠:

{ "description": "experimentTemplate", "stopConditions": [ { "source": "aws:cloudwatch:alarm", "value": "arn:aws:cloudwatch:us-west-2:123456789012:alarm:alarmName" } ], "targets": { "Instances-Target-1": { "resourceType": "aws:ec2:instance", "resourceArns": [ "arn:aws:ec2:us-west-2:123456789012:instance/i-12a3b4c56d78e9012" ], "selectionMode": "ALL" } }, "actions": { "reboot": { "actionId": "aws:ec2:reboot-instances", "description": "reboot", "parameters": {}, "targets": { "Instances": "Instances-Target-1" } } }, "roleArn": "arn:aws:iam::123456789012:role/myRole" }

출력:

{ "experimentTemplate": { "id": "ABCDE1fgHIJkLmNop", "description": "experimentTemplate", "targets": { "Instances-Target-1": { "resourceType": "aws:ec2:instance", "resourceArns": [ "arn:aws:ec2:us-west-2:123456789012:instance/i-12a3b4c56d78e9012" ], "selectionMode": "ALL" } }, "actions": { "reboot": { "actionId": "aws:ec2:reboot-instances", "description": "reboot", "parameters": {}, "targets": { "Instances": "Instances-Target-1" } } }, "stopConditions": [ { "source": "aws:cloudwatch:alarm", "value": "arn:aws:cloudwatch:us-west-2:123456789012:alarm:alarmName" } ], "creationTime": 1616434850.659, "lastUpdateTime": 1616434850.659, "roleArn": "arn:aws:iam::123456789012:role/myRole", "tags": {} } }

자세한 내용은 AWS Fault Injection Simulator 사용 설명서Create an experiment template을 참조하세요.

다음 코드 예시에서는 delete-experiment-template을 사용하는 방법을 보여 줍니다.

AWS CLI

실험 템플릿을 삭제하는 방법

다음 delete-experiment-template 예제에서는 지정된 실험 템플릿을 삭제합니다.

aws fis delete-experiment-template \ --id ABCDE1fgHIJkLmNop

출력:

{ "experimentTemplate": { "id": "ABCDE1fgHIJkLmNop", "description": "myExperimentTemplate", "targets": { "Instances-Target-1": { "resourceType": "aws:ec2:instance", "resourceArns": [ "arn:aws:ec2:us-west-2:123456789012:instance/i-12a3b4c56d78e9012" ], "selectionMode": "ALL" } }, "actions": { "testaction": { "actionId": "aws:ec2:stop-instances", "parameters": {}, "targets": { "Instances": "Instances-Target-1" } } }, "stopConditions": [ { "source": "none" } ], "creationTime": 1616017191.124, "lastUpdateTime": 1616017859.607, "roleArn": "arn:aws:iam::123456789012:role/FISRole" } }

자세한 내용은 AWS Fault Injection Simulator 사용 설명서Delete an experiment template를 참조하세요.

다음 코드 예시에서는 get-action을 사용하는 방법을 보여 줍니다.

AWS CLI

작업 세부 정보를 가져오는 방법

다음 get-action 예제에서는 지정된 작업의 세부 정보를 가져옵니다.

aws fis get-action \ --id aws:ec2:stop-instances

출력:

{ "action": { "id": "aws:ec2:stop-instances", "description": "Stop the specified EC2 instances.", "parameters": { "startInstancesAfterDuration": { "description": "The time to wait before restarting the instances (ISO 8601 duration).", "required": false } }, "targets": { "Instances": { "resourceType": "aws:ec2:instance" } }, "tags": {} } }

자세한 내용은 AWS Fault Injection Simulator 사용 설명서Actions를 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조GetAction을 참조하세요.

다음 코드 예시에서는 get-experiment-template을 사용하는 방법을 보여 줍니다.

AWS CLI

실험 템플릿 세부 정보를 가져오는 방법

다음 get-experiment-template 예제에서는 지정된 실험 템플릿의 세부 정보를 가져옵니다.

aws fis get-experiment-template \ --id ABCDE1fgHIJkLmNop

출력:

{ "experimentTemplate": { "id": "ABCDE1fgHIJkLmNop", "description": "myExperimentTemplate", "targets": { "Instances-Target-1": { "resourceType": "aws:ec2:instance", "resourceArns": [ "arn:aws:ec2:us-west-2:123456789012:instance/i-12a3b4c56d78e9012" ], "selectionMode": "ALL" } }, "actions": { "testaction": { "actionId": "aws:ec2:stop-instances", "parameters": {}, "targets": { "Instances": "Instances-Target-1" } } }, "stopConditions": [ { "source": "none" } ], "creationTime": 1616017191.124, "lastUpdateTime": 1616017331.51, "roleArn": "arn:aws:iam::123456789012:role/FISRole", "tags": { "key: "value" } } }

자세한 내용은 AWS Fault Injection Simulator 사용 설명서Experiment templates를 참조하세요.

다음 코드 예시에서는 get-experiment을 사용하는 방법을 보여 줍니다.

AWS CLI

실험 세부 정보를 가져오는 방법

다음 get-experiment 예제에서는 지정된 실험의 세부 정보를 가져옵니다.

aws fis get-experiment \ --id ABC12DeFGhI3jKLMNOP

출력:

{ "experiment": { "id": "ABC12DeFGhI3jKLMNOP", "experimentTemplateId": "ABCDE1fgHIJkLmNop", "roleArn": "arn:aws:iam::123456789012:role/myRole", "state": { "status": "completed", "reason": "Experiment completed." }, "targets": { "Instances-Target-1": { "resourceType": "aws:ec2:instance", "resourceArns": [ "arn:aws:ec2:us-west-2:123456789012:instance/i-12a3b4c56d78e9012" ], "selectionMode": "ALL" } }, "actions": { "reboot": { "actionId": "aws:ec2:reboot-instances", "parameters": {}, "targets": { "Instances": "Instances-Target-1" }, "state": { "status": "completed", "reason": "Action was completed." } } }, "stopConditions": [ { "source": "none" } ], "creationTime": 1616432509.662, "startTime": 1616432509.962, "endTime": 1616432522.307, "tags": {} } }

자세한 내용은 AWS Fault Injection Simulator 사용 설명서Experiments for AWS FIS을 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조GetExperiment를 참조하세요.

다음 코드 예시에서는 list-actions을 사용하는 방법을 보여 줍니다.

AWS CLI

작업을 나열하는 방법

다음 list-actions 예제에서는 사용 가능한 작업을 나열합니다.

aws fis list-actions

출력:

{ "actions": [ { "id": "aws:ec2:reboot-instances", "description": "Reboot the specified EC2 instances.", "targets": { "Instances": { "resourceType": "aws:ec2:instance" } }, "tags": {} }, { "id": "aws:ec2:stop-instances", "description": "Stop the specified EC2 instances.", "targets": { "Instances": { "resourceType": "aws:ec2:instance" } }, "tags": {} }, { "id": "aws:ec2:terminate-instances", "description": "Terminate the specified EC2 instances.", "targets": { "Instances": { "resourceType": "aws:ec2:instance" } }, "tags": {} }, { "id": "aws:ecs:drain-container-instances", "description": "Drain percentage of underlying EC2 instances on an ECS cluster.", "targets": { "Clusters": { "resourceType": "aws:ecs:cluster" } }, "tags": {} }, { "id": "aws:eks:terminate-nodegroup-instances", "description": "Terminates a percentage of the underlying EC2 instances in an EKS cluster.", "targets": { "Nodegroups": { "resourceType": "aws:eks:nodegroup" } }, "tags": {} }, { "id": "aws:fis:inject-api-internal-error", "description": "Cause an AWS service to return internal error responses for specific callers and operations.", "targets": { "Roles": { "resourceType": "aws:iam:role" } }, "tags": {} }, { "id": "aws:fis:inject-api-throttle-error", "description": "Cause an AWS service to return throttled responses for specific callers and operations.", "targets": { "Roles": { "resourceType": "aws:iam:role" } }, "tags": {} }, { "id": "aws:fis:inject-api-unavailable-error", "description": "Cause an AWS service to return unavailable error responses for specific callers and operations.", "targets": { "Roles": { "resourceType": "aws:iam:role" } }, "tags": {} }, { "id": "aws:fis:wait", "description": "Wait for the specified duration. Stop condition monitoring will continue during this time.", "tags": {} }, { "id": "aws:rds:failover-db-cluster", "description": "Failover a DB Cluster to one of the replicas.", "targets": { "Clusters": { "resourceType": "aws:rds:cluster" } }, "tags": {} }, { "id": "aws:rds:reboot-db-instances", "description": "Reboot the specified DB instances.", "targets": { "DBInstances": { "resourceType": "aws:rds:db" } }, "tags": {} }, { "id": "aws:ssm:send-command", "description": "Run the specified SSM document.", "targets": { "Instances": { "resourceType": "aws:ec2:instance" } }, "tags": {} } ] }

자세한 내용은 AWS Fault Injection Simulator 사용 설명서Actions를 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조ListActions를 참조하세요.

다음 코드 예시에서는 list-experiment-templates을 사용하는 방법을 보여 줍니다.

AWS CLI

실험 템플릿을 나열하는 방법

다음 list-experiment-templates 예제에서는 AWS 계정의 실험 템플릿을 나열합니다.

aws fis list-experiment-templates

출력:

{ "experimentTemplates": [ { "id": "ABCDE1fgHIJkLmNop", "description": "myExperimentTemplate", "creationTime": 1616017191.124, "lastUpdateTime": 1616017191.124, "tags": { "key": "value" } } ] }

자세한 내용은 AWS Fault Injection Simulator 사용 설명서Experiment templates를 참조하세요.

다음 코드 예시에서는 list-experiments을 사용하는 방법을 보여 줍니다.

AWS CLI

실험을 나열하는 방법

다음 list-experiments 예제에서는 AWS 계정의 실험을 나열합니다.

aws fis list-experiments

출력:

{ "experiments": [ { "id": "ABCdeF1GHiJkLM23NO", "experimentTemplateId": "ABCDE1fgHIJkLmNop", "state": { "status": "running", "reason": "Experiment is running." }, "creationTime": 1616017341.197, "tags": { "key": "value" } } ] }

자세한 내용은 AWS Fault Injection Simulator 사용 설명서Experiments를 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조ListExperiments를 참조하세요.

다음 코드 예시에서는 list-tags-for-resource을 사용하는 방법을 보여 줍니다.

AWS CLI

리소스의 태그 나열

다음 list-tags-for-resource 예제에서는 지정된 리소스의 태그를 나열합니다.

aws fis list-tags-for-resource \ --resource-arn arn:aws:fis:us-west-2:123456789012:experiment/ABC12DeFGhI3jKLMNOP

출력:

{ "tags": { "key1": "value1", "key2": "value2" } }

자세한 내용은 AWS Fault Injection Simulator 사용 설명서의 Tag your AWS FIS resources를 참조하세요.

다음 코드 예시에서는 start-experiment을 사용하는 방법을 보여 줍니다.

AWS CLI

실험을 시작하는 방법

다음 start-experiment 예제에서는 지정된 실험을 시작합니다.

aws fis start-experiment \ --experiment-template-id ABCDE1fgHIJkLmNop

출력:

{ "experiment": { "id": "ABC12DeFGhI3jKLMNOP", "experimentTemplateId": "ABCDE1fgHIJkLmNop", "roleArn": "arn:aws:iam::123456789012:role/myRole", "state": { "status": "initiating", "reason": "Experiment is initiating." }, "targets": { "Instances-Target-1": { "resourceType": "aws:ec2:instance", "resourceArns": [ "arn:aws:ec2:us-west-2:123456789012:instance/i-12a3b4c56d78e9012" ], "selectionMode": "ALL" } }, "actions": { "reboot": { "actionId": "aws:ec2:reboot-instances", "parameters": {}, "targets": { "Instances": "Instances-Target-1" }, "state": { "status": "pending", "reason": "Initial state" } } }, "stopConditions": [ { "source": "none" } ], "creationTime": 1616432464.025, "startTime": 1616432464.374, "tags": {} } }

자세한 내용은 AWS Fault Injection Simulator 사용 설명서Experiments for AWS FIS을 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조StartExperiment를 참조하세요.

다음 코드 예시에서는 stop-experiment을 사용하는 방법을 보여 줍니다.

AWS CLI

실험을 중지하는 방법

다음 stop-experiment 예제는 지정된 실험의 실행을 중지합니다.

aws fis stop-experiment \ --id ABC12DeFGhI3jKLMNOP

출력:

{ "experiment": { "id": "ABC12DeFGhI3jKLMNOP", "experimentTemplateId": "ABCDE1fgHIJkLmNop", "roleArn": "arn:aws:iam::123456789012:role/myRole", "state": { "status": "stopping", "reason": "Stopping Experiment." }, "targets": { "Instances-Target-1": { "resourceType": "aws:ec2:instance", "resourceArns": [ "arn:aws:ec2:us-west-2:123456789012:instance/i-12a3b4c56d78e9012" ], "selectionMode": "ALL" } }, "actions": { "reboot": { "actionId": "aws:ec2:reboot-instances", "parameters": {}, "targets": { "Instances": "Instances-Target-1" }, "startAfter": [ "wait" ], "state": { "status": "pending", "reason": "Initial state." } }, "wait": { "actionId": "aws:fis:wait", "parameters": { "duration": "PT5M" }, "state": { "status": "running", "reason": "" } } }, "stopConditions": [ { "source": "none" } ], "creationTime": 1616432680.927, "startTime": 1616432681.177, "tags": {} } }

자세한 내용은 AWS Fault Injection Simulator 사용 설명서Experiments for AWS FIS을 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조StopExperiment를 참조하세요.

다음 코드 예시에서는 tag-resource을 사용하는 방법을 보여 줍니다.

AWS CLI

리소스에 태그를 지정하려면

다음 tag-resource 예제에서는 지정된 리소스에 태그를 지정합니다.

aws fis tag-resource \ --resource-arn arn:aws:fis:us-west-2:123456789012:experiment/ABC12DeFGhI3jKLMNOP \ --tags key1=value1,key2=value2

이 명령은 출력을 생성하지 않습니다.

자세한 내용은 AWS Fault Injection Simulator 사용 설명서의 Tag your AWS FIS resources를 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조TagResource를 참조하세요.

다음 코드 예시에서는 untag-resource 코드를 사용하는 방법을 보여줍니다.

AWS CLI

리소스에서 태그를 제거하는 방법

다음 untag-resource 예제에서는 지정된 리소스에서 태그를 제거합니다.

aws fis untag-resource \ --resource-arn arn:aws:fis:us-west-2:123456789012:experiment/ABC12DeFGhI3jKLMNOP

이 명령은 출력을 생성하지 않습니다.

자세한 내용은 AWS Fault Injection Simulator 사용 설명서의 Tag your AWS FIS resources를 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조UntagResource를 참조하세요.

다음 코드 예시에서는 update-experiment-template을 사용하는 방법을 보여 줍니다.

AWS CLI

실험 템플릿을 업데이트하는 방법

다음 update-experiment-template 예제에서는 지정된 실험 템플릿의 설명을 업데이트합니다.

aws fis update-experiment-template \ --id ABCDE1fgHIJkLmNop \ ---description myExperimentTemplate

출력:

{ "experimentTemplate": { "id": "ABCDE1fgHIJkLmNop", "description": "myExperimentTemplate", "targets": { "Instances-Target-1": { "resourceType": "aws:ec2:instance", "resourceArns": [ "arn:aws:ec2:us-west-2:123456789012:instance/i-12a3b4c56d78e9012" ], "selectionMode": "ALL" } }, "actions": { "testaction": { "actionId": "aws:ec2:stop-instances", "parameters": {}, "targets": { "Instances": "Instances-Target-1" } } }, "stopConditions": [ { "source": "none" } ], "creationTime": 1616017191.124, "lastUpdateTime": 1616017859.607, "roleArn": "arn:aws:iam::123456789012:role/FISRole", "tags": { "key": "value" } } }

자세한 내용은 AWS Fault Injection Simulator 사용 설명서Update an experiment template을 참조하세요.