

• AWS Systems Manager CloudWatch 대시보드는 2026년 4월 30일 이후에는 더 이상 사용할 수 없습니다. 고객은 Amazon CloudWatch 콘솔을 계속 사용하여 현재와 마찬가지로 Amazon CloudWatch 대시보드를 보고, 생성하고, 관리할 수 있습니다. 자세한 내용은 [Amazon CloudWatch 대시보드 설명서](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html)를 참조하세요.

# Automation 런북의 시각적 디자인 경험
<a name="automation-visual-designer"></a>

AWS Systems Manager Automation은 Automation 런북을 만드는 데 도움이 되는 코드가 적은 시각적 디자인 환경을 제공합니다. 시각적 디자인 환경은 자체 코드를 추가할 수 있는 옵션이 포함된 드래그 앤 드롭 인터페이스를 제공하므로 런북을 더 쉽게 만들고 편집할 수 있습니다. 시각적 디자인 환경을 사용하여 다음 작업을 할 수 있습니다.
+ 조건문 제어.
+ 각 동작에 대해 입력과 출력이 필터링되거나 변환되는 방식을 제어할 수 있습니다.
+ 오류 처리를 구성합니다.
+ 새 런북의 프로토타입을 제작하십시오.
+ AWS Toolkit for Visual Studio Code를 사용하여 프로토타입 런북을 로컬 개발의 출발점으로 활용하십시오.

