문서 빌더를 사용하여 런북 생성 - AWS Systems Manager

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

문서 빌더를 사용하여 런북 생성

AWS Systems Manager 공개 런북이 AWS 리소스에서 수행하려는 모든 작업을 지원하지 않는 경우 자체 런북을 만들 수 있습니다. 사용자 정의 실행서를 생성하려면 적절한 자동화 작업을 사용하여 로컬 YAML 또는 JSON 형식 파일을 수동으로 생성할 수 있습니다. 또는 Systems Manager Automation 콘솔에서 문서 빌더를 사용하여 사용자 지정 런북을 빌드할 수도 있습니다.

문서 빌더를 사용하면 사용자 지정 런북에 자동화 작업을 추가하고 JSON 또는 YAML 구문을 사용하지 않고도 필요한 파라미터를 제공할 수 있습니다. 단계를 추가하고 실행서를 생성한 후에는 추가한 작업이 Systems Manager에서 자동화를 실행하는 데 사용할 수 있는 YAML 형식으로 변환됩니다.

실행서에서는 Markdown을 사용할 수 있습니다. 마크업 언어인 Markdown을 사용하면 실행서와 실행서 내의 개별 단계에 wiki 스타일의 설명을 추가할 수 있습니다. Markdown 사용에 대한 자세한 내용은 AWS에서 Markdown 사용을 참조하세요.

문서 빌더를 사용하여 런북 생성

시작하기 전 준비 사항

런북 내에서 사용할 수 있는 다양한 작업에 대해 읽어보는 것이 좋습니다. 자세한 설명은 Systems Manager Automation 작업 참조 섹션을 참조하세요.

