[AWS] codecommit에 push되면 s3에 정적 콘텐츠를 출시하는 환경을 만들자.

설명



AWS에서 CI/CD 환경을 한 번 만들고 싶었기 때문에 만들어 보았습니다.
이러한 기사는 썩을 정도이지만, 자신의 메모를 위해 기사로 정리합니다.

개요



aws의 서비스 "CodeCommit"과 "CodeBuild"를 사용합니다. CodeCommit 및 CodeBuild와 같은 자세한 설명은 생략하지만 CodeCommit은 소스 제어 서비스(git 사용)이고 CodeBuild는 빌드 서비스(테스트 및 빌드 자동화)입니다.

이번에는 CodeCommit에 자원이 push되면 CodeBuild가 움직여 s3에 자원이 릴리스되는 곳(파생으로 CloudFront에서 캐시시키는 곳)까지 작성해 보겠습니다.

준비



CodeCommit의 리포지토리 생성



※작성 순서는 할애. 리포지토리를 만든 다음 로컬로 clone (iam의 codecommit 키를 만드는 것을 잊지 마십시오.)까지합니다.


적절한 html과 buildspec.yml도 커밋 해 둡니다. (나중에 CodeBuild라는 서비스에서 사용합니다)

test.html
<!DOCTYPE html>
<html lang=“ja”>
  <head>
    <meta charset=“UTF-8” />
    <title>test page</title>
  </head>
  <body>
    <h1>ci/cdのテストページです</h1>
  </body>
</html>


버킷 이름은 다음으로 만드는 s3 버킷(test-bucket-20201218)과 정렬해 둡니다.

buildspec.yml
version: 0.1

phases:
  build:
    commands:
      - aws s3 sync --delete src s3://test-bucket-20201218


정적 콘텐츠 저장 s3 만들기



정적 콘텐츠를 저장하고 호스팅하는 S3 버킷을 만듭니다.


CodeBuild 만들기



여기에서 조금 정중하게 씁니다.
빌드 프로젝트 만들기를 누릅니다.


소스 프로바이더는 CodeCommit로 하고, 리포지터리를 입력하면 브랜치를 입력할 수 있는 란이 나타납니다. (이번에는 마스터로 둡니다.)


환경은 linux를 선택합니다.


런타임 다른 설정입니다.


역할 이름은 기본적으로 설정된 것을 사용했습니다.

게다가 이번에는 buildspec.yml을 리포지토리의 루트 디렉토리 바로 아래에 두기 때문에 여기는 쓰지 않습니다.



다음은 아티팩트를 S3로 지정합니다.


여기까지 CodeBuild는 만들 수 있었습니다만, S3에 업로드할 권한이 없기 때문에 부여해 봅시다.
이번에는 S3에 FullAccess를 연결합니다.


CodePipilene 만들기



그리고 CodePipiline을 설정합시다.
CodeCommit에 push를 트리거로 CodeBuild가 동작하는 설정을 해줍니다.

파이프라인 만들기를 누릅니다.



파이프라인 이름, 역할을 설정합니다.



다음은 소스의 프로바이더등의 설정. 다음과 같이 설정합니다.



빌드 스테이지에는 방금 만든 codebuild의 프로젝트를 지정합니다.



배포 단계는 특별히 설정하지 않습니다.
buildspec.yml에서 s3에 put하는 것을 쓰고 있기 때문입니다.



이것으로 cpdepipeline이 완성되었습니다!


시도에 0byte 텍스트 파일을 git push 해 보았습니다. 제대로 s3이 업데이트되었습니다.



여러 번 실패했지만 buildspec.yml에aws s3 sync --delete src s3://test-bucket-20201218

라고 쓰는데 리포지토리에 src 폴더를 준비하지 않았기 때문입니다.


일단 이것으로 git의 push를 계기로 S3에 업로드할 수 있게 되었습니다! ! 치타

cloudfront 설정



다음에 돌립니다.

codedeploy도 사용해보고 싶다 ... 그리고 cloudformation도.

좋은 웹페이지 즐겨찾기