런북을 만들거나 편집할 때 [자동화 콘솔](https://console.aws.amazon.com/systems-manager/automation/home?region=us-east-1#/)에서 시각적 디자인 환경에 액세스할 수 있습니다. 런북을 만들면 시각적 디자인 경험이 작업을 검증하고 코드를 자동으로 생성합니다. 생성된 코드를 검토하거나 로컬 개발을 위해 내보낼 수 있습니다. 작업을 마치면 Systems Manager Automation 콘솔에서 런북을 저장하고 실행하고 결과를 검토할 수 있습니다.

**Topics**
+ [인터페이스 개요](visual-designer-interface-overview.md)
+ [

# 시각적 디자인 경험 사용
](visual-designer-use.md)
+ [입력 및 출력 구성](visual-designer-action-inputs-outputs.md)
+ [

# 시각적 디자인 경험을 통한 오류 처리
](visual-designer-error-handling.md)
+ [

# 자습서: 시각적 디자인 환경을 사용하여 런북을 생성합니다.
](visual-designer-tutorial.md)

# 시각적 디자인 경험 인터페이스 개요
<a name="visual-designer-interface-overview"></a>

Systems Manager Automation의 시각적 디자인 환경은 Automation 런북을 만드는 데 도움이 되는 코드가 적은 시각적 워크플로 디자이너입니다.

인터페이스 구성 요소의 개요를 통해 시각적 디자인 경험에 대해 알아보십시오.

![\[비주얼 디자인 경험 구성 요소\]](http://docs.aws.amazon.com/ko_kr/systems-manager/latest/userguide/images/visual_designer_overview.png)

+ **작업** 브라우저에는 **작업**, **AWS API** 및 **런북** 탭이 있습니다.
+ 캔버스에서는 작업을 워크플로 그래프로 끌어서 놓고, 작업 순서를 변경하고, 구성하거나 볼 작업을 선택할 수 있습니다.
+ **양식** 패널에서는 캔버스에서 선택한 작업의 속성을 보고 편집할 수 있습니다. **콘텐츠** 토글을 선택하면 현재 선택한 작업이 강조 표시된 상태로 런북의 YAML 또는 JSON을 볼 수 있습니다.

도움이 필요할 때 **정보** 링크를 클릭하면 컨텍스트 정보가 포함된 패널이 열립니다. 이 패널에는 Systems Manager Automation 설명서의 관련 항목으로 연결되는 링크도 포함되어 있습니다.

## 작업 브라우저
<a name="visual-designer-actions"></a>

**작업** 브라우저에서 워크플로 그래프로 드래그 앤 드롭할 작업을 선택할 수 있습니다. **작업** 브라우저 상단의 검색 필드를 사용하여 모든 작업을 검색할 수 있습니다. **작업** 브라우저에는 다음과 같은 탭이 있습니다.
+ **작업** 탭은 캔버스에 있는 런북의 워크플로 그래프로 끌어서 놓을 수 있는 자동화 작업 목록을 제공합니다.
+ **AWS API 탭**은 캔버스에 있는 런북의 워크플로 그래프로 드래그 앤 드롭할 수 있는 AWS API 목록을 제공합니다.
+ **런북** 탭에서는 다양한 사용 사례에 사용할 수 있는 구성 요소로 바로 사용할 수 있고 재사용이 가능한 여러 런북을 제공합니다. 예를 들어, 동일한 작업을 다시 생성할 필요 없이 런북을 사용하여 워크플로의 Amazon EC2 인스턴스에 대한 일반적인 수정 작업을 수행할 수 있습니다.

![\[비주얼 디자인 경험 작업 브라우저\]](http://docs.aws.amazon.com/ko_kr/systems-manager/latest/userguide/images/visual_designer_actions_multi_view.png)


## Canvas
<a name="visual-designer-canvas"></a>

자동화에 추가할 작업을 선택한 후 캔버스로 드래그하여 워크플로 그래프에 놓습니다. 작업을 드래그 앤 드롭하여 런북 워크플로의 다른 위치로 이동시킬 수도 있습니다. 작업 과정이 복잡하면 캔버스 패널에서 전체 항목이 보이지 않을 수 있습니다. 캔버스 상단의 컨트롤을 사용하여 확대하거나 축소할 수 있습니다. 워크플로의 다른 부분을 보려면 캔버스에서 워크플로 그래프를 드래그하면 됩니다.

**작업** 브라우저에서 작업을 드래그하여 런북의 워크플로 그래프에 놓습니다. 선이 워크플로에서 배치될 위치를 표시해 줍니다. 작업 순서를 변경하려면 작업 순서를 워크플로의 다른 위치로 드래그할 수 있습니다. 새 작업이 워크플로에 추가되었으며 해당 코드가 자동으로 생성됩니다.

![\[비주얼 디자인 경험 캔버스\]](http://docs.aws.amazon.com/ko_kr/systems-manager/latest/userguide/images/visual_designer_canvas.png)


## 양식
<a name="visual-designer-form"></a>

런북 워크플로에 작업을 추가한 후 사용 사례에 맞게 구성할 수 있습니다. 구성하려는 작업을 선택하면 **양식** 패널에 해당 파라미터와 옵션이 표시됩니다. **콘텐츠** 토글을 선택하여 YAML 또는 JSON 코드를 볼 수도 있습니다. 선택한 작업과 관련된 코드가 강조 표시됩니다.

![\[비주얼 디자인 경험 양식 패널\]](http://docs.aws.amazon.com/ko_kr/systems-manager/latest/userguide/images/visual_designer_form.png)


![\[비주얼 디자인 경험 콘텐츠 패널\]](http://docs.aws.amazon.com/ko_kr/systems-manager/latest/userguide/images/visual_designer_content.png)


## 키보드 바로 가기
<a name="visual-designer-keyboard-shortcuts"></a>

시각적 디자인 환경은 다음 표에 표시된 키보드 단축키를 지원합니다.


| 키보드 바로 가기 | 함수 | 
| --- | --- | 
| Ctrl\$1Z | 마지막 작업의 실행을 취소합니다. | 
| Ctrl\$1Shift\$1Z | 마지막 작업을 다시 실행합니다. | 
| Alt\$1C | 캔버스에서 워크플로를 중앙에 배치합니다. | 
| 백스페이스 | 선택한 모든 상태를 제거합니다. | 
| 삭제 | 선택한 모든 상태를 제거합니다. | 
| Ctrl\$1D | 선택한 상태를 복제합니다. | 

# 시각적 디자인 경험 사용
<a name="visual-designer-use"></a>

시각적 디자인 경험을 사용하여 런북 워크플로를 만들고 편집하고 실행하는 방법을 알아봅니다. 워크플로가 준비되면 저장하거나 내보낼 수 있습니다. 또한 시각적 디자인 환경을 사용하여 프로토타입을 빠르게 만들 수 있습니다.

## 런북 워크플로 생성
<a name="visual-designer-create-runbook-workflow"></a>

1. [Systems Manager Automation 콘솔](https://console.aws.amazon.com/systems-manager/automation/home?region=us-east-1#/)에 로그인합니다.

1. **런북 생성**을 선택합니다.

1. **이름** 상자에 런북 이름을 입력합니다(예: `MyNewRunbook`).

1. **디자인** 및 **코드** 토글 옆의 연필 아이콘을 선택하고 런북의 이름을 입력합니다.

이제 새 런북의 워크플로를 디자인할 수 있습니다.

## 런북 디자인
<a name="visual-designer-build"></a>

 시각적 디자인 경험을 사용하여 런북 워크플로를 디자인하려면 **작업** 브라우저에서 캔버스로 자동화 작업을 드래그하여 런북의 워크플로에서 원하는 위치에 배치합니다. 워크플로에서 작업을 다른 위치로 드래그하여 작업을 재정렬할 수도 있습니다. 작업을 캔버스로 드래그하면 워크플로에서 작업을 놓을 수 있는 모든 위치에 선이 나타납니다. 작업을 캔버스에 놓으면 해당 코드가 자동 생성되어 런북의 콘텐츠에 추가됩니다.

추가하려는 작업의 이름을 알고 있는 경우 **작업** 브라우저 상단의 검색 상자를 사용하여 작업을 찾으세요.

캔버스에 작업을 드롭한 후 오른쪽에 있는 **양식** 패널을 사용하여 작업을 구성합니다. 이 패널에는 캔버스에 배치하는 각 자동화 작업 또는 API 작업에 대한 **일반**, **입력**, **출력** 및 **구성** 탭이 있습니다. 예를 들어 **일반** 탭은 다음 섹션을 포함합니다.
+ **단계 이름**은 단계를 식별합니다. 단계 이름에 고유한 값을 지정합니다.
+ **설명**은 런북의 워크플로에서 작업이 수행하는 작업을 설명하는 데 도움이 됩니다.

**입력** 탭에는 작업에 따라 달라지는 필드가 있습니다. 예를 들어, `aws:executeScript` automation 작업은 다음 섹션을 포함합니다.
+ **런타임**은 제공된 스크립트를 실행하는 데 사용하는 언어입니다.
+ **핸들러**는 함수의 이름입니다. 핸들러에 정의된 함수에 `events` 및 `context`의 두 개의 파라미터가 있는지 확인해야 합니다. PowerShell 런타임은 이 파라미터를 지원하지 않습니다.
+ **스크립트**는 워크플로 중에 실행할 기본 제공 스크립트입니다.
+ (선택 사항) **첨부 파일**은 작업에 의해 호출될 수 있는 독립형 스크립트 또는 .zip 파일용입니다. 이 파라미터는 JSON 런북에서 필수 항목입니다.

**출력** 탭에서는 작업에서 출력할 값을 지정할 수 있습니다. 워크플로의 이후 작업에서 출력 값을 참조하거나 로깅 목적으로 작업의 출력을 생성할 수 있습니다. 모든 작업이 출력을 지원하는 것은 아니므로 모든 작업에 **출력** 탭이 있는 것은 아닙니다. 예를 들어 `aws:pause` 작업은 출력을 지원하지 않습니다. 출력을 지원하는 작업의 경우 **출력** 탭은 다음 섹션으로 구성됩니다.
+ **이름**은 출력 값에 사용할 이름입니다. 워크플로의 이후 작업에서 출력을 참조할 수 있습니다.
+ **선택기**는 JSONPath 표현식 문자열로 JSON 요소 안에서 한 가지 이상의 구성 요소를 선택하는 데 사용되는 `"$."`로 시작됩니다.
+ **유형**은 출력 값의 데이터 유형입니다. 예를 들어 `String` 또는 `Integer` 데이터 유형입니다.

**구성** 탭에는 모든 자동화 작업에서 사용할 수 있는 속성과 옵션이 포함되어 있습니다. 이 템플릿은 다음 섹션으로 구성됩니다.
+ **Max attempts** 속성은 작업이 실패할 경우 작업을 재시도하는 횟수입니다.
+ **Timeout seconds** 속성은 작업의 제한 시간 값을 지정합니다.
+ **Is critical** 속성은 작업 실패로 인해 전체 자동화가 중지되는지 여부를 결정합니다.
+ **Next step** 속성은 런북에서 자동화가 다음으로 진행될 작업을 결정합니다.
+ **On failure** 속성은 작업이 실패할 경우 자동화가 런북에서 다음으로 진행할 작업을 결정합니다.
+ **On cancel** 속성은 사용자가 작업을 취소한 경우 자동화가 런북에서 다음 단계로 넘어갈 작업을 결정합니다.

작업을 삭제하려면 캔버스 위의 도구 모음인 백스페이스를 사용하거나 마우스 오른쪽 버튼을 클릭하고 **작업 삭제**를 선택하면 됩니다.

워크플로가 커지면 캔버스에 맞지 않을 수 있습니다. 워크플로를 캔버스에 맞게 만들려면 다음 옵션 중 하나를 시도할 수 있습니다.
+ 측면 패널의 컨트롤을 사용하여 패널의 크기를 조정하거나 패널을 닫습니다.
+ 캔버스 상단의 툴바를 사용하여 워크플로 그래프를 확대하거나 축소할 수 있습니다.

## 런북 업데이트
<a name="visual-designer-update-runbook"></a>

새 버전의 런북을 생성하여 기존 런북 워크플로를 업데이트할 수 있습니다. 시각적 디자인 환경을 사용하거나 코드를 직접 편집하여 런북을 업데이트할 수 있습니다. 기존 런북을 업데이트하려면 다음 절차를 따르십시오.

1. [Systems Manager Automation 콘솔](https://console.aws.amazon.com/systems-manager/automation/home?region=us-east-1#/)에 로그인합니다.

1. 업데이트할 런북을 선택합니다.

1. **새로운 버전 생성**을 선택합니다.

1. 시각적 디자인 환경에는 코드 창과 시각적 워크플로 창이라는 두 개의 창이 있습니다. 시각적 워크플로 창에서 **디자인**을 선택하여 시각적 디자인 경험으로 워크플로를 편집합니다. 작업을 마쳤으면 **새 버전 생성**을 선택하여 변경 사항을 저장하고 종료합니다.

1. (선택 사항) 코드 패널을 사용하여 YAML 또는 JSON에서 런북 콘텐츠를 편집합니다.

## 런북 내보내기
<a name="visual-designer-export-runbook"></a>

런북의 워크플로 YAML 또는 JSON 코드와 워크플로 그래프를 내보내려면 다음 절차를 사용하십시오.

1. **문서** 콘솔에서 런북을 선택합니다.

1. **새로운 버전 생성**을 선택합니다.

1. **작업** 드롭다운에서 그래프 또는 런북을 내보낼지 여부와 원하는 형식을 선택합니다.

# 작업에 대한 입력 및 출력 구성
<a name="visual-designer-action-inputs-outputs"></a>

각 자동화 작업은 수신한 입력에 따라 응답합니다. 대부분의 경우 출력을 후속 작업에 전달합니다. 시각적 디자인 환경에서는 **양식** 패널의 **입력** 및 **출력** 탭에서 작업의 입력 및 출력 데이터를 구성할 수 있습니다.

자동화 작업의 출력을 정의하고 사용하는 방법에 대한 자세한 내용은 [작업 출력을 입력으로 사용](automation-action-outputs-inputs.md) 단원을 참조하십시오.

## 작업에 대한 입력 데이터 제공
<a name="providing-input"></a>

자동화 작업마다 값을 제공해야 하는 한 가지 이상의 입력이 있습니다. 작업 입력에 제공하는 값은 작업에 허용되는 데이터 유형 및 형식에 따라 결정됩니다. 예를 들어 `aws:sleep` 작업의 `Duration` 입력에는 ISO 8601 형식의 문자열 값이 필요합니다.

일반적으로 런북의 워크플로에서는 후속 작업에서 사용하려는 출력을 반환하는 작업을 사용합니다. 런북 워크플로에서 오류가 발생하지 않도록 입력 값이 올바른지 확인하는 것이 중요합니다. 입력 값은 작업이 예상 출력을 반환하는지 여부를 결정하므로 중요합니다. 예를 들어 `aws:executeAwsApi` 작업을 사용할 때는 API 작업에 적합한 값을 제공하고 있는지 확인해야 합니다.

## 작업의 출력 데이터 정의
<a name="defining-output"></a>

일부 자동화 동작은 정의된 작업을 수행한 후 출력을 반환합니다. 출력을 반환하는 작업에는 사전 정의된 출력이 있거나 사용자가 직접 출력을 정의할 수 있습니다. 예를 들어, `aws:createImage` 작업에는 `ImageId` 및 `ImageState`를 반환하는 사전 정의된 출력이 있습니다. 이에 비해 `aws:executeAwsApi` 작업을 사용하면 지정된 API 작업에서 원하는 출력을 정의할 수 있습니다. 따라서 단일 API 작업에서 하나 이상의 값을 반환하여 후속 작업에 사용할 수 있습니다.

자동화 작업에 대한 자체 출력을 정의하려면 출력 이름, 데이터 유형 및 출력 값을 지정해야 합니다. `aws:executeAwsApi` 작업을 계속 예로 들어 Amazon EC2에서 `DescribeInstances` API 작업을 직접적으로 호출한다고 가정해 보겠습니다. 이 예제에서는 `State` Amazon EC2 인스턴스를 반환하거나 출력하고 출력을 기반으로 런북의 워크플로를 분기하려고 합니다. **InstanceState** 출력의 이름을 지정하고 **String** 데이터 유형을 사용하도록 선택합니다.  

출력의 실제 값을 정의하는 프로세스는 작업에 따라 다릅니다. 예를 들어 `aws:executeScript` 작업을 사용하는 경우 함수에 `return` 명령문을 사용하여 출력값에 데이터를 제공해야 합니다. `aws:executeAwsApi`, `aws:waitForAwsResourceProperty` 및 `aws:assertAwsResourceProperty`과 같은 다른 작업에서는 `Selector`가 필수입니다. `Selector` 또는 일부 작업에서 참조하는 `PropertySelector`는 JSONPath 문자열로 API 작업의 JSON 응답을 처리하는 데 사용되는 문자열입니다. 출력에 적합한 값을 선택할 수 있으려면 API 작업의 JSON 응답 객체가 어떻게 구조화되는지 이해하는 것이 중요합니다. 앞서 언급한 `DescribeInstances` API 작업을 사용하는 방법은 다음 JSON 응답 예시를 참조하십시오.

```
{
  "reservationSet": {
    "item": {
      "reservationId": "r-1234567890abcdef0",
      "ownerId": 123456789012,
      "groupSet": "",
      "instancesSet": {
        "item": {
          "instanceId": "i-1234567890abcdef0",
          "imageId": "ami-bff32ccc",
          "instanceState": {
            "code": 16,
            "name": "running"
          },
          "privateDnsName": "ip-192-168-1-88.eu-west-1.compute.internal",
          "dnsName": "ec2-54-194-252-215.eu-west-1.compute.amazonaws.com",
          "reason": "",
          "keyName": "my_keypair",
          "amiLaunchIndex": 0,
          "productCodes": "",
          "instanceType": "t2.micro",
          "launchTime": "2018-05-08T16:46:19.000Z",
          "placement": {
            "availabilityZone": "eu-west-1c",
            "groupName": "",
            "tenancy": "default"
          },
          "monitoring": {
            "state": "disabled"
          },
          "subnetId": "subnet-56f5f000",
          "vpcId": "vpc-11112222",
          "privateIpAddress": "192.168.1.88",
          "ipAddress": "54.194.252.215",
          "sourceDestCheck": true,
          "groupSet": {
            "item": {
              "groupId": "sg-e4076000",
              "groupName": "SecurityGroup1"
            }
          },
          "architecture": "x86_64",
          "rootDeviceType": "ebs",
          "rootDeviceName": "/dev/xvda",
          "blockDeviceMapping": {
            "item": {
              "deviceName": "/dev/xvda",
              "ebs": {
                "volumeId": "vol-1234567890abcdef0",
                "status": "attached",
                "attachTime": "2015-12-22T10:44:09.000Z",
                "deleteOnTermination": true
              }
            }
          },
          "virtualizationType": "hvm",
          "clientToken": "xMcwG14507example",
          "tagSet": {
            "item": {
              "key": "Name",
              "value": "Server_1"
            }
          },
          "hypervisor": "xen",
          "networkInterfaceSet": {
            "item": {
              "networkInterfaceId": "eni-551ba000",
              "subnetId": "subnet-56f5f000",
              "vpcId": "vpc-11112222",
              "description": "Primary network interface",
              "ownerId": 123456789012,
              "status": "in-use",
              "macAddress": "02:dd:2c:5e:01:69",
              "privateIpAddress": "192.168.1.88",
              "privateDnsName": "ip-192-168-1-88.eu-west-1.compute.internal",
              "sourceDestCheck": true,
              "groupSet": {
                "item": {
                  "groupId": "sg-e4076000",
                  "groupName": "SecurityGroup1"
                }
              },
              "attachment": {
                "attachmentId": "eni-attach-39697adc",
                "deviceIndex": 0,
                "status": "attached",
                "attachTime": "2018-05-08T16:46:19.000Z",
                "deleteOnTermination": true
              },
              "association": {
                "publicIp": "54.194.252.215",
                "publicDnsName": "ec2-54-194-252-215.eu-west-1.compute.amazonaws.com",
                "ipOwnerId": "amazon"
              },
              "privateIpAddressesSet": {
                "item": {
                  "privateIpAddress": "192.168.1.88",
                  "privateDnsName": "ip-192-168-1-88.eu-west-1.compute.internal",
                  "primary": true,
                  "association": {
                    "publicIp": "54.194.252.215",
                    "publicDnsName": "ec2-54-194-252-215.eu-west-1.compute.amazonaws.com",
                    "ipOwnerId": "amazon"
                  }
                }
              },
              "ipv6AddressesSet": {
                "item": {
                  "ipv6Address": "2001:db8:1234:1a2b::123"
                }
              }
            }
          },
          "iamInstanceProfile": {
            "arn": "arn:aws:iam::123456789012:instance-profile/AdminRole",
            "id": "ABCAJEDNCAA64SSD123AB"
          },
          "ebsOptimized": false,
          "cpuOptions": {
            "coreCount": 1,
            "threadsPerCore": 1
          }
        }
      }
    }
  }
}
```

JSON 응답 객체에서 `State` 인스턴스는 `Instances` 객체에 중첩되며, 해당 객체는 `Reservations` 객체에 중첩됩니다. `State` 인스턴스의 값을 반환하려면 출력에 해당 값을 사용할 수 있도록 `Selector`에 다음 문자열을 사용하십시오. **\$1.Reservations[0].Instances[0].State.Name** 

런북 워크플로의 후속 작업에서 출력 값을 참조하려면 `{{ StepName.NameOfOutput }}` 형식이 사용됩니다. 예를 들어 **\$1\$1 GetInstanceState.InstanceState \$1\$1**입니다. 시각적 디자인 환경에서는 입력용 드롭다운을 사용하여 후속 작업에 사용할 출력 값을 선택할 수 있습니다. 후속 작업에서 출력을 사용할 때는 출력의 데이터 유형이 입력의 데이터 유형과 일치해야 합니다. 이 예시에서 `InstanceState`​​ 출력은 `String`입니다. 따라서 후속 작업의 입력에서 값을 사용하려면 입력에서 `String`을 받아야 합니다.

# 시각적 디자인 경험을 통한 오류 처리
<a name="visual-designer-error-handling"></a>

기본적으로 작업에서 오류가 보고되면 Automation은 런북의 워크플로를 완전히 중지합니다. 이는 모든 작업의 `onFailure` 속성 기본값이 `Abort`이기 때문입니다. Automation이 런북 워크플로의 오류를 처리하는 방법을 구성할 수 있습니다. 오류 처리를 구성했더라도 일부 오류로 인해 자동화가 실패할 수 있습니다. 자세한 내용은 [Systems Manager Automation 문제 해결](automation-troubleshooting.md) 섹션을 참조하세요. 시각적 디자인 환경에서는 **구성** 패널에서 오류 처리를 구성합니다.

![\[오류 처리 옵션\]](http://docs.aws.amazon.com/ko_kr/systems-manager/latest/userguide/images/visual_designer_error_handling.png)


## 오류 발생 시 조치 재시도
<a name="retry-actions"></a>

오류가 발생한 경우 작업을 재시도하려면 **Max attempts** 속성 값을 지정하십시오. 기본값은 1입니다. 지정된 값이 1보다 크면 모든 재시도가 실패할 때까지 해당 단계는 실패한 것으로 간주되지 않습니다.

## 시간 초과
<a name="timeout-seconds"></a>

작업 제한 시간을 구성하여 작업이 실패하기 전에 실행할 수 있는 최대 시간(초)을 설정할 수 있습니다. 제한 시간을 구성하려면 **Timeout seconds** 속성에 작업이 실패하기 전에 작업이 기다려야 하는 시간을 초로 입력합니다. 시간 제한에 도달했지만 작업의 `Max attempts` 값이 1보다 큰 경우 단계는 모든 재시도 횟수가 시도될 때까지 시간이 초과된 것으로 간주되지 않습니다.

## 실패한 작업
<a name="failure-actions"></a>

기본적으로 작업이 실패하면 Automation은 런북의 워크플로를 완전히 중지합니다. 런북에 있는 작업의 **On failure** 속성에 대체 값을 지정하여 이 동작을 수정할 수 있습니다. 워크플로를 런북의 다음 단계로 계속 진행하려면 **계속**을 선택합니다. 워크플로를 런북의 다른 후속 단계로 바로 이동시키려면 **단계**를 선택한 다음 단계 이름을 입력합니다.

## 취소된 작업
<a name="cancel-actions"></a>

기본적으로 사용자가 작업을 취소하면 Automation은 런북의 워크플로를 완전히 중지합니다. 런북에 있는 작업의 **On cancel** 속성에 대체 값을 지정하여 이 동작을 수정할 수 있습니다. 워크플로를 런북의 다른 후속 단계로 바로 이동시키려면 **단계**를 선택한 다음 단계 이름을 입력합니다.

## 중요 작업
<a name="critical-actions"></a>

조치를 중요 조치로 지정할 수 있습니다. 즉, 해당 조치가 자동화의 전체 보고 상태를 결정합니다. 이 지정이 있는 단계 중 하나가 실패하면 Automation은 다른 작업의 성공 여부와 관계없이 `Failed` 상태로 최종 상태를 보고합니다. 작업을 중요한 작업으로 구성하려면 **Is critical** 속성의 기본값을 **True**로 그대로 두십시오.

## 종료 작업
<a name="end-actions"></a>

**Is end** 속성은 지정된 작업 종료 시 자동화를 적절히 중지합니다. 이 속성의 기본값은 `false`입니다. 작업에 대해 이 속성을 구성하면 작업의 성공 여부에 관계없이 자동화가 중지됩니다. 이 속성은 예상치 못한 입력값이나 정의되지 않은 입력값을 처리하기 위한 `aws:branch` 작업과 함께 가장 자주 사용됩니다. 다음 예제는 인스턴스 상태가`running`, `stopping` 또는 `stopped`일 것으로 예상되는 런북을 보여줍니다. 인스턴스의 상태가 다른 경우 자동화가 종료됩니다.

![\[시각적 디자인 경험이 그 예입니다.\]](http://docs.aws.amazon.com/ko_kr/systems-manager/latest/userguide/images/visual_designer_is_end_example.png)


# 자습서: 시각적 디자인 환경을 사용하여 런북을 생성합니다.
<a name="visual-designer-tutorial"></a>

이 자습서에서는 Systems Manager Automation에서 제공하는 시각적 디자인 환경을 사용하여 작업하는 기본 사항을 학습합니다. 시각적 디자인 환경에서 여러 작업을 사용하는 런북을 만들 수 있습니다. 드래그 앤 드롭 기능을 사용하여 캔버스에 작업을 정렬할 수 있습니다. 또한 이러한 작업을 검색, 선택 및 구성할 수 있습니다. 그런 다음 런북의 워크플로에 대해 자동 생성된 YAML 코드를 확인하고, 시각적 디자인 환경을 종료하고, 런북을 실행하고, 실행 세부 정보를 검토할 수 있습니다.

이 자습서에서는 런북을 업데이트하고 새 버전을 보는 방법도 보여줍니다. 자습서가 끝나면 정리 단계를 수행하고 런북을 삭제하게 됩니다.

이 자습서를 완료하면 시각적 디자인 경험을 사용하여 런북을 만드는 방법을 알게 됩니다. 또한 런북을 업데이트, 실행 및 삭제하는 방법도 알게 됩니다.

**참고**  
이 자습서를 시작하기 전에 [Automation 설정](automation-setup.md) 항목을 완료했는지 확인하세요.

**Topics**
+ [

## 1단계: 시각적 디자인 환경으로 이동
](#navigate-console)
+ [

## 2단계: 워크플로 생성
](#create-workflow)
+ [

## 3단계: 자동 생성 코드 검토
](#view-generated-code)
+ [

## 4단계: 새 런북 실행
](#use-tutorial-runbook)
+ [

## 5단계: 정리
](#cleanup-tutorial-runbook)

## 1단계: 시각적 디자인 환경으로 이동
<a name="navigate-console"></a>

1. [Systems Manager Automation 콘솔](https://console.aws.amazon.com/systems-manager/automation/home?region=us-east-1#/)에 로그인합니다.

1. **자동화 생성**을 선택합니다.

## 2단계: 워크플로 생성
<a name="create-workflow"></a>

시각적 디자인 환경에서 워크플로는 캔버스에 런북을 그래픽으로 표현한 것입니다. 시각적 디자인 경험을 사용하여 런북의 개별 작업을 정의, 구성 및 검토할 수 있습니다.

**워크플로 생성 방법**

1. **디자인** 및 **코드** 토글 옆의 연필 아이콘을 선택하고 런북의 이름을 입력합니다. 이 자습서에서는 **VisualDesignExperienceTutorial**을 입력합니다.  
![\[비주얼 디자인 경험: 런북 이름 정하기\]](http://docs.aws.amazon.com/ko_kr/systems-manager/latest/userguide/images/visual_designer_tutorial_name.png)

1. **양식** 패널의 **문서 속성** 섹션에서 **입력 파라미터** 드롭다운을 펼치고 **파라미터 추가**를 선택합니다.

   1. **파라미터 이름** 필드에 **InstanceId**를 입력합니다.

   1. **유형** 드롭다운에서 **AWS::EC2::인스턴스**를 선택합니다.

   1. **필수** 토글을 선택합니다.  
![\[런북용 파라미터 생성\]](http://docs.aws.amazon.com/ko_kr/systems-manager/latest/userguide/images/visual_designer_actions_tutorial_parameter.png)

1. **AWS API** 브라우저의 검색 창에 **DescribeInstances**를 입력합니다.

1. **Amazon EC2 — DescribeInstances** 작업을 빈 캔버스로 드래그하십시오.

1. **단계 이름**에 값을 입력합니다. 본 자습서에서는 **GetInstanceState** 이름을 사용할 수 있습니다.  
![\[Amazon EC2 describe 인스턴스 API 작업을 선택합니다.\]](http://docs.aws.amazon.com/ko_kr/systems-manager/latest/userguide/images/visual_designer_tutorial_api_action.png)

   1. **추가 입력** 드롭다운을 확장하고 **입력 이름** 필드에 **InstanceIds**를 입력합니다.

   1. **입력** 탭을 선택합니다.

   1. **입력 값** 필드에서 **InstanceId** 문서 입력을 선택합니다. 이 값은 프로시저를 시작할 때 생성한 입력 파라미터의 값을 참조합니다. `DescribeInstances` 작업에 대한 **InstanceIds** 입력은 `StringList` 값을 허용하므로 **InstanceId** 입력을 대괄호로 묶어야 합니다. **입력 값**의 YAML은 다음과 일치해야 합니다. **['\$1\$1 InstanceId \$1\$1']** 

   1. **출력** 탭에서 **출력 추가**를 선택하고 **이름** 필드에 **InstanceState**를 입력합니다.

   1. **선택기** 필드에 **\$1.Reservations[0].Instances[0].State.Name** 항목을 입력합니다.

   1. **유형** 드롭다운에서 **문자열**을 선택합니다.

1. **작업** 브라우저에서 **분기** 작업을 드래그하여 **`GetInstanceState`**단계 아래에 놓습니다.

1. **단계 이름**에 값을 입력합니다. 본 튜토리얼에서는 `BranchOnInstanceState`의 이름을 사용합니다.

   분기 로직을 정의하려면 다음을 수행합니다.

   1. 캔버스에서 **`Branch`**상태를 선택합니다. 그런 다음 **입력** 및 **선택**에서 연필 아이콘을 선택하여 **규칙 \$11** 를 편집합니다.

   1. **조건 추가**를 선택합니다.

   1. **규칙 \$11 조건** 대화 상자의 **변수** 드롭다운에서 **GetInstanceState.InstanceState** 단계 출력을 선택합니다.

   1. **연산자**에서 **같음**을 선택합니다.

   1. **값**의 경우. 드롭다운 목록에서 **문자열**을 선택합니다. **stopped**을 입력합니다.  
![\[분기 작업의 조건을 정의합니다.\]](http://docs.aws.amazon.com/ko_kr/systems-manager/latest/userguide/images/visual_designer_tutorial_condition.png)

   1. **조건 저장**을 선택합니다.

   1. **새 선택 규칙 추가**를 선택합니다.

   1. **규칙 \$12** **조건 추가**를 선택합니다.

   1. **규칙 \$12 조건** 대화 상자의 **변수** 드롭다운에서 **GetInstanceState.InstanceState**단계 출력을 선택합니다.

   1. **연산자**에서 **같음**을 선택합니다.

   1. **값**의 경우. 드롭다운 목록에서 **문자열**을 선택합니다. **stopping**을 입력합니다.

   1. **조건 저장**을 선택합니다.

   1. **새 선택 규칙 추가**를 선택합니다.

   1. **규칙 \$13** 에서는 **조건 추가**를 선택합니다.

   1. **규칙 \$13 조건** 대화 상자의 **변수** 드롭다운에서 **GetInstanceState.InstanceState**단계 출력을 선택합니다.

   1. **연산자**에서 **같음**을 선택합니다.

   1. **값**의 경우. 드롭다운 목록에서 **문자열**을 선택합니다. **running**을 입력합니다.

   1. **조건 저장**을 선택합니다.

   1. **기본 규칙**에서 **기본 단계**로 **Go to end**를 선택합니다.

1. **인스턴스 상태 변경** 작업을 **\$1\$1 GetInstanceState.InstanceState \$1\$1 == "stopped"** 조건 아래의 비어 있는 **이곳으로 작업 드래그** 상자로 드래그하십시오.

   1. **단계 이름**에는 **StartInstance**를 입력합니다.

   1. **입력** 탭의 **인스턴스 ID** 아래에 있는 드롭다운에서 **InstanceID** 문서 입력 값을 선택합니다.

   1. **원하는 상태**에는 **`running`** 항목을 지정합니다.

1. **AWS 리소스 대기** 작업을 **\$1\$1 GetInstanceState.InstanceState \$1\$1 == "stopping"** 조건 아래의 비어 있는 **이곳으로 작업 드래그**로 드래그하십시오.

1. **단계 이름**에 값을 입력합니다. 본 튜토리얼에서는 `WaitForInstanceStop`의 이름을 사용합니다.

   1. **서비스** 필드에서 **Amazon EC2**를 선택합니다.

   1. **API** 필드에서 **DescribeInstances**를 선택합니다.

   1. **속성 선택기** 필드에 **\$1.Reservations[0].Instances[0].State.Name**를 입력합니다.

   1. **원하는 값** 파라미터의 경우 **`["stopped"]`**를 입력합니다.

   1. **WaitForInstanceStop 작업의 **구성** 탭에 있는 다음 단계 드롭다운에서 인스턴스** ****시작을** 선택합니다.**

1. **인스턴스에서 명령 실행** 작업을 **\$1\$1 GetInstanceState.InstanceState \$1\$1 == "running"** 조건의 비어 있는 **이곳으로 작업 드래그** 박스로 드래그하십시오.

1. **단계 이름**에는 **SayHello**를 입력합니다.

   1. **입력** 탭에서 **문서 이름** 파라미터로 **AWS-RunShellScript**를 입력합니다.

   1. **InstanceID의** 경우 드롭다운에서 **InstanceID** 문서 입력 값을 선택합니다.

   1. **추가 입력** 드롭다운을 확장하고 **이름 입력** 드롭다운에서 **파라미터**를 선택합니다.

   1. **입력 값** 필드에 **`{"commands": "echo 'Hello World'"}`**를 입력합니다.

1. 캔버스에서 완성된 런북을 검토하고 **런북 생성**을 선택하여 튜토리얼 런북을 저장합니다.  
![\[검토하고 런북을 생성합니다.\]](http://docs.aws.amazon.com/ko_kr/systems-manager/latest/userguide/images/visual_designer_tutorial_complete.png)

## 3단계: 자동 생성 코드 검토
<a name="view-generated-code"></a>

**작업** 브라우저에서 캔버스로 작업을 드래그 앤 드롭하면 시각적 디자인 경험이 런북의 YAML 또는 JSON 콘텐츠를 실시간으로 자동으로 작성합니다. 이 코드를 보고 편집할 수 있습니다. 자동 생성된 코드를 보려면 **디자인**용 **코드** 및 **코드** 토글을 선택합니다.

## 4단계: 새 런북 실행
<a name="use-tutorial-runbook"></a>

런북을 만든 후 자동화를 실행할 수 있습니다.

**새 Automation 런북 실행 방법**

1. AWS Systems Manager 콘솔[https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/)을 엽니다.

1. 탐색 창에서 **Automation**(자동화)을 선택한 후 **Execute automation**(자동화 실행)을 선택합니다.

1. [**Automation 문서(Automation document)**] 목록에서 실행서를 선택합니다. **문서 카테고리** 창에서 옵션을 1개 이상 선택하여 SSM 문서를 목적에 따라 필터링합니다. 자신이 소유한 실행서를 보려면 [**내 소유(Owned by me)**] 탭을 선택합니다. 자신의 계정과 공유하고 있는 실행서를 보려면 [**나와 공유됨(Shared with me)**] 탭을 선택합니다. 모든 실행서를 보려면 [**모든 문서(All documents)**] 탭을 선택합니다.
**참고**  
실행서 이름을 선택하여 실행서에 대한 정보를 볼 수 있습니다.

1. **문서 세부 정보** 섹션에서 **문서 버전**이 실행할 버전으로 설정되었는지 확인합니다. 이 시스템에는 다음 버전 옵션이 포함되어 있습니다.
   + **런타임 시 기본 버전** - Automation 런북이 정기적으로 업데이트되며 새 기본 버전이 할당된 경우 이 옵션을 선택합니다.
   + **런타임 시 최신 버전** - Automation 런북이 정기적으로 업데이트되며 최근에 업데이트된 버전을 실행하려는 경우 이 옵션을 선택합니다.
   + **1(기본값)** - 문서의 최초 버전을 실행하려면 이 옵션을 선택합니다(기본값).

1. **다음**을 선택합니다.

1. **자동화 문서 실행** 섹션에서 **단순 실행**을 선택합니다.

1. **입력 파라미터** 섹션에서 필수 입력을 지정합니다. 필요에 따라 **AutomationAssumeRole** 목록에서 IAM 서비스 역할을 선택합니다.

1. (선택 사항) 모니터링을 위해 자동화에 적용할 Amazon CloudWatch 경보를 선택합니다. CloudWatch 경보를 자동화에 연결하려면 자동화를 시작하는 IAM 보안 주체에 `iam:createServiceLinkedRole` 작업에 대한 권한이 있어야 합니다. CloudWatch 경보에 대한 자세한 내용은 [Amazon CloudWatch 경보 사용](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html)을 참조하세요. 경보가 활성화되면 자동화가 중지됩니다. AWS CloudTrail을 사용하면 추적에 API 호출이 표시됩니다.

1. **실행**을 선택합니다.

## 5단계: 정리
<a name="cleanup-tutorial-runbook"></a>

**런북 삭제 방법**

1. AWS Systems Manager 콘솔([https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/))을 엽니다.

1. 탐색 창에서 **Documents**를 선택합니다.

1. **내 소유** 탭을 선택합니다.

1. **VisualDesignExperienceTutorial** 런북을 찾습니다.

1. 문서 카드 페이지에서 버튼을 선택한 다음 **작업** 드롭다운에서 **문서 삭제**를 선택합니다.