이벤트를 기반으로 자동화 실행 - AWS Systems Manager

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

이벤트를 기반으로 자동화 실행

Runbook을 Amazon EventBridge 이벤트의 대상으로 지정하여 자동화를 시작할 수 있습니다. 일정에 따라 또는 특정 AWS 시스템 이벤트가 발생할 때 자동화를 시작할 수 있습니다. 예를 들어 인스턴스 시작 시 인스턴스에 소프트웨어를 설치하는 Runbook을 생성한다고 가정해 보겠습니다. BootStrapInstances BootStrapInstances런북 (및 해당 자동화) 을 EventBridge 이벤트 대상으로 지정하려면 먼저 새 규칙을 생성합니다. EventBridge (예제 규칙: 서비스 이름: EC2, 이벤트 유형: EC2 인스턴스 상태 변경 알림, 특정 상태: 실행 중, 모든 인스턴스.) 그런 다음 다음 절차에 따라 EventBridge 콘솔 및 AWS Command Line Interface () AWS CLI 를 사용하여 BootStrapInstances런북을 이벤트 대상으로 지정합니다. 새 인스턴스가 시작되면 시스템에서 자동화를 실행하고 소프트웨어를 설치합니다.

실행서 생성에 대한 자세한 내용은 사용자 런북 생성 섹션을 참조하세요.

런북을 사용하는 EventBridge 이벤트 만들기 (콘솔)

다음 절차를 사용하여 런북을 이벤트 대상으로 구성하십시오. EventBridge

런북을 이벤트 규칙의 대상으로 구성하려면 EventBridge
  1. https://console.aws.amazon.com/events/ 에서 아마존 EventBridge 콘솔을 엽니다.

  2. 탐색 창에서 규칙을 선택합니다.

  3. 규칙 생성을 선택합니다.

  4. 규칙에 대해 이름과 설명을 입력하십시오.

    규칙은 동일한 지역과 동일한 이벤트 버스의 다른 규칙과 동일한 이름을 가질 수 없습니다.

  5. 이벤트 버스에서 이 규칙과 연결할 이벤트 버스를 선택합니다. 이 규칙이 직접 생성한 매칭 이벤트에 응답하도록 AWS 계정 하려면 기본값을 선택하십시오. 계정 AWS 서비스 내에서 이벤트가 발생하면 해당 이벤트는 항상 계정의 기본 이벤트 버스로 이동합니다.

  6. 규칙이 트리거되는 방식을 선택합니다.

    다음을 기반으로 규칙 생성 수행할 작업

    Event

    1. 규칙 유형에서 이벤트 패턴이 있는 규칙을 선택합니다.

    2. 다음을 선택합니다.

    3. 이벤트 소스의 경우 AWS 이벤트 또는 EventBridge 파트너 이벤트를 선택합니다.

    4. Event pattern(이벤트 패턴) 섹션에서 다음을 수행합니다.

      • 템플릿을 사용하여 이벤트 패턴을 생성하려면 Event pattern form(이벤트 패턴 양식)에서 Event source(이벤트 소스), AWS service(서비스) 및 Event type(이벤트 유형)을 선택합니다. 이벤트 유형으로 All Events를 선택하면 에서 발생하는 모든 이벤트가 규칙과 AWS 서비스 일치합니다.

        템플릿을 사용자 정의하려면 사용자 정의 패턴(JSON 편집기)(Custom pattern (JSON editor))을 선택하고 변경 사항을 작성합니다.

      • 사용자 정의 이벤트 패턴을 사용하려면 사용자 정의 패턴(JSON 편집기)(Custom pattern (JSON editor))을 선택하고 이벤트 패턴을 만들 수 있습니다.

    일정
    1. 규칙 유형(Rule type)에서 스케줄(Schedule)을 선택합니다.

    2. 다음을 선택합니다.

    3. 스케줄 패턴(Schedule pattern)에서 다음을 수행합니다.

      • cron 표현식을 사용하여 스케줄을 정의하려면 오전 8시와 같이 특정 시간에 실행되는 세분화된 일정(A fine-grained schedule that runs at a specific time, such as 8:00 a.m)을 선택합니다. 매월 첫째 월요일(PST)(PST on the first Monday of every month)과 cron 표현식을 입력합니다.

      • rate 표현식을 사용하여 일정을 정의하려면 10분마다와 같이 일반 속도로 실행되는 일정(A schedule that runs at a regular rate, such as every 10 minutes)을 선택하고 rate 표현식을 입력합니다.

  7. 다음을 선택합니다.

  8. 대상 유형에서 AWS 서비스를 선택합니다.

  9. Target(대상)에서 Systems Manager Automation을 선택합니다.

  10. [문서(Document)]에서 대상이 호출될 때 사용할 실행서를 선택합니다.

  11. Configure automation parameter(s)(자동화 파라미터 구성) 섹션에서 기본 파라미터 값을 유지하거나(사용 가능한 경우) 값을 직접 입력할 수 있습니다.

    참고

    대상을 생성하려면 각 필수 파라미터에 대한 값을 지정해야 합니다. 그렇지 않으면 시스템에서 규칙이 생성되지만 실행되지 않습니다.

  12. 많은 대상 유형의 경우 대상에 이벤트를 전송할 수 있는 권한이 EventBridge 필요합니다. 이러한 경우 규칙을 실행하는 데 필요한 IAM 역할을 생성할 EventBridge 수 있습니다. 다음 중 하나를 수행합니다.

    • IAM 역할을 자동으로 생성하려면 이 특정 리소스에 대해 새 역할 생성을 선택합니다.

    • 이전에 생성한 IAM 역할을 사용하려면 기존 역할 사용(Use existing role)을 선택하고 드롭다운에서 기존 역할을 선택합니다. 참고로 IAM 역할이 포함되도록 신뢰 정책을 업데이트해야 할 수도 있습니다. EventBridge 다음은 그 예제입니다.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "events.amazonaws.com", "ssm.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
  13. 다음을 선택합니다.

  14. (선택 사항) 규칙에 대해 하나 이상의 태그를 입력하십시오. 자세한 내용은 Amazon EventBridge 사용 설명서의 Amazon EventBridge 리소스 태그 지정을 참조하십시오.

  15. 다음을 선택합니다.

  16. 규칙의 세부 정보를 검토하고 규칙 생성을 선택합니다.

