[aws] chatbot + slack 연동해, CodePipeline 알림 설정

2022. 5. 22. 23:31✅ STUDY/AWS

안녕하세요 :)

오늘은 AWS Chatbot을 사용하여, Slack의 채널에 CodePipeline 수행 결과 알림을 받을 수 있도록 설정해보겠습니다.

아래와 같이 제가 가지고있는 ‘K*****’ 워크스페이스의 ‘1_server’ 채널에 codepipeline 수행 결과 알람을 받을 수 있도록 설정하겠습니다!


최대한 쉽게 사진과 함께 가져왔으니 천천히 따라와주세요 :)


AWS Chatbot 이란 ❓

  • 채팅 채널에서 AWS 워크로드를 손쉽게 모니터링하고, 운영하고, 문제 해결할 수 있는 대화형 에이전트
  • AWS Chatbot을 사용하여 알림을 수신하고, 명령을 통해 진단 정보를 검색하고, AWS 리소스를 구성하고, 워크플로를 시작 가능
  • 클릭 몇 번만으로 안전하고 효율적으로 채팅 채널에서 AWS 알림을 수신하고 AWS 명령줄 인터페이스(CLI) 명령을 실행할 수 있음
  • AWS Chatbot은 AWS 서비스와 Slack 채널 또는 Amazon Chime 채팅룸 간의 통합과 보안 권한을 관리
  • AWS Chatbot을 활용하면 팀이 더 편리한 방식으로 최신 정보를 확인하고 협업을 수행하는 것은 물론, 인시던트, 보안 탐지 결과, AWS 환경에서 실행되는 애플리케이션에 대한 다른 알림에 신속하게 대응할 수 있음
  • 팀은 컨텍스트를 다른 AWS 관리 도구로 전환하지 않고도 AWS 리소스를 안전하게 구성하고, 인시던트를 해결하고, Slack 채널에서 작업을 실행하는 명령을 실행할 수 있음


AWS Chatbot - client 생성

1. AWS 콘솔에서 [AWS Chatbot] 서비스를 검색 후 클릭해주세요.


2. Slack > Configure client를 클릭해주세요.

AWS Chatbot에서 말하는 client란, Amazon Chime 이나 Slack의 workspace를 의미합니다.
사용하는 Slack Workspace를 등록해주는 설정을 하게 됩니다.


3. Slack과 연동할 것이므로, Slack 체크 후 Configure을 클릭해주세요.



4. slack을 체크 후, configure을 누르면 자동으로 어떤 워크스페이스와 연동할건지 slack으로 리다이렉트 됩니다.
연동할 워크스페이스 이름을 입력하고, '계속'을 누릅니다.

 

5. 연동하고자 하는 워크스페이스에 액세스하기 위해 AWS Chatbot에게 권한을 허용을 해줍니다.

6. 권한 허용까지 모두 설정을 완료하면, Chatbot 콘솔에 해당 워크스페이스 client를 확인하실 수 있습니다.


7. 알림을 받고자하는 Slack Channel의 채팅방에 '/invite @aws'를 입력하여, aws 앱을 추가해주세요.


AWS Chatbot - Channel 생성

Slack Channel이란, Slack 워크스페이스 내부 채널을 의미합니다.
AWS Chatbot에 연동된 워크스페이스를 클릭해, 알림을 실제로 전송할 워크스페이스 내부 채널도 연동해봅시다!

1. AWS Chatbot 콘솔의 Configured clients에서 연동할 워크스페이스를 선택합니다.
아래와 같은 화면이 되었다면, Configure new channel을 클릭합니다.


2. chatbot에서 확인할 channel 이름을 입력해주고, 알림을 받을 channel을 선택해서 아래와 같이 설정해줍니다.


3. AWS Chatbot이 사용할 IAM role을 생성합니다. 알림용으로 사용할 것이므로, Notification permissions 정책만 등록해줍니다.


4. Channel guardrail policy을 설정해줍니다.
Channel guardrail policy는 채널 멤버가 수행할 수 있는 작업을 세부적으로 제어합니다. 이러한 가드 레일 정책은 런타임 시 채널 IAM 역할과 사용자 역할 모두에 적용됩니다. 채널 멤버에게 허용되는 것은 역할 권한 및 가드 레일 정책의 공통 부분입니다.

AWS Chatbot을 이용하여, CodePipeline Alarm을 SNS를 통해 전달할 것이므로, SNS Full Access 권한을 부여합니다.
아래와 같이 SNS:* 권한을 부여하면, 위에서 생성한 IAM Role에 SNS:* 정책이 자동 등록 됩니다.

Notifications - optional의 SNS topics는 설정하지 않으셔도 됩니다.
추후, CodePipeline의 notification rule을 생성하면 자동으로 SNS Topic이 생기고 채널에 부착됩니다.


AWS CodePipeline - notification rule 생성