문서 빌더를 사용하여 실행서를 생성하려면
  1. https://console.aws.amazon.com/systems-manager/ 에서 AWS Systems Manager 콘솔을 엽니다.

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

    -또는-

    AWS Systems Manager 홈 페이지가 먼저 열리면 메뉴 아이콘 ( 
    The menu icon
  ) 을 선택하여 탐색 창을 연 다음 탐색 창에서 [Documents] 를 선택합니다.

  3. Create automation(자동화 생성)을 선택합니다.

  4. [이름(Name)]에 실행서를 설명하는 이름을 입력합니다.

  5. [문서 설명(Document description)]에 실행서에 대한 Markdown 스타일 설명을 입력합니다. 실행서 사용 지침, 번호가 매겨진 단계 또는 기타 유형의 정보를 사용하여 실행서를 설명할 수 있도록 지침을 제공할 수 있습니다. 내용 서식 지정에 대한 자세한 내용은 기본 텍스트를 참조하십시오.

    작은 정보

    Hide preview(미리보기 숨기기)Show preview(미리보기 표시) 사이를 전환하여 작성 시 설명 내용이 어떤 형태인지 확인합니다.

  6. (선택 사항) Assume role(역할 수임)에 사용자를 대신하여 작업을 수행할 서비스 역할의 이름 또는 ARN을 입력합니다. 역할을 지정하지 않으면 Automation은 자동화를 실행하는 사용자의 액세스 권한을 사용합니다.

    중요

    aws:executeScript 작업을 사용하는 Amazon 소유가 아닌 실행서의 경우에는 역할을 지정해야 합니다. 자세한 내용은 실행서 사용 권한 단원을 참조하세요.

  7. (옵션) [출력(Outputs)]에 다른 프로세스에서 사용할 수 있도록 이 실행서의 자동화를 위한 출력을 입력합니다.

    예를 들어, Runbook에서 새 AMI를 생성하는 경우 [”CreateImage] 를 지정할 수 있습니다. ImageId“] 를 입력한 다음 이 출력을 사용하여 후속 자동화에서 새 인스턴스를 생성합니다.

  8. (선택 사항) Input parameter(입력 파라미터) 섹션을 확장하고 다음을 수행합니다.

    1. [파라미터 이름(Parameter name)]에 생성 중인 실행서 파라미터에 대한 설명이 포함된 이름을 입력합니다.

    2. 유형에서 파라미터 유형(예: String 또는 MapList)을 선택합니다.

    3. 필수에서 다음 중 하나를 수행합니다.

      • 런타임 시 이 실행서 파라미터의 값을 제공해야 하는 경우 [예(Yes)]를 선택합니다.

      • 파라미터가 필수가 아닌 경우 [아니요(No)]를 선택하고 기본값에 기본 파라미터 값을 입력합니다(옵션).

    4. [설명(Description)]에 실행서 파라미터에 대한 설명을 입력합니다.

    참고

    실행서 파라미터를 더 추가하려면 [파라미터 추가(Add a parameter)]를 선택합니다. 실행서 파라미터를 제거하려면 [X](제거) 버튼을 선택합니다.

  9. (옵션) [대상 유형(Target type)] 섹션을 확장하고 대상 유형을 선택하여 자동화를 실행할 수 있는 리소스의 종류를 정의합니다. 예를 들어 EC2 인스턴스에서 실행서를 사용하려면 /AWS::EC2::Instance을 선택합니다.

    참고

    '/' 값을 지정하면 모든 유형의 리소스에서 실행서를 실행할 수 있습니다. 유효한 리소스 유형 목록은 AWS CloudFormation 사용 설명서AWS 리소스 유형 참조를 참조하세요.

  10. (옵션) [문서 태그(Document tags)] 섹션을 확장하고 실행서에 적용할 하나 이상의 태그 키-값 페어를 입력합니다. 태그를 사용하면 리소스를 쉽게 식별, 구성 및 검색할 수 있습니다. 자세한 설명은 Systems Manager 문서에 태그 지정 섹션을 참조하세요.

  11. Step 1(1단계) 섹션에서 다음 정보를 제공합니다.

    • [단계 이름(Step name)]에 자동화의 첫 번째 단계에 대해 설명하는 이름을 입력합니다.

    • 작업 유형에서 이 단계에 사용할 작업 유형을 선택합니다.

      사용 가능한 작업 유형에 대한 목록과 자세한 내용은 Systems Manager Automation 작업 참조 섹션을 참조하세요.

    • 설명에 자동화 단계에 대한 설명을 입력합니다. Markdown을 사용하여 텍스트 서식을 지정할 수 있습니다.

    • 선택한 작업 유형에 따라 Step inputs(단계 입력) 섹션에 작업 유형에 필요한 입력을 입력합니다. 예를 들어 작업 aws:approve을 선택한 경우 Approvers 속성에 대해 값을 지정해야 합니다.

      단계 입력 필드에 대한 자세한 내용은 선택한 작업 유형에 대한 Systems Manager Automation 작업 참조의 항목을 참조하십시오. 예를 들면 aws:executeStateMachine - AWS Step Functions 상태 시스템을 실행합니다.입니다.

    • (옵션) [추가 입력(Additional inputs)]에 실행서에 필요한 추가 입력 값을 입력합니다. 사용 가능한 입력 유형은 해당 단계에 대해 선택한 작업 유형에 따라 다릅니다 (일부 작업 유형에는 입력 값이 필요).

      참고

      입력을 추가하려면 Add optional input(선택적 입력 추가)을 선택합니다. 입력을 제거하려면 X(제거) 버튼을 선택합니다.

    • (옵션) [출력(Outputs)]에 다른 프로세스에서 사용할 수 있도록 이 단계에 대한 출력을 입력합니다.

      참고

      모든 작업 유형에서출력을 사용할 수 없습니다.

    • (옵션) [일반 속성(Common properties)] 섹션을 확장하고 모든 자동화 작업에 공통적인 작업의 속성을 지정합니다. 예를 들어 [시간 제한 초(Timeout seconds)]에 단계가 중지되기 전까지 실행될 수 있는 기간을 지정할 수 있도록 초 단위의 값을 입력합니다.

      자세한 설명은 모든 작업에서 공유하는 속성 섹션을 참조하세요.

    참고

    단계를 더 추가하려면 [단계 추가(Add step)]를 선택하고 단계 생성 절차를 반복합니다. 단계를 제거하려면 [단계 제거(Remove step)]를 선택합니다.

  12. [자동화 생성(Create automation)]을 선택하여 실행서를 저장합니다.

