CodePipeline 실행 결과를 AWS ChatBot에서 Slack에 알리는 Cloudformation
9934 단어 CloudFormationAWSChatbotAWS
그래서 CodePipeline의 실행 결과를 통지하는 ChatBot을 가능한 한 CloudFormation으로 구성하고 싶습니다.
작업 공간 설정
가능한 한 CloudFormation에서. 왜냐하면 첫 번째 작업 공간의 클라이언트 설정은 CloudFormation을 지원하지 않기 때문입니다.
Slack에의 액세스권의 허가 스텝등이 있으므로 여기는 어쩔 수 없네요.
ChatBot의 클라이언트 설정은 콘솔에서 수행합니다.
참고 : AWS Chatbot을 사용하여 Slack에서 AWS 개발자 도구 알림을 받는 방법
위 문서의 2단계에서 Slack 권한 요청을 허용하고 클라이언트를 설정하는 부분만 완료하면 나머지 작업은 CloudFormation에서 작성할 수 있습니다.
ChatBot 채널 설정
ChatBot 클라이언트는 Slack 작업 공간과 일대일 관계에 있습니다.
채널은 그 안에 알림을 게시하는 슬랙 채널과 일대일에 해당합니다.
Slack의 채널 ID와 ChatBot의 작업 공간 ID를 인수로 취하는 다음 CFn에서 ChatBot 채널을 구성합니다.
chatbot-channel.ymlParameters:
NotifySlackChannel:
Type: String
Description: Slack Channel ID
NotifyChatbotWorkspaceId:
Type: String
Description: Chatbot Workspace ID
Resources:
PipelineNotificationChatbotRole:
Type: AWS::IAM::Role
Properties:
RoleName: !Sub service-role-for-pipeline-notification-chatbot
AssumeRolePolicyDocument:
Version: 2012-10-17
Statement:
-
Effect: Allow
Principal:
Service:
- chatbot.amazonaws.com
Action:
- sts:AssumeRole
ManagedPolicyArns:
- arn:aws:iam::aws:policy/CloudWatchReadOnlyAccess
PipelineNotificationChatbot:
Type: AWS::Chatbot::SlackChannelConfiguration
Properties:
ConfigurationName: pipeline-notification-chatbot
IamRoleArn: !GetAtt PipelineNotificationChatbotRole.Arn
LoggingLevel: ERROR
SlackChannelId: !Ref NotifySlackChannel
SlackWorkspaceId: !Ref NotifyChatbotWorkspaceId
슬랙 채널 ID
채널 목록에서 해당 채널을 마우스 오른쪽 버튼으로 클릭하고 [기타 옵션] → [링크 복사]하여 편집기 등에 붙여넣은 URL 끝에 있는 문자열입니다.
https://example.slack.com/archives/${SlackChannelID} #<-ここ
작업 공간 ID
ChatBot의 작업 공간은 콘솔에서 ChatBot의 구성된 클라이언트를 열고 해당 작업 공간을 열어 확인할 수 있습니다.
CodePipeline 알림 만들기
DeveloperTools 관련 서비스의 통지를 작성하려면 CodeStartNotifications의 NotificationRule을 사용해 구축합니다.
참고 : CloudFormation - AWS::CodeStarNotifications::NotificationRule
빌드할 템플릿은 다음과 같습니다.
pipeline-notification-rule.ymlParameters:
PipelineName:
Type: String
Description: Target Pipeline Name
ChatBotArn:
Type: String
Description: AWS ChatBot ARN
Resources:
PipelineNotificationRule:
Type: AWS::CodeStarNotifications::NotificationRule
Properties:
Name: pipeline-notification-rule
DetailType: FULL
Resource: !Join [ '', [ 'arn:aws:codepipeline:', !Ref 'AWS::Region', ':', !Ref 'AWS::AccountId', ':', !Ref PipelineName ] ]
EventTypeIds:
- codepipeline-pipeline-pipeline-execution-succeeded
- codepipeline-pipeline-pipeline-execution-failed
- codepipeline-pipeline-pipeline-execution-canceled
Targets:
-
TargetType: AWSChatbotSlack
TargetAddress: !Ref ChatBotArn
EventTypeIds
통지할 이벤트 유형의 ID를 목록으로 지정합니다.
지원되는 ID 목록은 문서로 찾을 수 없지만 AWS CLI에서 검색할 수 있습니다.
aws codestar-notifications list-event-types --filters Name=SERVICE_NAME,Value=CodePipeline
위의 명령을 실행하면 CodePipeline에서 지원하는 이벤트 유형 목록을 얻을 수 있습니다.
{
"EventTypes": [
{
"EventTypeId": "codepipeline-pipeline-action-execution-succeeded",
"ServiceName": "CodePipeline",
"EventTypeName": "Action execution: Succeeded",
"ResourceType": "Pipeline"
},
{
"EventTypeId": "codepipeline-pipeline-action-execution-failed",
"ServiceName": "CodePipeline",
"EventTypeName": "Action execution: Failed",
"ResourceType": "Pipeline"
},
{
"EventTypeId": "codepipeline-pipeline-stage-execution-started",
"ServiceName": "CodePipeline",
"EventTypeName": "Stage execution: Started",
"ResourceType": "Pipeline"
},
...
]
}
이 중에서 알림을 받으려는 이벤트를 선택하고 EventTypeIds로 지정합니다.
TargetType
TargetType에서 지정할 수 있는 값은 현재 다음 두 가지와 같습니다.
목표
Value
Amazon SNS 주제
SNS
AWS Chatbot client
AWSChatbotSlack
지정 가능한 값 목록을 찾을 수 없습니다.
현재는 다음 URL 샘플에서만 확인하고 있습니다.
참고 : AWS User Guide - View Notification Rule Targets
실행
지금까지 CloudFormation을 배포하면 CodePipeline을 실행한 후 알림이 Slack에 도착하게 됩니다.
통지의 Lambda 코드등을 쓰지 않고 Pipeline 결과가 Slack에 통지되는 것은 드문군요!
Reference
이 문제에 관하여(CodePipeline 실행 결과를 AWS ChatBot에서 Slack에 알리는 Cloudformation), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kazuhiro1982/items/562509199a97d3035fc9
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
ChatBot 클라이언트는 Slack 작업 공간과 일대일 관계에 있습니다.
채널은 그 안에 알림을 게시하는 슬랙 채널과 일대일에 해당합니다.
Slack의 채널 ID와 ChatBot의 작업 공간 ID를 인수로 취하는 다음 CFn에서 ChatBot 채널을 구성합니다.
chatbot-channel.yml
Parameters:
NotifySlackChannel:
Type: String
Description: Slack Channel ID
NotifyChatbotWorkspaceId:
Type: String
Description: Chatbot Workspace ID
Resources:
PipelineNotificationChatbotRole:
Type: AWS::IAM::Role
Properties:
RoleName: !Sub service-role-for-pipeline-notification-chatbot
AssumeRolePolicyDocument:
Version: 2012-10-17
Statement:
-
Effect: Allow
Principal:
Service:
- chatbot.amazonaws.com
Action:
- sts:AssumeRole
ManagedPolicyArns:
- arn:aws:iam::aws:policy/CloudWatchReadOnlyAccess
PipelineNotificationChatbot:
Type: AWS::Chatbot::SlackChannelConfiguration
Properties:
ConfigurationName: pipeline-notification-chatbot
IamRoleArn: !GetAtt PipelineNotificationChatbotRole.Arn
LoggingLevel: ERROR
SlackChannelId: !Ref NotifySlackChannel
SlackWorkspaceId: !Ref NotifyChatbotWorkspaceId
슬랙 채널 ID
채널 목록에서 해당 채널을 마우스 오른쪽 버튼으로 클릭하고 [기타 옵션] → [링크 복사]하여 편집기 등에 붙여넣은 URL 끝에 있는 문자열입니다.
https://example.slack.com/archives/${SlackChannelID} #<-ここ
작업 공간 ID
ChatBot의 작업 공간은 콘솔에서 ChatBot의 구성된 클라이언트를 열고 해당 작업 공간을 열어 확인할 수 있습니다.
CodePipeline 알림 만들기
DeveloperTools 관련 서비스의 통지를 작성하려면 CodeStartNotifications의 NotificationRule을 사용해 구축합니다.
참고 : CloudFormation - AWS::CodeStarNotifications::NotificationRule
빌드할 템플릿은 다음과 같습니다.
pipeline-notification-rule.ymlParameters:
PipelineName:
Type: String
Description: Target Pipeline Name
ChatBotArn:
Type: String
Description: AWS ChatBot ARN
Resources:
PipelineNotificationRule:
Type: AWS::CodeStarNotifications::NotificationRule
Properties:
Name: pipeline-notification-rule
DetailType: FULL
Resource: !Join [ '', [ 'arn:aws:codepipeline:', !Ref 'AWS::Region', ':', !Ref 'AWS::AccountId', ':', !Ref PipelineName ] ]
EventTypeIds:
- codepipeline-pipeline-pipeline-execution-succeeded
- codepipeline-pipeline-pipeline-execution-failed
- codepipeline-pipeline-pipeline-execution-canceled
Targets:
-
TargetType: AWSChatbotSlack
TargetAddress: !Ref ChatBotArn
EventTypeIds
통지할 이벤트 유형의 ID를 목록으로 지정합니다.
지원되는 ID 목록은 문서로 찾을 수 없지만 AWS CLI에서 검색할 수 있습니다.
aws codestar-notifications list-event-types --filters Name=SERVICE_NAME,Value=CodePipeline
위의 명령을 실행하면 CodePipeline에서 지원하는 이벤트 유형 목록을 얻을 수 있습니다.
{
"EventTypes": [
{
"EventTypeId": "codepipeline-pipeline-action-execution-succeeded",
"ServiceName": "CodePipeline",
"EventTypeName": "Action execution: Succeeded",
"ResourceType": "Pipeline"
},
{
"EventTypeId": "codepipeline-pipeline-action-execution-failed",
"ServiceName": "CodePipeline",
"EventTypeName": "Action execution: Failed",
"ResourceType": "Pipeline"
},
{
"EventTypeId": "codepipeline-pipeline-stage-execution-started",
"ServiceName": "CodePipeline",
"EventTypeName": "Stage execution: Started",
"ResourceType": "Pipeline"
},
...
]
}
이 중에서 알림을 받으려는 이벤트를 선택하고 EventTypeIds로 지정합니다.
TargetType
TargetType에서 지정할 수 있는 값은 현재 다음 두 가지와 같습니다.
목표
Value
Amazon SNS 주제
SNS
AWS Chatbot client
AWSChatbotSlack
지정 가능한 값 목록을 찾을 수 없습니다.
현재는 다음 URL 샘플에서만 확인하고 있습니다.
참고 : AWS User Guide - View Notification Rule Targets
실행
지금까지 CloudFormation을 배포하면 CodePipeline을 실행한 후 알림이 Slack에 도착하게 됩니다.
통지의 Lambda 코드등을 쓰지 않고 Pipeline 결과가 Slack에 통지되는 것은 드문군요!
Reference
이 문제에 관하여(CodePipeline 실행 결과를 AWS ChatBot에서 Slack에 알리는 Cloudformation), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kazuhiro1982/items/562509199a97d3035fc9
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Parameters:
PipelineName:
Type: String
Description: Target Pipeline Name
ChatBotArn:
Type: String
Description: AWS ChatBot ARN
Resources:
PipelineNotificationRule:
Type: AWS::CodeStarNotifications::NotificationRule
Properties:
Name: pipeline-notification-rule
DetailType: FULL
Resource: !Join [ '', [ 'arn:aws:codepipeline:', !Ref 'AWS::Region', ':', !Ref 'AWS::AccountId', ':', !Ref PipelineName ] ]
EventTypeIds:
- codepipeline-pipeline-pipeline-execution-succeeded
- codepipeline-pipeline-pipeline-execution-failed
- codepipeline-pipeline-pipeline-execution-canceled
Targets:
-
TargetType: AWSChatbotSlack
TargetAddress: !Ref ChatBotArn
aws codestar-notifications list-event-types --filters Name=SERVICE_NAME,Value=CodePipeline
{
"EventTypes": [
{
"EventTypeId": "codepipeline-pipeline-action-execution-succeeded",
"ServiceName": "CodePipeline",
"EventTypeName": "Action execution: Succeeded",
"ResourceType": "Pipeline"
},
{
"EventTypeId": "codepipeline-pipeline-action-execution-failed",
"ServiceName": "CodePipeline",
"EventTypeName": "Action execution: Failed",
"ResourceType": "Pipeline"
},
{
"EventTypeId": "codepipeline-pipeline-stage-execution-started",
"ServiceName": "CodePipeline",
"EventTypeName": "Stage execution: Started",
"ResourceType": "Pipeline"
},
...
]
}
지금까지 CloudFormation을 배포하면 CodePipeline을 실행한 후 알림이 Slack에 도착하게 됩니다.
통지의 Lambda 코드등을 쓰지 않고 Pipeline 결과가 Slack에 통지되는 것은 드문군요!
Reference
이 문제에 관하여(CodePipeline 실행 결과를 AWS ChatBot에서 Slack에 알리는 Cloudformation), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kazuhiro1982/items/562509199a97d3035fc9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)