notification rule 이란 ❓

  • 개발자 도구 콘솔의 알림 기능은 AWS CodeBuild, AWS CodeCommit, AWS CodeDeploy 및 AWS CodePipeline의 이벤트를 구독하기 위한 알림 관리자
  • 자체 API인 AWS CodeStar 알림 기능을 사용하여 작업에 가장 중요한 리포지토리, 빌드 프로젝트, 배포 애플리케이션 및 파이프라인의 이벤트에 대해 사용자에게 빠르게 알릴 수 있음
  • 알림 관리자는 사용자가 리포지토리, 빌드, 배포 또는 파이프라인에서 발생하는 이벤트를 인식하도록 하여 변경 승인 또는 오류 수정과 같은 조치를 신속하게 취할 수 있도록 함

notification 종류 ❓

알림 기능을 사용하여 알림 규칙을 만들고 관리하여 사용자에게 다음을 포함한 리소스에 대한 중요한 변경 사항을 알릴 수 있습니다.

  • CodeBuild 빌드 프로젝트에서 빌드 성공 및 실패
  • CodeDeploy 애플리케이션의 배포 성공 및 실패
  • CodeCommit 리포지토리에서 코드에 대한 주석을 포함하여 pull 요청의 생성 및 업데이트
  • CodePipeline에서 수동 승인 상태 및 파이프라인 실행

위 알람을 Amazon SNS 주제를 구독하는 사용자 이메일 주소로 전송시키거나, AWS Chatbot 과 통합해 Slack 채널 또는 Amazon Chime 채팅방에 알림을 전달하도록 할 수도 있습니다.

notification 작동 원리

notification rule을 생성하면 리포지토리, 빌드 프로젝트, 애플리케이션, 파이프라인과 같은 지원되는 리소스에 대한 알림 규칙을 설정하면 알림 기능은 지정된 이벤트를 모니터링하는 AmazonEventBridge 규칙을 생성합니다. 이벤트 유형이 발생하면 알림 규칙은 해당 규칙의 대상으로 지정된 AmazonSNS 주제에 알림을 보냅니다. 이러한 대상의 구독자는 이러한 이벤트에 대한 알림을 받습니다.

이제 notification rule을 생성하러 가봅시다!

1. 아래와 같이 알림을 받고자하는 CodePipeline에서 오른쪽 상단의 'Create notification rule'을 클릭해주세요.


2. notification rule의 이름 입력하고, detail type을 선택합니다. 마지막으로 어떤 Event가 발생했을 때 알림을 받을 것인지 선택해줍니다.

detail type이란, 알림에 포함된 상세 수준을 의미합니다.
Full(기본값)에는 특정 이벤트의 서비스에서 제공하는 확장 정보를 포함하여 알림의 이벤트에서 사용할 수 있는 모든 정보가 포함되고, Basic 설정에는 사용 가능한 정보만 간단히 포함됩니다.

자세한 차이는 docs를 참고해주세요. (https://docs.aws.amazon.com/dtconsole/latest/userguide/concepts.html#detail-type)


Events that trigger notifications란, 어떤 Event가 발생했을 때 알림을 받을 것인지에 대한 설정입니다.
저의 경우, Action 기준으로 실패하거나 파이프라인이 시작하거나 성공했을 때 알림을 받고자 설정하였습니다.


Target이란, 해당 Event가 발생했을 때 어떤 대상으로 알림을 보낼 것인지에 대한 설정입니다.
AWS SNS Topic 또는 AWS Chatbot을 선택할 수 있습니다.

AWS Chatbot을 선택하여, 이전에 연동한 channel을 선택하고, 'Submit'을 클릭합니다!


notification rule을 모두 생성하고나면, AWS Chatbot - channel에도 자동으로 SNS Topic이 등록된 것을 확인할 수 있습니다.


결과 화면

AWS CodePipeline의 Notification 설정에 따라, 파이프라인이 시작하고 성공적으로 마쳤을 때 Slack Channel로 아래와 같이 알람이 오는 것을 확인할 수 있습니다🎈

 


참고) https://aws.amazon.com/ko/chatbot/

 

AWS Chatbot – Amazon Web Services

AWS Chatbot은 채팅 채널에서 AWS 워크로드를 손쉽게 모니터링하고, 운영하고, 문제 해결할 수 있는 대화형 에이전트입니다. AWS Chatbot을 사용하여 알림을 수신하고, 명령을 통해 진단 정보를 검색하

aws.amazon.com

https://docs.aws.amazon.com/dtconsole/latest/userguide/welcome.html

 

What are notifications? - Developer Tools console

What are notifications? The notifications feature in the Developer Tools console is a notifications manager for subscribing to events in AWS CodeBuild, AWS CodeCommit, AWS CodeDeploy and AWS CodePipeline. It has its own API, AWS CodeStar Notifications. You

docs.aws.amazon.com

https://docs.aws.amazon.com/dtconsole/latest/userguide/notifications-chatbot.html

 

Configure integration between notifications and AWS Chatbot - Developer Tools console

You can configure more than one notification rule to use the same Amazon SNS topic as its target. This can help you consolidate messaging, but can have unintended consequences if the subscription list is intended for one notification rule or resource.

docs.aws.amazon.com