[AWS] CodePipeline의 SAM 애플리케이션을 사용한 CI/CD 환경 구축(후편)

AWS 서비스의 SAM 애플리케이션을 활용한 CI/CD 환경입니다(후편).
전편은 아래의 내용을 참조하시오.
[AWS] CodePipeline의 SAM 어플리케이션을 사용한 CI/CD 환경 구축(전편)
전편에는 기초 창고(CodeCommiit)와 구축 환경(CodeBuild)이 만들어졌다.
이번에 우리는 CodePipeline을 이용하여 이러한 서비스를 제공하여 자동적으로 건설하고 디버깅하는 환경을 창조할 것이다.

Push 이벤트 테스트


CodeCommiit의 Push 이벤트 탐지 방법은 여러 가지가 있습니다.
이번에는'아마존 클라우드 워치 이벤트'를 활용해 퍼시를 테스트하는 이벤트다.
밀어넣기 이벤트를 사용하여 파이핑 편집하기
알림을 위해서는 CodePipeline 권한이 필요합니다.
CodePipline의 역할을 만듭니다.
  AmazonCloudWatchEventRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: 2012-10-17
        Statement:
          -
            Effect: Allow
            Principal:
              Service:
                - events.amazonaws.com
            Action: sts:AssumeRole
      Path: /
      Policies:
        -
          PolicyName: cwe-pipeline-execution
          PolicyDocument:
            Version: 2012-10-17
            Statement:
              -
                Effect: Allow
                Action: codepipeline:StartPipelineExecution
                Resource: !Join [ '', [ 'arn:aws:codepipeline:', !Ref 'AWS::Region', ':', !Ref 'AWS::AccountId', ':', !Ref AppPipeline ] ] 

그리고 "PollForSourceChanges"를 진짜로 설정하면...
CodePipline은 CodeCommiit를 모니터링하고 변경 사항이 있으면 자동으로 파이프를 시작합니다.

CodePipeline 구축


· Source 무대에서 전편으로 제작된 CodeCommiit의 창고 지정
· Build 단계에서 전편에서 제작한 CodeBuild 프로젝트 지정
· 캐릭터 설정 전편에서 제작한'My CodePipeline Service Role'
  AppPipeline: 
    Type: AWS::CodePipeline::Pipeline 
    Properties: 
      Name: AppPipeline
      RoleArn: !GetAtt MyCodePipelineServiceRole.Arn
      ArtifactStore:
        Type: S3
        Location: app-pipeline-artifacts
      Stages: 
        - 
          Name: Source
          Actions: 
            - 
              Name: SourceAction
              ActionTypeId: 
                Category: Source 
                Owner: AWS 
                Version: 1 
                Provider: CodeCommit
              Configuration:
                RepositoryName: MyDemoRepo
                BranchName: master
                PollForSourceChanges: true
              OutputArtifacts:
                - Name: app-rtifact
        - 
          Name: Build
          Actions: 
            - 
              Name: BuildAction
              ActionTypeId: 
                Category: Build 
                Owner: AWS 
                Version: 1
                Provider: CodeBuild
              Configuration:
                ProjectName: myProjectName
              InputArtifacts:
                - Name: app-rtifact
이렇게 하면 파이프가 다 구축되었다!
지정된 CodeCommiit에 Push를 적용하면 파이프라인이 자동으로 실행됩니다.
SAM 프로젝트의 구축과 설계를 진행할 것입니다. 한번 시도해 보십시오.

AWS Chatbot 클라이언트 설정


Slack 알림을 위해 AWS Chatbot을 사용하려면 Slack에 대한 액세스 권한이 필요합니다.
여기는 CFn이 할 수 없는 것이기 때문에 AWS 콘솔부터 실시합니다.
AWS Chatbot의 콘솔을 엽니다.
채팅 클라이언트에서 "Slack"을 선택하고 "클라이언트 구성"버튼을 누릅니다.

다음 권한 요청 화면이 표시되면 액세스 권한이 부여됩니다.

여기에 지정된 Slack의 작업공간이 작성됩니다. 작업공간 ID
발매됐어요. 확인해 볼게요.나중에 CFn으로 이 ID를 지정합니다.

AWS Chatbot의 Slack 채널 설정


공지를 작성하는 데 필요한 역할은 AWS Chaatbot의 슬랙 채널을 설정하는 것입니다.
Slack Workspace Id에서 방금 만든 Slack의 작업공간 ID를 지정합니다.
SlackChannelId는 협력할 Slack 채널 ID를 지정합니다.
※ 슬랙의 채널 ID는 슬랙을 통해
채널 선택 - 마우스 오른쪽 버튼 클릭 - 링크 복사
를 참고하십시오.
  PipelineNotificationRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: 2012-10-17
        Statement:
          -
            Effect: Allow
            Principal:
              Service:
                - chatbot.amazonaws.com
            Action:
              - sts:AssumeRole
      ManagedPolicyArns:
        - arn:aws:iam::aws:policy/CloudWatchReadOnlyAccess

  AppPipelineNotificationForSlack:
    Type: AWS::Chatbot::SlackChannelConfiguration
    Properties:
      ConfigurationName: app-pipeline-notification-slack
      IamRoleArn: !GetAtt PipelineNotificationRole.Arn
      LoggingLevel: ERROR
      SlackChannelId: xxx
      SlackWorkspaceId: xxx

Codepipeline 공지 규칙 작성


알림은 객체의 카테고리(스테이지 및 파이핑 실행) 및
상태(성공, 실패, 취소 등)를 지정할 수 있습니다.
지정할 수 있는 ID 일람은 다음을 참조하십시오.
Events for notification rules on pipelines
이번에는 파이프가 실행하는 모든 상태 변경 통지를 받아들일 것을 지정합니다.
  PipelineNotificationRule:
    Type: AWS::CodeStarNotifications::NotificationRule
    Properties:
      Name: app-pipeline-notification-rule
      DetailType: FULL
      Resource: !Sub arn:aws:codepipeline:${AWS::Region}:${AWS::AccountId}:AppPipeline
      EventTypeIds:
        - codepipeline-pipeline-pipeline-execution-started
        - codepipeline-pipeline-pipeline-execution-succeeded
        - codepipeline-pipeline-pipeline-execution-failed
        - codepipeline-pipeline-pipeline-execution-canceled
        - codepipeline-pipeline-pipeline-execution-resumed
        - codepipeline-pipeline-pipeline-execution-superseded
      Targets:
        -
          TargetType: AWSChatbotSlack
          TargetAddress: !Ref AppPipelineNotificationForSlack
알림 설정이 완료되었습니다.
소스 코드를 CodeCommiit에 Push 연결하면 구축 또는 완료 가능
슬랙한테 알릴 것 같아서요.
Slack 알림을 E-mail 알림으로 변경하려면 SNS 화제 만들기
SNS 화제를 통해 알림을 설정하면 된다.
이상

좋은 웹페이지 즐겨찾기