스크립트를 실행하는 런북 생성

다음 절차에서는 AWS Systems Manager Automation 콘솔에서 문서 빌더를 사용하여, 스크립트를 실행하는 사용자 지정 런북을 생성하는 방법을 보여줍니다.

생성하는 실행서의 첫 번째 단계에서는 스크립트를 실행하여 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스를 시작합니다. 두 번째 단계는 다른 스크립트를 실행하여 ok로 변경할 인스턴스 상태 확인을 모니터링합니다. 그러면 자동화에 대한 전체 상태가 Success로 보고됩니다.

시작하기 전 준비 사항

다음 단계를 완료했는지 확인합니다.

  • 관리자 권한이 있는지, 아니면 AWS Identity and Access Management (IAM)에서 Systems Manager에 액세스할 수 있는 적절한 권한을 부여 받았는지 확인합니다.

    자세한 내용은 실행서에 대한 사용자 액세스 확인 단원을 참조하세요.

  • AWS 계정에 Automation을 위한 IAM 서비스 역할(수임 역할이라고도 함)이 있는지 확인합니다. 이 시연에서는 aws:executeScript 작업을 사용하기 때문에 이 역할이 필요합니다.

    이 역할을 생성하는 방법에 대한 상세 정보는 자동화에 대한 서비스 역할(수임 역할) 액세스 구성 섹션을 참조하세요.

    aws:executeScript 실행을 위한 IAM 서비스 역할 요구 사항에 대한 자세한 내용은 실행서 사용 권한 섹션을 참조하세요.

  • EC2 인스턴스를 시작할 권한이 있는지 확인합니다.

    자세한 내용은 Linux용 Amazon EC2 사용 설명서IAM 및 Amazon EC2를 참조하세요.