런북 (명령줄) 을 사용하는 EventBridge 이벤트 생성

다음 절차는 AWS CLI (Linux 또는 Windows) 를 사용하거나 EventBridge 이벤트 규칙을 만들고 런북을 대상으로 구성하는 방법을 설명합니다. AWS Tools for PowerShell

런북을 이벤트 규칙의 대상으로 EventBridge 구성하려면
  1. AWS CLI 또는 를 설치하고 구성하십시오 ( AWS Tools for PowerShell아직 설치하지 않았다면).

    자세한 내용은 최신 버전의 AWS CLI 설치 또는 업데이트AWS Tools for PowerShell 설치를 참조하세요.

  2. 명령을 생성하여 새 EventBridge 이벤트 규칙을 지정합니다. 각 example resource placeholder를 사용자의 정보로 바꿉니다.

    일정을 기반으로 트리거

    Linux & macOS
    aws events put-rule \ --name "rule name" \ --schedule-expression "cron or rate expression"
    Windows
    aws events put-rule ^ --name "rule name" ^ --schedule-expression "cron or rate expression"
    PowerShell
    Write-CWERule ` -Name "rule name" ` -ScheduleExpression "cron or rate expression"

    다음 예제에서는 매일 오전 9시 (UTC) 에 시작하는 EventBridge 이벤트 규칙을 만듭니다.

    Linux & macOS
    aws events put-rule \ --name "DailyAutomationRule" \ --schedule-expression "cron(0 9 * * ? *)"
    Windows
    aws events put-rule ^ --name "DailyAutomationRule" ^ --schedule-expression "cron(0 9 * * ? *)"
    PowerShell
    Write-CWERule ` -Name "DailyAutomationRule" ` -ScheduleExpression "cron(0 9 * * ? *)"

    이벤트를 기반으로 트리거

    Linux & macOS
    aws events put-rule \ --name "rule name" \ --event-pattern "{\"source\":[\"aws.service\"],\"detail-type\":[\"service event detail type\"]}"
    Windows
    aws events put-rule ^ --name "rule name" ^ --event-pattern "{\"source\":[\"aws.service\"],\"detail-type\":[\"service event detail type\"]}"
    PowerShell
    Write-CWERule ` -Name "rule name" ` -EventPattern '{"source":["aws.service"],"detail-type":["service event detail type"]}'

    다음 예제는 해당 지역의 EC2 인스턴스가 상태를 변경할 때 시작되는 EventBridge 이벤트 규칙을 생성합니다.

    Linux & macOS
    aws events put-rule \ --name "EC2InstanceStateChanges" \ --event-pattern "{\"source\":[\"aws.ec2\"],\"detail-type\":[\"EC2 Instance State-change Notification\"]}"
    Windows
    aws events put-rule ^ --name "EC2InstanceStateChanges" ^ --event-pattern "{\"source\":[\"aws.ec2\"],\"detail-type\":[\"EC2 Instance State-change Notification\"]}"
    PowerShell
    Write-CWERule ` -Name "EC2InstanceStateChanges" ` -EventPattern '{"source":["aws.ec2"],"detail-type":["EC2 Instance State-change Notification"]}'

    이 명령은 다음과 비슷한 새 EventBridge 규칙의 세부 정보를 반환합니다.

    Linux & macOS
    {
    "RuleArn": "arn:aws:events:us-east-1:123456789012:rule/automationrule"
    }
    Windows
    {
    "RuleArn": "arn:aws:events:us-east-1:123456789012:rule/automationrule"
    }
    PowerShell
    arn:aws:events:us-east-1:123456789012:rule/EC2InstanceStateChanges
  3. 2단계에서 만든 EventBridge 이벤트 규칙의 대상으로 런북을 지정하는 명령을 생성합니다. 각 example resource placeholder를 사용자의 정보로 바꿉니다.

    Linux & macOS
    aws events put-targets \ --rule rule name \ --targets '{"Arn": "arn:aws:ssm:region:account ID:automation-definition/runbook name","Input":"{\"input parameter\":[\"value\"],\"AutomationAssumeRole\":[\"arn:aws:iam::123456789012:role/AutomationServiceRole\"]}","Id": "target ID","RoleArn": "arn:aws:iam::123456789012:role/service-role/EventBridge service role"}'
    Windows
    aws events put-targets ^ --rule rule name ^ --targets '{"Arn": "arn:aws:ssm:region:account ID:automation-definition/runbook name","Input":"{\"input parameter\":[\"value\"],\"AutomationAssumeRole\":[\"arn:aws:iam::123456789012:role/AutomationServiceRole\"]}","Id": "target ID","RoleArn": "arn:aws:iam::123456789012:role/service-role/EventBridge service role"}'
    PowerShell
    $Target = New-Object Amazon.CloudWatchEvents.Model.Target $Target.Id = "target ID" $Target.Arn = "arn:aws:ssm:region:account ID:automation-definition/runbook name" $Target.RoleArn = "arn:aws:iam::123456789012:role/service-role/EventBridge service role" $Target.Input = '{"input parameter":["value"],"AutomationAssumeRole":["arn:aws:iam::123456789012:role/AutomationServiceRole"]}' Write-CWETarget ` -Rule "rule name" ` -Target $Target

    다음 예제에서는 AWS-StartEC2Instance Runbook을 사용하여 지정된 인스턴스 ID를 시작하는 EventBridge 이벤트 대상을 만듭니다.

    Linux & macOS
    aws events put-targets \ --rule DailyAutomationRule \ --targets '{"Arn": "arn:aws:ssm:region:*:automation-definition/AWS-StartEC2Instance","Input":"{\"InstanceId\":[\"i-02573cafcfEXAMPLE\"],\"AutomationAssumeRole\":[\"arn:aws:iam::123456789012:role/AutomationServiceRole\"]}","Id": "Target1","RoleArn": "arn:aws:iam::123456789012:role/service-role/AWS_Events_Invoke_Start_Automation_Execution_1213609520"}'
    Windows
    aws events put-targets ^ --rule DailyAutomationRule ^ --targets '{"Arn": "arn:aws:ssm:region:*:automation-definition/AWS-StartEC2Instance","Input":"{\"InstanceId\":[\"i-02573cafcfEXAMPLE\"],\"AutomationAssumeRole\":[\"arn:aws:iam::123456789012:role/AutomationServiceRole\"]}","Id": "Target1","RoleArn": "arn:aws:iam::123456789012:role/service-role/AWS_Events_Invoke_Start_Automation_Execution_1213609520"}'
    PowerShell
    $Target = New-Object Amazon.CloudWatchEvents.Model.Target $Target.Id = "Target1" $Target.Arn = "arn:aws:ssm:region:*:automation-definition/AWS-StartEC2Instance" $Target.RoleArn = "arn:aws:iam::123456789012:role/service-role/AWS_Events_Invoke_Start_Automation_Execution_1213609520" $Target.Input = '{"InstanceId":["i-02573cafcfEXAMPLE"],"AutomationAssumeRole":["arn:aws:iam::123456789012:role/AutomationServiceRole"]}' Write-CWETarget ` -Rule "DailyAutomationRule" ` -Target $Target

    시스템은 다음과 같은 정보를 반환합니다.

    Linux & macOS
    {
    "FailedEntries": [],
    "FailedEntryCount": 0
    }
    Windows
    {
    "FailedEntries": [],
    "FailedEntryCount": 0
    }
    PowerShell

    에 대한 명령이 성공해도 출력이 없습니다. PowerShell