

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

# Amazon SNS 알림을 사용하여 Systems Manager 상태 변경 모니터링
<a name="monitoring-sns-notifications"></a>

AWS Systems Manager의 도구인 Run Command 또는 Maintenance Windows를 사용하여 보내는 명령의 상태에 대한 알림을 보내도록 Amazon Simple Notification Service(Amazon SNS)를 구성할 수 있습니다. Amazon SNS는 Amazon SNS 주제를 구독하는 클라이언트 또는 엔드포인트에 알림을 보내고 전송하는 작업을 조정하고 관리합니다. 명령이 새로운 상태로 바뀌거나 *실패* 또는 *시간 초과* 같은 특정 상태가 될 때마다 알림을 받을 수 있습니다. 여러 노드에 명령을 보내는 경우, 특정 노드로 보낸 각각의 명령 사본에 대해 알림을 받을 수 있습니다. 이때 각 사본을 *호출*이라고 합니다.

Amazon SNS는 HTTP 또는 HTTPS POST, 이메일(SMTP, 일반 텍스트 또는 JSON 형식) 또는 Amazon Simple Queue Service(Amazon SQS) 대기열에 게시된 메시지로 알림을 배달할 수 있습니다. 자세한 내용은 *Amazon Simple Notification Service Developer Guide*의 [What is Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/)를 참조하세요. Run Command 및 Maintenance Windows에서 제공한 Amazon SNS 알림에 포함된 JSON 데이터 구조의 예는 [AWS Systems Manager에 대한 Amazon SNS 알림 예](monitoring-sns-examples.md) 섹션을 참조하세요.

