Amazon SNS 알림을 사용하여 Systems Manager 상태 변경 모니터링 - AWS Systems Manager

Amazon SNS 알림을 사용하여 Systems Manager 상태 변경 모니터링

참고

Amazon Simple Notification Service FIFO 주제는 지원되지 않습니다.

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 GuideWhat is Amazon SNS를 참조하세요. Run Command 및 Maintenance Windows에서 제공한 Amazon SNS 알림에 포함된 JSON 데이터 구조의 예는 AWS Systems Manager에 대한 Amazon SNS 알림 예 섹션을 참조하세요.

AWS Systems Manager에 대한 Amazon SNS 알림 구성

유지 관리 기간에 등록된 Run Command 및 Maintenance Windows 태스크는 다음 상태를 시작하는 명령 태스크에 대한 Amazon SNS 알림을 보낼 수 있습니다.

  • 진행 중

  • Success

  • Failed

  • 시간 초과

  • 취소됨

명령을 다음 상태로 만드는 조건에 대한 자세한 내용은 명령 상태 이해 섹션을 참조하세요.

참고

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

명령 요약 Amazon SNS 알림

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

필드 유형 설명

eventTime

String

이벤트가 시작된 시간입니다. Amazon SNS는 메시지의 배달 순서를 보장하지 않기 때문에 타임스탬프가 중요합니다. 예: 2016-04-26T13:15:30Z

documentName

String

이 명령을 실행하는 데 사용된 SSM 문서의 이름입니다.

commandId

String

명령을 전송한 후 Run Command에서 생성한 ID입니다.

expiresAfter

날짜

이 시간에 도달할 때까지 명령 실행이 아직 시작되지 않은 경우 명령이 실행되지 않습니다.

outputS3BucketName

String

명령 실행에 대한 응답을 저장해야 하는 Amazon Simple Storage Service(Amazon S3) 버킷입니다.

outputS3KeyPrefix

String

명령 실행에 대한 응답을 저장해야 하는 버킷 내부의 Amazon S3 디렉터리 경로입니다.

requestedDateTime

String

이 특정 노드로 요청을 보낸 날짜와 시간입니다.

instanceIds

StringList

명령의 대상이 되는 노드입니다.

참고

Run Command 작업이 직접 인스턴스 ID를 대상으로 한 경우에만 인스턴스 ID가 요약 메시지에 포함됩니다. Run Command 태스크가 태그 기반 대상 지정을 사용하여 실행된 경우 인스턴스 ID는 요약 메시지에 포함되지 않습니다.

status

String

명령의 상태입니다.

호출 기반 Amazon SNS 알림

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

필드 유형 설명

eventTime

String

이벤트가 시작된 시간입니다. Amazon SNS는 메시지의 배달 순서를 보장하지 않기 때문에 타임스탬프가 중요합니다. 예: 2016-04-26T13:15:30Z

documentName

String

이 명령을 실행하는 데 사용된 Systems Manager 문서(SSM 문서)의 이름입니다.

requestedDateTime

String

이 특정 노드로 요청을 보낸 날짜와 시간입니다.

commandId

String

명령을 전송한 후 Run Command에서 생성한 ID입니다.

instanceId

String

명령의 대상이 된 인스턴스입니다.

status

String

이 호출의 명령 상태입니다.

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

참고

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

태스크 1: Amazon SNS 주제 생성 및 구독

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

참고

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

주제를 생성한 후에는 엔드포인트를 지정하여 이를 구독합니다. 이메일 프로토콜을 선택한 경우에는 알림을 수신할 이메일 주소가 엔드포인트가 됩니다. 주제 구독 방법에 대한 자세한 내용은 Amazon Simple Notification Service 개발자 안내서Amazon SNS 주제 구독을 참조하세요.

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

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

태스크 2: Amazon SNS 알림을 위한 IAM 정책 생성

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