문서 빌더를 사용하여, 스크립트를 실행하는 사용자 지정 런북을 생성하려면
  1. https://console.aws.amazon.com/systems-manager/ 에서 AWS Systems Manager 콘솔을 엽니다.

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

    -또는-

    AWS Systems Manager 홈 페이지가 먼저 열리면 메뉴 아이콘 ( 
    The menu icon
  ) 을 선택하여 탐색 창을 연 다음 탐색 창에서 [Documents] 를 선택합니다.

  3. Create automation(자동화 생성)을 선택합니다.

  4. [이름(Name)]에 실행서에 대한 설명이 포함된 이름을 입력합니다(예: LaunchInstanceAndCheckStatus).

  5. (옵션) [문서 설명(Document description)]에서 Markdown을 사용하여 기본 텍스트를 이 실행서에 대한 설명으로 바꿉니다. 다음은 예입니다.

    ##Title: LaunchInstanceAndCheckState ----- **Purpose**: This runbook first launches an EC2 instance using the AMI ID provided in the parameter ```imageId```. The second step of this runbook continuously checks the instance status check value for the launched instance until the status ```ok``` is returned. ##Parameters: ----- Name | Type | Description | Default Value ------------- | ------------- | ------------- | ------------- assumeRole | String | (Optional) The ARN of the role that allows Automation to perform the actions on your behalf. | - imageId | String | (Optional) The AMI ID to use for launching the instance. The default value uses the latest Amazon Linux AMI ID available. | {{ ssm:/aws/service/ami-amazon-linux-latest/amzn-ami-hvm-x86_64-gp2 }}
  6. [수임 역할(Assume role)]에 Automation용 IAM 서비스 역할(수임 역할)의 ARN을 arn:aws:iam::111122223333:role/AutomationServiceRole 형식으로 입력합니다. AWS 계정 ID를 111122223333으로 대체하십시오.

    사용자가 지정한 역할은 자동화를 시작하는 데 필요한 권한을 제공하는 데 사용됩니다.

    중요

    aws:executeScript 작업을 사용하는 Amazon 소유가 아닌 실행서의 경우에는 역할을 지정해야 합니다. 자세한 내용은 실행서 사용 권한 단원을 참조하세요.

  7. 입력 파라미터를 확장하고 다음을 수행합니다.

    1. 파라미터 이름imageId를 입력합니다.

    2. 유형(Type)에서 String를 선택합니다.

    3. 필수에서 No를 선택합니다.

    4. 기본값에 다음을 입력합니다.

      {{ ssm:/aws/service/ami-amazon-linux-latest/amzn-ami-hvm-x86_64-gp2 }}
      참고

      이 값은 최신 아마존 리눅스 1 Amazon Machine Image (AMI) ID를 사용하여 Amazon EC2 인스턴스를 시작합니다. 다른 AMI를 사용하려면 값을 AMI ID로 바꿉니다.

    5. 설명에 다음을 입력합니다.

      (Optional) The AMI ID to use for launching the instance. The default value uses the latest released Amazon Linux AMI ID.
  8. 파라미터 추가를 선택하여 두 번째 파라미터 tagValue를 생성하고 다음 정보를 입력합니다.

    1. 파라미터 이름tagValue를 입력합니다.

    2. 유형(Type)에서 String를 선택합니다.

    3. 필수에서 No를 선택합니다.

    4. 기본값LaunchedBySsmAutomation를 입력합니다. 그러면 인스턴스에 태그 키 페어 값 Name:LaunchedBySsmAutomation이 추가됩니다.

    5. 설명에 다음을 입력합니다.

      (Optional) The tag value to add to the instance. The default value is LaunchedBySsmAutomation.
  9. 파라미터 추가를 선택하여 세 번째 파라미터 instanceType를 생성하고 다음 정보를 입력합니다.

    1. 파라미터 이름instanceType를 입력합니다.

    2. 유형(Type)에서 String를 선택합니다.

    3. 필수에서 No를 선택합니다.

    4. 기본값t2.micro를 입력합니다.

    5. 파라미터 설명에 다음을 입력합니다.

      (Optional) The instance type to use for the instance. The default value is t2.micro.
  10. 대상 유형을 확장하고 "/"를 선택합니다.

  11. (옵션) [문서 태그(Document tags)]를 확장하여 실행서에 리소스 태그를 적용합니다. 태그 키Purpose을 입력하고 태그 값LaunchInstanceAndCheckState를 입력합니다.

  12. 1단계(Step 1) 섹션에서 다음 단계를 완료합니다.

    1. [단계 이름(Step name)]에 자동화의 첫 번째 단계에 대해 설명하는 단계 이름(LaunchEc2Instance)을 입력합니다.

    2. 작업 유형에서 Run a script(스크립트 실행)(aws:executeScript)를 선택합니다.

    3. 설명에 다음과 같은 자동화 단계에 대한 설명을 입력합니다.

      **About This Step** This step first launches an EC2 instance using the ```aws:executeScript``` action and the provided script.
    4. 입력을 확장합니다.

    5. 런타임에서는 제공된 스크립트를 실행하는 데 사용할 런타임 언어를 선택합니다.

    6. 핸들러launch_instance를 입력합니다. 이는 다음 스크립트에서 선언된 함수 이름입니다.

      참고

      용도로는 필요하지 않습니다. PowerShell

    7. 스크립트에서 기본 내용을 다음과 같이 바꿉니다. 스크립트를 해당 런타임 값과 일치시켜야 합니다.

      Python
      def launch_instance(events, context): import boto3 ec2 = boto3.client('ec2') image_id = events['image_id'] tag_value = events['tag_value'] instance_type = events['instance_type'] tag_config = {'ResourceType': 'instance', 'Tags': [{'Key':'Name', 'Value':tag_value}]} res = ec2.run_instances(ImageId=image_id, InstanceType=instance_type, MaxCount=1, MinCount=1, TagSpecifications=[tag_config]) instance_id = res['Instances'][0]['InstanceId'] print('[INFO] 1 EC2 instance is successfully launched', instance_id) return { 'InstanceId' : instance_id }
      PowerShell
      Install-Module AWS.Tools.EC2 -Force Import-Module AWS.Tools.EC2 $payload = $env:InputPayload | ConvertFrom-Json $imageid = $payload.image_id $tagvalue = $payload.tag_value $instanceType = $payload.instance_type $type = New-Object Amazon.EC2.InstanceType -ArgumentList $instanceType $resource = New-Object Amazon.EC2.ResourceType -ArgumentList 'instance' $tag = @{Key='Name';Value=$tagValue} $tagSpecs = New-Object Amazon.EC2.Model.TagSpecification $tagSpecs.ResourceType = $resource $tagSpecs.Tags.Add($tag) $res = New-EC2Instance -ImageId $imageId -MinCount 1 -MaxCount 1 -InstanceType $type -TagSpecification $tagSpecs return @{'InstanceId'=$res.Instances.InstanceId}
    8. Additional inputs(추가 입력)를 확장합니다.

    9. 입력 이름에서 선택합니다 InputPayload. Input value(입력 값)에 다음 YAML 데이터를 입력합니다.

      image_id: "{{ imageId }}" tag_value: "{{ tagValue }}" instance_type: "{{ instanceType }}"
  13. 출력을 확장하고 다음을 수행합니다.

    • 이름payload를 입력합니다.

    • Selector(선택기)$.Payload를 입력합니다.

    • 유형(Type)에서 StringMap를 선택합니다.

  14. [단계 추가(Add step)]를 선택하여 실행서에 두 번째 단계를 추가합니다. 두 번째 단계는 1단계에서 시작된 인스턴스의 상태를 쿼리하고 반환된 상태가 ok가 될 때까지 기다립니다.

  15. Step 2(2단계) 섹션에서 다음을 수행합니다.

    1. [단계 이름(Step name)]에 자동화의 두 번째 단계에 대해 설명하는 이름(WaitForInstanceStatusOk)을 입력합니다.

    2. 작업 유형에서 Run a script(스크립트 실행)(aws:executeScript)를 선택합니다.

    3. 설명에 다음과 같은 자동화 단계에 대한 설명을 입력합니다.

      **About This Step** The script continuously polls the instance status check value for the instance launched in Step 1 until the ```ok``` status is returned.
    4. 런타임에서는 제공된 스크립트를 실행하는 데 사용되는 런타임 언어를 선택합니다.

    5. 핸들러poll_instance를 입력합니다. 이는 다음 스크립트에서 선언된 함수 이름입니다.

      참고

      용도로는 필요하지 않습니다 PowerShell.

    6. 스크립트에서 기본 내용을 다음과 같이 바꿉니다. 스크립트를 해당 런타임 값과 일치시켜야 합니다.

      Python
      def poll_instance(events, context): import boto3 import time ec2 = boto3.client('ec2') instance_id = events['InstanceId'] print('[INFO] Waiting for instance status check to report ok', instance_id) instance_status = "null" while True: res = ec2.describe_instance_status(InstanceIds=[instance_id]) if len(res['InstanceStatuses']) == 0: print("Instance status information is not available yet") time.sleep(5) continue instance_status = res['InstanceStatuses'][0]['InstanceStatus']['Status'] print('[INFO] Polling to get status of the instance', instance_status) if instance_status == 'ok': break time.sleep(10) return {'Status': instance_status, 'InstanceId': instance_id}
      PowerShell
      Install-Module AWS.Tools.EC2 -Force $inputPayload = $env:InputPayload | ConvertFrom-Json $instanceId = $inputPayload.payload.InstanceId $status = Get-EC2InstanceStatus -InstanceId $instanceId while ($status.Status.Status -ne 'ok'){ Write-Host 'Polling get status of the instance', $instanceId Start-Sleep -Seconds 5 $status = Get-EC2InstanceStatus -InstanceId $instanceId } return @{Status = $status.Status.Status; InstanceId = $instanceId}
    7. Additional inputs(추가 입력)를 확장합니다.

    8. 입력 이름에서 선택합니다 InputPayload. Input value(입력 값)에 다음을 입력합니다.

      {{ LaunchEc2Instance.payload }}
  16. [자동화 생성(Create automation)]을 선택하여 실행서를 저장합니다.