**중요**  
다음 중요 정보를 기록해 둡니다.  
Amazon Simple Notification Service FIFO 주제는 지원되지 않습니다.
채팅 애플리케이션에서 Amazon Q Developer는 Amazon SNS를 사용한 Systems Manager 모니터링이 지원되지 않습니다. 채팅 애플리케이션에서 Amazon Q Developer를 사용하여 Systems Manager를 모니터링하려면 Amazon EventBridge에서 사용해야 합니다. EventBridge를 사용하는 Systems Manager 모니터링에 대한 자세한 내용은 [Amazon EventBridge로 Systems Manager 이벤트 모니터링](monitoring-eventbridge-events.md) 섹션을 참조하세요. 채팅 애플리케이션의 Amazon EventBridge 및 Amazon Q Developer에 대한 자세한 내용은 *채팅 애플리케이션의 Amazon Q Developer 관리자 가이드*에서 [자습서: 채팅 애플리케이션에서 Amazon Q Developer에 알림을 보내는 Amazon EventBridge 규칙 생성](https://docs.aws.amazon.com/chatbot/latest/adminguide/create-eventbridge-rule.html)을 참조하세요.

## AWS Systems Manager에 대한 Amazon SNS 알림 구성
<a name="monitoring-sns-configure"></a>

유지 관리 기간에 등록된 Run Command 및 Maintenance Windows 태스크는 다음 상태를 시작하는 명령 태스크에 대한 Amazon SNS 알림을 보낼 수 있습니다.
+ 진행 중
+ Success
+ 실패
+ 시간 초과
+ 취소됨

명령을 다음 상태로 만드는 조건에 대한 자세한 내용은 [명령 상태 이해](monitor-commands.md) 섹션을 참조하세요.

**참고**  
또한 Run Command를 사용해 전송된 명령은 취소 중 및 보류 중 상태를 보고합니다. 이러한 상태는 Amazon SNS 알림에서 캡처하지 않습니다.

### 명령 요약 Amazon SNS 알림
<a name="monitoring-sns-configure-summary"></a>

유지 관리 기간에 Amazon SNS 알림을 보내도록 Run Command 또는 Run Command 태스크를 구성한 경우 Amazon SNS는 다음 정보가 포함된 요약 메시지를 전송합니다.


****  

| Field | Type | 설명 | 
| --- | --- | --- | 
|  eventTime  |  문자열  |  이벤트가 시작된 시간입니다. Amazon SNS는 메시지의 배달 순서를 보장하지 않기 때문에 타임스탬프가 중요합니다. 예: 2016-04-26T13:15:30Z   | 
|  documentName  |  문자열  |  이 명령을 실행하는 데 사용된 SSM 문서의 이름입니다.  | 
|  commandId  |  문자열  |  명령을 전송한 후 Run Command에서 생성한 ID입니다.  | 
|  expiresAfter  |  날짜  |  이 시간에 도달할 때까지 명령 실행이 아직 시작되지 않은 경우 명령이 실행되지 않습니다.  | 
|  outputS3BucketName  |  문자열  |  명령 실행에 대한 응답을 저장해야 하는 Amazon Simple Storage Service(Amazon S3) 버킷입니다.  | 
|  outputS3KeyPrefix  |  문자열  |  명령 실행에 대한 응답을 저장해야 하는 버킷 내부의 Amazon S3 디렉터리 경로입니다.  | 
|  requestedDateTime  |  문자열  |  이 특정 노드로 요청을 보낸 날짜와 시간입니다.  | 
|  instanceIds  |  StringList  |  명령의 대상이 되는 노드입니다.  Run Command 작업이 직접 인스턴스 ID를 대상으로 한 경우에만 인스턴스 ID가 요약 메시지에 포함됩니다. Run Command 태스크가 태그 기반 대상 지정을 사용하여 실행된 경우 인스턴스 ID는 요약 메시지에 포함되지 않습니다.   | 
|  status  |  문자열  |  명령의 상태입니다.  | 

### 호출 기반 Amazon SNS 알림
<a name="monitoring-sns-configure-invocation"></a>

여러 노드에 명령을 보내는 경우 Amazon SNS는 각각의 명령 사본 또는 명령 호출에 대해 메시지를 보내 줄 수 있습니다. 메시지에 포함하는 정보는 다음과 같습니다.


****  

| Field | Type | 설명 | 
| --- | --- | --- | 
|  eventTime  |  문자열  |  이벤트가 시작된 시간입니다. Amazon SNS는 메시지의 배달 순서를 보장하지 않기 때문에 타임스탬프가 중요합니다. 예: 2016-04-26T13:15:30Z   | 
|  documentName  |  문자열  |  이 명령을 실행하는 데 사용된 Systems Manager 문서(SSM 문서)의 이름입니다.  | 
|  requestedDateTime  |  문자열  |  이 특정 노드로 요청을 보낸 날짜와 시간입니다.  | 
|  commandId  |  문자열  |  명령을 전송한 후 Run Command에서 생성한 ID입니다.  | 
|  instanceId  |  문자열  |  명령의 대상이 된 인스턴스입니다.  | 
|  status  |  문자열  |  이 호출의 명령 상태입니다.  | 

명령의 상태가 바뀔 때 Amazon SNS 알림을 보내도록 설정하려면 다음 태스크를 완료합니다.

**참고**  
유지 관리 기간에 대해 Amazon SNS 알림을 구성하지 않는 경우 이 주제 뒷부분의 태스크 5를 건너뛸 수 있습니다.

**Topics**
+ [

### 명령 요약 Amazon SNS 알림
](#monitoring-sns-configure-summary)
+ [

### 호출 기반 Amazon SNS 알림
](#monitoring-sns-configure-invocation)
+ [

### 태스크 1: Amazon SNS 주제 생성 및 구독
](#monitoring-configure-sns)
+ [

### 태스크 2: Amazon SNS 알림을 위한 IAM 정책 생성
](#monitoring-iam-policy)
+ [

### 태스크 3: Amazon SNS 알림을 위한 IAM 역할 생성
](#monitoring-iam-notifications)
+ [

### 작업 4: 사용자 액세스 구성
](#monitoring-sns-passpolicy)
+ [

### 작업 5: 유지 관리 기간 역할에 iam:PassRole 정책 연결
](#monitoring-sns-passpolicy-mw)

### 태스크 1: Amazon SNS 주제 생성 및 구독
<a name="monitoring-configure-sns"></a>

Amazon SNS *주제*는 유지 관리 기간에 등록된 Run Command 및 Run Command 태스크가 명령 상태에 대한 알림을 보내는 데 사용하는 통신 채널입니다. Amazon SNS는 HTTP/S, 이메일 및 Amazon Simple Queue Service(Amazon SQS)와 같은 기타 AWS 서비스을(를) 비롯한 다양한 통신 프로토콜을 지원합니다. 시작하려면 이메일 프로토콜부터 시작하는 것이 좋습니다. 주제 생성 방법에 대한 자세한 내용은 *Amazon Simple Notification Service 개발자 안내서*의 [Amazon SNS 주제 생성](https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html)을 참조하세요.

**참고**  
주제를 생성한 뒤 **주제 ARN**을 복사하거나 기록해 둡니다. 상태 알림을 반환하도록 구성된 명령을 보낼 때 이 ARN을 지정해야 합니다.

주제를 생성한 후에는 **엔드포인트**를 지정하여 이를 구독합니다. 이메일 프로토콜을 선택한 경우에는 알림을 수신할 이메일 주소가 엔드포인트가 됩니다. 주제 구독 방법에 대한 자세한 내용은 *Amazon Simple Notification Service 개발자 안내서*의 [Amazon SNS 주제 구독](https://docs.aws.amazon.com/sns/latest/dg/sns-create-subscribe-endpoint-to-topic.html)을 참조하세요.

Amazon SNS는 *AWS 알림*에서 지정한 이메일 주소로 확인 이메일을 보냅니다. 이메일을 열고 **구독 확인** 링크를 선택합니다.

AWS에서 확인 메시지를 받게 됩니다. 이제 Amazon SNS가 지정된 이메일 주소로 이메일 형식의 알림을 주고받을 수 있도록 구성됩니다.

### 태스크 2: Amazon SNS 알림을 위한 IAM 정책 생성
<a name="monitoring-iam-policy"></a>

다음 절차에 따라 Amazon SNS 알림을 시작할 수 있는 권한을 제공하는 사용자 정의 AWS Identity and Access Management(IAM) 정책을 생성합니다.

**Amazon SNS 알림을 위한 사용자 정의 IAM 정책을 생성하려면**

1. [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 IAM 콘솔을 엽니다.

1. 탐색 창에서 **정책**을 선택한 후 **정책 생성**을 선택합니다. ([**시작하기(Get Started)**] 버튼이 나타나면 이 버튼을 선택한 후 [**정책 생성(Create Policy)**]을 선택합니다.)

1. **JSON** 탭을 선택합니다.

1. Amazon SNS 주제에서 AWS KMS 암호화를 사용하는지 여부에 따라 기본 콘텐츠를 다음 중 하나로 교체:

------
#### [ SNS topic not encrypted ]

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "sns:Publish"
               ],
               "Resource": "arn:aws:sns:us-east-1:111122223333:sns-topic-name"
           }
       ]
   }
   ```

------

   *리전*은 미국 동부(오하이오) 리전의 `us-east-2` 같이 AWS Systems Manager이 지원하는 AWS 리전의 식별자를 나타냅니다. 지원되는 *리전* 값 목록은 **Amazon Web Services 일반 참조의 [Systems Manager 서비스 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/ssm.html#ssm_region)에 있는 **리전** 열을 참조하세요.

   **account-id**는 AWS 계정에 대한 `123456789012` 형식의 12자리 식별자를 나타냅니다.

   *sns-topic-name*은 알림 게시에 사용할 Amazon SNS 주제의 이름을 나타냅니다.

------
#### [ SNS topic encrypted ]

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "sns:Publish"
               ],
               "Resource": "arn:aws:sns:us-east-1:111122223333:sns-topic-name"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "kms:GenerateDataKey",
                   "kms:Decrypt"
               ],
               "Resource": "arn:aws:kms:us-east-1:111122223333:key/kms-key-id"
           }
       ]
   }
   ```

------

   *리전*은 미국 동부(오하이오) 리전의 `us-east-2` 같이 AWS Systems Manager이 지원하는 AWS 리전의 식별자를 나타냅니다. 지원되는 *리전* 값 목록은 **Amazon Web Services 일반 참조의 [Systems Manager 서비스 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/ssm.html#ssm_region)에 있는 **리전** 열을 참조하세요.

   **account-id**는 AWS 계정에 대한 `123456789012` 형식의 12자리 식별자를 나타냅니다.

   *sns-topic-name*은 알림 게시에 사용할 Amazon SNS 주제의 이름을 나타냅니다.

   *kms-key-id*는 주제를 암호화 및 복호화하기 위해 AWS KMS에서 사용할 대칭 암호화 KMS 키의 ID를 `1234abcd-12ab-34cd-56ef-12345EXAMPLE` 형식으로 나타냅니다.

**참고**  
AWS KMS 암호화에는 요금이 부과됩니다. 자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [Amazon SNS 암호화 키 및 비용 관리](https://docs.aws.amazon.com/sns/latest/dg/sns-key-management.html)를 참조하세요.

------

1. **다음: 태그**를 선택합니다.

1. (선택 사항) 이 정책에 대한 액세스를 구성, 추적 또는 제어할 태그-키 값 페어를 하나 이상 추가합니다.

1. **다음: 검토**를 선택합니다.

1. **Review Policy(정책 검토)** 페이지의 **이름**에 인라인 정책 이름을 입력합니다. 예를 들면 **my-sns-publish-permissions**입니다.

1. (선택 사항) **설명**에 정책에 대한 설명을 입력합니다.

1. **정책 생성**을 선택합니다.

### 태스크 3: Amazon SNS 알림을 위한 IAM 역할 생성
<a name="monitoring-iam-notifications"></a>

다음 절차를 사용하여 Amazon SNS 알림을 위한 IAM 역할을 생성합니다. 이 서비스 역할은 Systems Manager에서 Amazon SNS 알림을 시작하는 데 사용됩니다. 이후의 모든 절차에서 이 역할을 Amazon SNS IAM 역할이라고 합니다.

**Amazon SNS 알림을 위한 IAM 서비스 역할을 생성하려면**

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 IAM 콘솔을 엽니다.

1. IAM 콘솔의 탐색 창에서 **역할**을 선택하고 **역할 생성**을 선택합니다.

1. **AWS 서비스** 역할 유형을 선택한 후 Systems Manager를 선택합니다.

1. Systems Manager 사용 사례를 선택합니다. 그리고 **다음**을 선택합니다.

1. **Attach permissions policies(권한 정책 연결)** 페이지에서 작업 2에서 생성한 사용자 지정 정책의 이름 왼쪽에 있는 확인란을 선택합니다. 예를 들면 **my-sns-publish-permissions**입니다.

1. (선택 사항) [권한 경계](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html)를 선택합니다. 이는 서비스 역할에서 사용 가능한 고급 기능이며 서비스에 연결된 역할은 아닙니다.

   **권한 경계** 섹션을 열고 **최대 역할 권한을 관리하기 위한 권한 경계 사용**을 선택합니다. IAM은 계정의 AWS관리형 또는 고객 관리형 정책 목록을 포함합니다. 권한 경계를 사용하기 위한 정책을 선택하거나 **정책 생성**을 선택하여 새 브라우저 탭을 열고 완전히 새로운 정책을 생성합니다. 자세한 내용은 *IAM 사용자 설명서*에서 [IAM 정책 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-start)을 참조하세요. 정책을 생성하면 탭을 닫고 원래 탭으로 돌아와 권한 경계에 사용할 정책을 선택합니다.

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

1. 가능한 경우 이 역할의 목적을 식별하는 데 도움이 되는 역할 이름이나 역할 이름 접미사를 입력합니다. 역할 이름은 AWS 계정 내에서 고유해야 합니다. 대소문자는 구별하지 않습니다. 예를 들어, 이름이 **PRODROLE**과 **prodrole**, 두 가지로 지정된 역할을 만들 수는 없습니다. 다양한 주체가 역할을 참조할 수 있기 때문에 역할이 생성된 후에는 역할 이름을 편집할 수 없습니다.

1. (선택 사항)**설명**에 새 역할에 대한 설명을 입력합니다.

1. **1단계: 신뢰할 수 있는 엔터티 선택(Step 1: Select trusted entities)** 또는 **2단계: 권한 선택(Step 2: Select permissions)** 섹션에서 **편집(Edit)**을 선택하여 역할에 대한 사용 사례와 권한을 편집합니다.

1. (선택 사항) 태그를 키 값 페어로 연결하여 메타데이터를 사용자에게 추가합니다. IAM에서 태그 사용에 대한 자세한 내용을 알아보려면 *IAM 사용 설명서*의 [IAM 리소스에 태그 지정](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html)을 참조하십시오.

1. 역할을 검토한 다음 **역할 생성**을 선택합니다.

1. 역할 이름을 선택한 다음 **역할 ARN** 값을 복사하거나 기록해 둡니다. 이 역할에 대한 Amazon Resource Name(ARN)은 Amazon SNS 알림을 반환하도록 구성된 명령을 보낼 때 사용됩니다.

1. [**요약(Summary)**] 페이지가 열립니다.

### 작업 4: 사용자 액세스 구성
<a name="monitoring-sns-passpolicy"></a>

IAM 엔터티(사용자, 역할 또는 그룹)에 관리자 권한이 할당된 경우 사용자 또는 역할은 AWS Systems Manager의 도구인 Run Command와 Maintenance Windows에 액세스할 수 있습니다.

관리자 권한이 없는 엔터티의 경우 관리자가 IAM 엔터티에 다음 권한을 부여해야 합니다.
+ `AmazonSSMFullAccess` 관리형 정책 또는 유사한 권한을 제공하는 정책.
+ `iam:PassRole`에서 생성된 역할에 대한 [태스크 3: Amazon SNS 알림을 위한 IAM 역할 생성](#monitoring-iam-notifications) 권한. 예제:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iam::111122223333:role/sns-role-name",
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "ssm.amazonaws.com"
                }
            }
        }
    ]
}
```

------

액세스 권한을 제공하려면 사용자, 그룹 또는 역할에 권한을 추가하세요.
+ AWS IAM Identity Center의 사용자 및 그룹:

  권한 세트를 생성합니다. *AWS IAM Identity Center 사용자 안내서*에서 [권한 세트 생성](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html)의 지침을 따릅니다.
+ ID 제공업체를 통해 IAM에서 관리되는 사용자:

  ID 페더레이션을 위한 역할을 생성합니다. *IAM 사용자 설명서*의 [Create a role for a third-party identity provider (federation)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html)의 지침을 따릅니다.
+ IAM 사용자:
  + 사용자가 맡을 수 있는 역할을 생성합니다. *IAM 사용자 설명서*에서 [Create a role for an IAM user](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html)의 지침을 따릅니다.
  + (권장되지 않음) 정책을 사용자에게 직접 연결하거나 사용자를 사용자 그룹에 추가합니다. *IAM 사용 설명서*에서 [사용자(콘솔)에 권한 추가](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console)의 지침을 따릅니다.

**사용자 액세스를 구성하고 사용자 계정에 `iam:PassRole` 정책을 연결하려면**

1. IAM 탐색 창에서 [**사용자(Users)**]를 선택한 후 구성할 사용자 계정을 선택합니다.

1. [**권한(Permissions)**] 탭의 정책 목록에서 **AmazonSSMFullAccess** 정책이 있는지, 아니면 Systems Manager에 액세스할 수 있는 권한을 계정에 부여하는 유사한 정책이 있는지 확인합니다.

1. **인라인 정책 추가(Add inline policy)**를 선택합니다.

1. **정책 생성(Create policy)** 페이지에서 **시각적 편집기(Visual editor)** 탭을 선택합니다.

1. [**서비스 선택(Choose a service)**]을 선택한 다음 [**IAM**]을 선택합니다.

1. **작업(Actions)**에서 **작업 필터링(Filter actions)** 텍스트 상자에 **PassRole**을 입력하고 **PassRole** 옆의 확인란을 선택합니다.

1. [**리소스(Resources)**]에 대해 [**특정(Specific)**]이 선택되었는지 확인한 다음 [**ARN 추가(Add ARN)**]를 선택합니다.

1. [**역할에 대한 ARN 지정(Specify ARN for role)**] 필드에서 태스크 3의 마지막에 복사한 Amazon SNS IAM 역할 ARN을 붙여 넣습니다. **계정** 및 **Role name with path(역할 이름 및 경로)** 필드에 값이 자동으로 입력됩니다.

1. **추가(Add)**를 선택합니다.

1. **정책 검토(Review policy)**를 선택합니다.

1. **정책 검토(Review Policy)** 페이지에 이름을 입력한 다음 **정책 생성(Create Policy)**을 선택합니다.

### 작업 5: 유지 관리 기간 역할에 iam:PassRole 정책 연결
<a name="monitoring-sns-passpolicy-mw"></a>

유지 관리 기간으로 Run Command 작업을 등록할 때 서비스 역할 Amazon 리소스 이름(ARN)을 지정합니다. 이 서비스 역할은 Systems Manager가 유지 관리 기간에 등록된 태스크를 실행하는 데 사용됩니다. 등록된 Run Command 태스크에 대한 Amazon SNS 알림을 구성하려면 지정된 유지 관리 기간 서비스 역할에 `iam:PassRole` 정책을 연결합니다. Amazon SNS 알림을 위해 등록된 태스크를 구성하지 않으려면 이 태스크를 건너뛸 수 있습니다.

`iam:PassRole` 정책은 Maintenance Windows 서비스 역할이 태스크 3에서 생성된 Amazon SNS IAM 역할을 Amazon SNS 서비스로 전달하도록 허용합니다. 다음 절차에서는 `iam:PassRole` 정책을 Maintenance Windows 서비스 역할에 연결하는 방법을 보여줍니다.

**참고**  
등록된 Run Command 태스크와 관련된 알림을 보내려면 유지 관리 기간의 사용자 정의 서비스 역할을 사용합니다. 자세한 내용은 [Maintenance Windows 설정](setting-up-maintenance-windows.md) 섹션을 참조하세요.  
유지 관리 기간 작업을 위해 사용자 지정 서비스 역할을 생성한 경우 [Maintenance Windows 설정](setting-up-maintenance-windows.md)의 내용을 참조하세요.

**Maintenance Windows 역할에 `iam:PassRole` 정책을 연결하려면**

1. IAM 콘솔([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/))을 엽니다.

1. 탐색 창에서 **역할(Roles)**을 선택하고, 태스크 3에서 생성한 Amazon SNS IAM 역할을 선택합니다.

1. [**역할 ARN(Role ARN)**]을 복사하거나 기록하고 IAM 콘솔의 [**역할(Roles)**] 섹션으로 돌아갑니다.

1. **역할 이름(Role name)** 목록에서 생성한 사용자 지정 Maintenance Windows 서비스 역할을 선택합니다.

1. **권한(Permissions)** 탭에서 `AmazonSSMMaintenanceWindowRole` 정책이 나열되는지 또는 유지 관리 기간에 Systems Manager API에 대한 권한을 부여하는 유사한 정책이 있는지 확인합니다. 그렇지 않은 경우 **권한 추가, 정책 연결**을 선택하여 연결합니다.

1. **권한 추가, 인라인 정책 추가(Add permissions, Create inline policy)**를 선택합니다.

1. [**시각적 편집기(Visual Editor)**] 탭을 선택합니다.

1. [**서비스(Service)**]에서 [**IAM**]을 선택합니다.

1. **작업(Actions)**에서 **작업 필터링(Filter actions)** 텍스트 상자에 **PassRole**을 입력하고 **PassRole** 옆의 확인란을 선택합니다.

1. **리소스**에서 **Specific(특정)**을 선택한 다음 **Add ARN(ARN 추가)**를 선택합니다.

1. [**역할의 ARN 지정(Specify ARN for role)**] 상자에서 태스크 3에서 생성된 Amazon SNS IAM 역할의 ARN을 붙여 넣은 다음, [**추가(Add)**]를 선택합니다.

1. **정책 검토**를 선택합니다.

1. **정책 검토** 페이지에서 `PassRole` 정책의 이름을 지정한 다음 **정책 생성**을 선택합니다.

# AWS Systems Manager에 대한 Amazon SNS 알림 예
<a name="monitoring-sns-examples"></a>

AWS Systems Manager의 도구인 Run Command 또는 Maintenance Windows를 사용하여 보내는 명령의 상태에 대한 알림을 보내도록 Amazon Simple Notification Service(Amazon SNS)를 구성할 수 있습니다.

**참고**  
이 설명서에서는 Run Command 또는 Maintenance Windows 알림을 구성하는 방법을 다루지 않습니다. 명령 상태에 대한 Amazon SNS 알림을 보내기 위한 Run Command 또는 Maintenance Windows 구성에 대한 자세한 내용은 [AWS Systems Manager에 대한 Amazon SNS 알림 구성](monitoring-sns-notifications.md#monitoring-sns-configure) 섹션을 참조하세요.

다음 예에서는 Run Command 또는 Maintenance Windows에 대해 구성된 경우 Amazon SNS 알림에 의해 반환된 JSON 출력의 구조를 보여줍니다.

**인스턴스 ID 타겟팅을 사용하여 명령 요약 메시지의 샘플 JSON 출력**

```
{
    "commandId": "a8c7e76f-15f1-4c33-9052-0123456789ab",
    "documentName": "AWS-RunPowerShellScript",
    "instanceIds": [
        "i-1234567890abcdef0",
        "i-9876543210abcdef0"
    ],
    "requestedDateTime": "2019-04-25T17:57:09.17Z",
    "expiresAfter": "2019-04-25T19:07:09.17Z",
    "outputS3BucketName": "amzn-s3-demo-bucket",
    "outputS3KeyPrefix": "runcommand",
    "status": "InProgress",
    "eventTime": "2019-04-25T17:57:09.236Z"
}
```

**태그 기반 타겟팅을 사용하여 명령 요약 메시지의 샘플 JSON 출력**

```
{
    "commandId": "9e92c686-ddc7-4827-b040-0123456789ab",
    "documentName": "AWS-RunPowerShellScript",
    "instanceIds": [],
    "requestedDateTime": "2019-04-25T18:01:03.888Z",
    "expiresAfter": "2019-04-25T19:11:03.888Z",
    "outputS3BucketName": "",
    "outputS3KeyPrefix": "",
    "status": "InProgress",
    "eventTime": "2019-04-25T18:01:05.825Z"
}
```

**호출 메시지를 위한 샘플 JSON 출력**

```
{
    "commandId": "ceb96b84-16aa-4540-91e3-925a9a278b8c",
    "documentName": "AWS-RunPowerShellScript",
    "instanceId": "i-1234567890abcdef0",
    "requestedDateTime": "2019-04-25T18:06:05.032Z",
    "status": "InProgress",
    "eventTime": "2019-04-25T18:06:05.099Z"
}
```

# Run Command을 사용하여 상태 알림을 반환하는 명령 전송
<a name="monitoring-sns-rc-send"></a>

다음 절차에서는 상태 경보를 반환하도록 구성된 AWS Systems Manager의 도구인 Run Command를 통해 AWS Command Line Interface(AWS CLI) 또는 AWS Systems Manager 콘솔을 사용하여 명령을 보내는 방법을 보여줍니다.

## 알림을 반환하는 Run Command 전송(콘솔)
<a name="monitoring-sns-rc-send-console"></a>

Systems Manager 콘솔을 사용하여 상태 알림을 반환하도록 구성된 Run Command를 통해 명령을 보내려면 다음 절차를 사용합니다.

**알림을 반환하는 명령을 전송하려면(콘솔)**

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

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

1. **Run command**(실행 명령)를 선택합니다.

1. **Command 문서(Command document)** 목록에서 Systems Manager 문서를 선택합니다.

1. **명령 파라미터** 섹션에서 필요한 파라미터의 값을 지정합니다.

1. **Targets**(대상) 섹션에서, 태그를 지정하거나, 수동으로 인스턴스나 엣지 디바이스를 선택하거나, 리소스 그룹을 지정하여 이 작업을 실행할 관리형 노드를 식별합니다.
**작은 정보**  
예상한 관리형 노드가 목록에 없으면 [관리형 노드 가용성 문제 해결](fleet-manager-troubleshooting-managed-nodes.md)에서 문제 해결 팁을 참조하세요.

1. **Other parameters**(다른 파라미터):
   + **Comment**(설명)에 명령에 대한 정보를 입력합니다.
   + **제한 시간(초)**에서 전체 명령 실행이 실패할 때까지 시스템이 기다리는 시간을 초 단위로 지정합니다.

1. **Rate control**(속도 제어)에서
   + **Concurrency**(동시성)에서 명령을 동시에 실행할 관리형 노드의 백분율 또는 개수를 지정합니다.
**참고**  
관리형 노드에 적용할 태그를 지정하거나, AWS 리소스 그룹을 지정하여 대상을 선택하였지만 대상으로 지정할 관리형 노드 수를 잘 모를 경우에는 백분율을 지정하여 동시에 문서를 실행할 수 있는 대상 수를 제한합니다.
   + **Error threshold**(오류 임계값)에서, 명령이 노드의 개수 또는 백분율에서 실패한 후 다른 관리형 노드에서 해당 명령의 실행을 중지할 시간을 지정합니다. 예를 들어 세 오류를 지정하면 네 번째 오류를 받았을 때 Systems Manager가 명령 전송을 중지합니다. 여전히 명령을 처리 중인 관리형 노드도 오류를 전송할 수 있습니다.

1. (선택 사항) **Output options**(출력 옵션)에서 명령 출력을 파일에 저장하려면 **Write command output to an S3 bucket**(S3 버킷에 명령 출력 쓰기) 상자를 선택합니다. 상자에 버킷 및 접두사(폴더) 이름을 입력합니다.
**참고**  
데이터를 S3 버킷에 쓰는 기능을 부여하는 S3 권한은 이 작업을 수행하는 IAM 사용자의 권한이 아니라 인스턴스에 할당된 인스턴스 프로파일(EC2 인스턴스용) 또는 IAM 서비스 역할(하이브리드 정품 인증 시스템)의 권한입니다. 자세한 내용은 [Systems Manager에 필요한 인스턴스 권한 구성](setup-instance-permissions.md)이나 [하이브리드 환경을 위한 IAM 서비스 역할 생성](hybrid-multicloud-service-role.md)을 참조하세요. 또한 지정된 S3 버킷이 다른 AWS 계정에 있는 경우 관리형 노드와 연결된 인스턴스 프로파일 또는 IAM 서비스 역할은 해당 버킷에 쓸 수 있는 권한이 있어야 합니다.

1. **SNS 알림** 섹션에서 **SNS 알림 활성화**를 선택합니다.

1. **IAM 역할(IAM role)**에서 [Amazon SNS 알림을 사용하여 Systems Manager 상태 변경 모니터링](monitoring-sns-notifications.md)의 작업 3에서 생성한 Amazon SNS IAM 역할 ARN을 선택합니다.

1. [**SNS 주제(SNS topic)**]에 사용할 Amazon SNS 주제 ARN을 입력합니다.

1. [**이벤트 알림(Event notifications)**]에서 알림을 받을 이벤트를 선택합니다.

1. **변경 사항 알림(Change notifications)**에서 명령 요약에 대한 알림만 수신하거나(**명령 상태 변경(Command status changes)**) 또는 여러 노드로 전송된 명령 사본마다 알림을 수신하도록 선택합니다(**각 인스턴스 변경에 대한 명령 상태(Command status on each instance changes)**).

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

1. 이메일에서 Amazon SNS의 메시지를 확인하고 이메일 메시지를 엽니다. Amazon SNS에서 이메일 메시지를 보내는 데 몇 분 정도 걸릴 수 있습니다.

## 알림을 반환하는 Run Command 보내기(CLI)
<a name="monitoring-sns-rc-send-cli"></a>

AWS CLI를 사용하여 상태 알림을 반환하도록 구성된 Run Command 을 통해 명령을 보내려면 다음 절차를 사용하십시오.

**상태 알림을 반환하는 명령 보내기(CLI)**

1. AWS CLI을 엽니다.

1. 관리형 노드 ID를 기반으로 대상을 지정하려면 다음 명령에서 파라미터를 지정합니다.

   ```
   aws ssm send-command --instance-ids "ID-1, ID-2" --document-name "Name" --parameters '{"commands":["input"]}' --service-role "SNSRoleARN" --notification-config '{"NotificationArn":"SNSTopicName","NotificationEvents":["All"],"NotificationType":"Command"}'
   ```

   다음은 한 예입니다.

   ```
   aws ssm send-command --instance-ids "i-02573cafcfEXAMPLE, i-0471e04240EXAMPLE" --document-name "AWS-RunPowerShellScript" --parameters '{"commands":["Get-Process"]}' --service-role "arn:aws:iam::111122223333:role/SNS_Role" --notification-config '{"NotificationArn":"arn:aws:sns:us-east-1:111122223333:SNSTopic","NotificationEvents":["All"],"NotificationType":"Command"}'
   ```

**다른 명령**  
태그를 사용하여 관리형 인스턴스를 대상으로 지정하려면 다음 명령에서 파라미터를 지정합니다.

   ```
   aws ssm send-command --targets "Key=tag:TagName,Values=TagKey" --document-name "Name" --parameters '{"commands":["input"]}' --service-role "SNSRoleARN" --notification-config '{"NotificationArn":"SNSTopicName","NotificationEvents":["All"],"NotificationType":"Command"}'
   ```

   다음은 한 예입니다.

   ```
   aws ssm send-command --targets "Key=tag:Environment,Values=Dev" --document-name "AWS-RunPowerShellScript" --parameters '{"commands":["Get-Process"]}' --service-role "arn:aws:iam::111122223333:role/SNS_Role" --notification-config '{"NotificationArn":"arn:aws:sns:us-east-1:111122223333:SNSTopic","NotificationEvents":["All"],"NotificationType":"Command"}'
   ```

1. **Enter**를 누릅니다.

1. 이메일에서 Amazon SNS의 메시지를 확인하고 이메일 메시지를 엽니다. Amazon SNS에서 이메일 메시지를 보내는 데 몇 분 정도 걸릴 수 있습니다.

자세한 내용은 *AWS CLI 명령 레퍼런스*의 [https://docs.aws.amazon.com/cli/latest/reference/ssm/send-command.html](https://docs.aws.amazon.com/cli/latest/reference/ssm/send-command.html) 섹션을 참조하세요.

# 유지 관리 기간을 사용하여 상태 알림을 반환하는 명령 전송
<a name="monitoring-sns-mw-register"></a>

다음 절차에서는 AWS Systems Manager 콘솔 또는 AWS Command Line Interface(AWS CLI)를 사용하여 Run Command 태스크를 유지 관리 기간에 등록하는 방법을 보여줍니다. Run Command는 AWS Systems Manager의 도구입니다. 이 절차에서는 상태 알림을 반환하도록 Run Command 작업을 구성하는 방법에 대해서도 설명합니다.

**시작하기 전 준비 사항**  
유지 관리 기간을 생성하거나 대상을 등록하지 않은 경우, [콘솔을 사용하여 유지 관리 기간 생성 또는 선택](sysman-maintenance-working.md)에서 유지 관리 기간을 생성하고 대상을 등록하는 방법에 대한 단계를 참조하십시오.

Amazon Simple Notification Service(Amazon SNS) 서비스에서 알림을 수신하려면 등록된 태스크에 지정된 Maintenance Windows 서비스 역할에 `iam:PassRole` 정책을 연결합니다. Maintenance Windows 서비스 역할에 `iam:PassRole` 권한을 추가하지 않은 경우 [작업 5: 유지 관리 기간 역할에 iam:PassRole 정책 연결](monitoring-sns-notifications.md#monitoring-sns-passpolicy-mw) 섹션을 참조하세요.

## 알림을 반환하는 유지 관리 기간에 Run Command 작업 등록(콘솔)
<a name="monitoring-sns-mw-register-console"></a>

Systems Manager 콘솔을 사용하여 유지 관리 기간에 상태 알림을 반환하도록 구성된 Run Command 태스크를 등록하려면 다음 절차를 사용합니다.

**알림을 반환하는 유지 관리 기간에 Run Command 작업을 등록하려면(콘솔)**

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

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

1. Amazon Simple Notification Service(Amazon SNS) 알림을 보내도록 구성된 Run Command 태스크를 등록할 유지 관리 기간을 선택합니다.

1. [**작업(Actions)**], [**Run command 태스크 등록(Register Run command task)**]을 차례로 선택합니다.

1. (옵션) [**이름(Name)**] 필드에 태스크의 이름을 입력합니다.

1. (옵션) [**설명(Description)**]에 설명을 입력합니다.

1. **명령 문서(Command document)**에서 명령 문서를 선택합니다.

1. **작업 우선순위**에서 이 작업의 우선순위를 지정합니다. 가장 높은 우선순위는 `0`입니다. Maintenance Window의 작업은 우선순위에 따라 예약됩니다. 우선순위가 같은 작업은 동시에 일정이 수립됩니다.

1. [**대상(Targets)**] 섹션에서 등록된 대상 그룹을 선택하거나 등록되지 않은 대상을 선택합니다.

1. **Rate control**(속도 제어)에서
   + **Concurrency**(동시성)에서 명령을 동시에 실행할 관리형 노드의 백분율 또는 개수를 지정합니다.
**참고**  
관리형 노드에 적용할 태그를 지정하거나, AWS 리소스 그룹을 지정하여 대상을 선택하였지만 대상으로 지정할 관리형 노드 수를 잘 모를 경우에는 백분율을 지정하여 동시에 문서를 실행할 수 있는 대상 수를 제한합니다.
   + **Error threshold**(오류 임계값)에서, 명령이 노드의 개수 또는 백분율에서 실패한 후 다른 관리형 노드에서 해당 명령의 실행을 중지할 시간을 지정합니다. 예를 들어 세 오류를 지정하면 네 번째 오류를 받았을 때 Systems Manager가 명령 전송을 중지합니다. 여전히 명령을 처리 중인 관리형 노드도 오류를 전송할 수 있습니다.

1. [**IAM 서비스 역할(IAM service role)**] 영역에서 SNS 역할에 대한 `iam:PassRole` 권한이 있는 Maintenance Windows 서비스 역할을 선택합니다.
**참고**  
Systems Manager가 SNS 역할을 Amazon SNS에 전달할 수 있도록 Maintenance Windows 역할에 `iam:PassRole` 권한을 추가합니다. `iam:PassRole` 권한을 추가하지 않은 경우에는 [Amazon SNS 알림을 사용하여 Systems Manager 상태 변경 모니터링](monitoring-sns-notifications.md) 주제의 작업 5를 참조하십시오.

1. (선택 사항) **출력 옵션**에서 명령 출력을 파일에 저장하려면 **S3 버킷에 쓰기 활성화** 옆의 상자를 선택합니다. 상자에 버킷 및 접두사(폴더) 이름을 입력합니다.
**참고**  
데이터를 S3 버킷에 쓰는 기능을 부여하는 S3 권한은 이 작업을 수행하는 IAM 사용자의 권한이 아닌 관리형 노드에 할당된 인스턴스 프로파일의 권한입니다. 자세한 내용은 [Systems Manager에 필요한 인스턴스 권한 구성](setup-instance-permissions.md)이나 [하이브리드 환경을 위한 IAM 서비스 역할 생성](hybrid-multicloud-service-role.md)을 참조하세요. 또한 지정된 S3 버킷이 다른 AWS 계정에 있는 경우 관리형 노드와 연결된 인스턴스 프로파일 또는 IAM 서비스 역할은 해당 버킷에 쓸 수 있는 권한이 있어야 합니다.

1. [**SNS 알림(SNS notifications)**] 섹션에서 다음을 수행합니다.
   + [**SNS 알림 선택(Enable SNS Notifications)**]을 선택합니다.
   + [**IAM 역할(IAM role)**]에서 [Amazon SNS 알림을 사용하여 Systems Manager 상태 변경 모니터링](monitoring-sns-notifications.md)의 태스크 3에서 생성한 Amazon SNS IAM 역할 Amazon 리소스 이름(ARN)을 선택하여 Amazon SNS를 시작합니다.
   + [**SNS 주제(SNS topic)**]에 사용할 Amazon SNS 주제 ARN을 입력합니다.
   + [**이벤트 유형(Event type)**] 섹션에서 알림을 받을 이벤트를 선택합니다.
   + **알림 유형(Notification type)**에서 여러 노드로 보낸 명령의 각 사본(호출)에 대해 알림을 받을 것인지 아니면 명령 요약에 대해 알림을 받을 것인지 선택합니다.

1. [**파라미터(Parameters)**] 섹션에 선택한 Command 문서를 기반으로 필요한 파라미터를 입력합니다.

1. [**Run command 태스크 등록(Register Run command task)**]을 선택합니다.

1. 다음에 유지 관리 기간이 실행되면 이메일에서 Amazon SNS의 메시지를 확인하고 이메일 메시지를 엽니다. Amazon SNS에서 이메일 메시지를 보내는 데 몇 분 정도 걸릴 수 있습니다.

## 알림을 반환하는 유지 관리 기간에 Run Command 작업 등록(CLI)
<a name="monitoring-sns-mw-register-cli"></a>

AWS CLI를 사용하여 유지 관리 기간에 상태 알림을 반환하도록 구성된 Run Command 작업을 등록하려면 다음 절차를 사용하십시오.

**알림을 반환하는 유지 관리 기간으로 Run Command 작업을 등록하려면(CLI)**
**참고**  
이 절차는 작업 옵션을 보다 잘 관리하기 위해 `--cli-input-json` 명령 옵션을 사용하며 옵션 값은 JSON 파일에 저장됩니다.

1. 로컬 시스템에 `RunCommandTask.json`이라는 파일을 생성하십시오.

1. 다음 내용을 파일에 붙여 넣습니다.

   ```
   {
       "Name": "Name",
       "Description": "Description",
       "WindowId": "mw-0c50858d01EXAMPLE",
       "ServiceRoleArn": "arn:aws:iam::account-id:role/MaintenanceWindowIAMRole",
       "MaxConcurrency": "1",
       "MaxErrors": "1",
       "Priority": 3,
       "Targets": [
           {
               "Key": "WindowTargetIds",
               "Values": [
                   "e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE"
               ]
           }
       ],
       "TaskType": "RUN_COMMAND",
       "TaskArn": "CommandDocumentName",
       "TaskInvocationParameters": {
           "RunCommand": {
               "Comment": "Comment",
               "TimeoutSeconds": 3600,
               "NotificationConfig": {
                   "NotificationArn": "arn:aws:sns:region:account-id:SNSTopicName",
                   "NotificationEvents": [
                       "All"
                   ],
                   "NotificationType": "Command"
               },
               "ServiceRoleArn": "arn:aws:iam::account-id:role/SNSIAMRole"
           }
       }
   }
   ```

1. 예제 값을 고유한 리소스에 대한 정보로 바꾸십시오.

   이 예제에서 생략한 옵션을 사용하려는 경우 복원할 수도 있습니다. 예를 들어 명령 출력을 S3 버킷에 저장할 수 있습니다.

   자세한 내용은 *AWS CLI 명령 참조*의 [https://docs.aws.amazon.com/cli/latest/reference/ssm/register-task-with-maintenance-window.html](https://docs.aws.amazon.com/cli/latest/reference/ssm/register-task-with-maintenance-window.html) 섹션을 참조하십시오.

1. 파일을 저장합니다.

1. 파일을 저장한 로컬 시스템 디렉터리에서 다음 명령을 실행합니다.

   ```
   aws ssm register-task-with-maintenance-window --cli-input-json file://RunCommandTask.json
   ```
**중요**  
파일 이름 앞에 `file://`를 포함해야 합니다. 이 명령에 필수적입니다.

   명령이 제대로 실행되면 다음과 비슷한 정보를 반환합니다.

   ```
   {
       "WindowTaskId": "j2l8d5b5c-mw66-tk4d-r3g9-1d4d1EXAMPLE"
   }
   ```

1. 유지 관리 기간의 다음 실행 후 이메일에서 Amazon SNS의 메시지를 확인하고 이메일 메시지를 엽니다. Amazon SNS에서 이메일 메시지를 보내는 데 몇 분 정도 걸릴 수 있습니다.

명령줄에서 유지 관리 기간에 태스크 등록에 대한 자세한 내용은 [유지 관리 기간에 태스크 등록](mw-cli-tutorial-tasks.md)을 참조하세요.