Amazon SNS 알림을 위한 사용자 정의 IAM 정책을 생성하려면
  1. https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

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

  3. JSON 탭을 선택합니다.

  4. 기본 내용을 다음으로 바꿉니다.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sns:Publish" ], "Resource": "arn:aws:sns:region:account-id:sns-topic-name" } ] }

    리전은 미국 동부(오하이오) 리전의 us-east-2 같이 AWS Systems Manager가 지원하는 AWS 리전의 식별자를 나타냅니다. 지원되는 리전 값 목록은 Amazon Web Services 일반 참조의 Systems Manager 서비스 엔드포인트에 있는 리전 열을 참조하세요.

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

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

  5. 다음: 태그를 선택합니다.

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

  7. 다음: 검토를 선택합니다.

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

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

  10. 정책 생성을 선택합니다.

태스크 3: Amazon SNS 알림을 위한 IAM 역할 생성

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

Amazon SNS 알림을 위한 IAM 서비스 역할을 생성하려면
  1. AWS Management Console에 로그인하여 https://console.aws.amazon.com/iam/ 에서 IAM 콘솔을 엽니다.

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

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

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

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

  6. (선택 사항) 권한 경계를 선택합니다. 이는 서비스 역할에서 가능한 고급 기능이며 서비스 링크된 역할은 아닙니다.

    권한 경계 섹션을 열고 최대 역할 권한을 관리하기 위한 권한 경계 사용을 선택합니다. IAM은 계정의 AWS관리형 또는 고객 관리형 정책 목록을 포함합니다. 권한 경계를 사용하기 위한 정책을 선택하거나 정책 생성을 선택하여 새 브라우저 탭을 열고 완전히 새로운 정책을 생성합니다. 자세한 내용은 IAM 사용자 설명서에서 IAM 정책 생성을 참조하세요. 정책을 생성하면 탭을 닫고 원래 탭으로 돌아와 권한 경계에 사용할 정책을 선택합니다.

  7. 다음을 선택합니다.

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

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

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

  11. (선택 사항) 태그를 키 값 페어로 연결하여 메타데이터를 사용자에게 추가합니다. IAM에서 태그 사용에 대한 자세한 내용을 알아보려면 IAM 사용 설명서IAM 리소스에 태그 지정을 참조하십시오.

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

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

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

작업 4: 사용자 액세스 구성

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

관리자 권한이 없는 엔터티의 경우 관리자가 IAM 엔터티에 다음 권한을 부여해야 합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::account-id:role/sns-role-name" } ] }

액세스 권한을 제공하려면 사용자, 그룹 또는 역할에 권한을 추가하세요:

  • AWS IAM Identity Center의 사용자 및 그룹:

    권한 세트를 생성합니다. AWS IAM Identity Center 사용 설명서권한 세트 생성의 지침을 따릅니다.

  • 보안 인증 공급자를 통해 IAM에서 관리되는 사용자:

    ID 페더레이션을 위한 역할을 생성합니다. IAM 사용 설명서서드 파티 자격 증명 공급자의 역할 만들기(페더레이션)의 지침을 따릅니다.

  • IAM 사용자:

    • 사용자가 맡을 수 있는 역할을 생성합니다. IAM 사용 설명서에서 IAM 사용자의 역할 생성의 지침을 따릅니다.

    • (권장되지 않음)정책을 사용자에게 직접 연결하거나 사용자를 사용자 그룹에 추가합니다. IAM 사용 설명서에서 사용자(콘솔)에 권한 추가의 지침을 따르십시오.

사용자 액세스를 구성하고 사용자 계정에 iam:PassRole 정책을 연결하려면
  1. IAM 탐색 창에서 [사용자(Users)]를 선택한 후 구성할 사용자 계정을 선택합니다.

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

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

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

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

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

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

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

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

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

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

작업 5: 유지 관리 기간 역할에 iam:PassRole 정책 연결

유지 관리 기간으로 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 설정을 참조하세요.

유지 관리 기간 작업을 위해 사용자 지정 서비스 역할을 생성한 경우 Maintenance Windows 설정의 내용을 참조하세요.

Maintenance Windows 역할에 iam:PassRole 정책을 연결하려면
  1. https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

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

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

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

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

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

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

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

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

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

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

  12. 정책 검토를 선택합니다.

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