# travis-ci에서 Amazon S3로 파일 배포

3427 단어 S3TravisCI

배경, 목적



Amazon S3는 클라우드 슬레이지로서 뿐만이 아니라, 정적인 WEB 컨텐츠의 전달원으로서도 이용할 수 있다. Amazon S3에 파일을 업로드하는 툴은 다수 있지만, 컨텐츠의 버전 관리로서 Github를 이용하고 있는 경우, 파일 배치와 버전의 연결을 할 필요성이 생길 수 있다. 이번에는 CI 서비스 travis-ci을 이용하여 이를 실현한다.
|source| -> |github| -> |travis-ci| -> |S3|

절차


  • AWS에 배포 계정 만들기
  • S3에서 버킷 만들기, 권한 편집
  • travis.yml 설정

  • 배포용 계정 만들기



    travis-ci의 배포는 전용 사용자를 만들고 해당 사용자 계정을 사용하여 travis-ci가 AWS API를 두드린다. 먼저 AWS 콘솔 IAM 에서 그룹을 만듭니다. 사용 권한을 설정하여 S3에 파일을 업로드할 수 있습니다. 사실은 세세하게 설정해야 할 것이지만, 이번은 AmazonS3FullAccess로 했다.

    다음으로 사용자를 만듭니다. 적당한 이름으로 유저를 만들면 「인증 정보의 다운로드」로부터, 액세스 키가 쓰여진 CSV를 다운로드하는 것. 이것을 잊으면 다시 사용자를 다시 만들게 된다. 유저를 만들면 방금 만든 그룹의 멤버로 한다.



    S3에 버킷 만들기



    정적 WEB 컨텐츠를 전달해, DNS로 이름 해결할 때는 버킷명을 FQDN으로 하는 것이 좋다. 버킷을 만들면 속성에서 "정적 웹 사이트 호스팅"을 활성화합니다. 또한, 액세스 허가로부터 「인증된 유저」의 「업로드/삭제」에 체크를 넣는다. 이제 배포할 수 있습니다.

    배포된 콘텐츠를 얻고 실행할 수 있도록 하려면 별도의 버킷 정책을 편집해야 합니다. AWS Policy Generator 로부터 다음과 같이 설정을 하는 것으로 모든 사람에게 공개된 컨텐츠로 할 수 있다.
  • Select Type of Policy : S3 Bucket Policy
  • Principal : *
  • AWS Service : Amazon S3
  • Actions : GetObjet
  • ARN : arn:aws:s3:::/*



  • travis.yml 만들기



    리포지토리의 루트 디렉토리에 travis.yml를 만듭니다.
    language: bash
    script: echo "do nothing"
    deploy:
      provider: s3
      bucket: bucket_name
      access_key_id: "YOUR AWS ACCESS KEY"
      endpoint: s3-ap-northeast-1.amazonaws.com
      region: ap-northeast-1
      on:
        branches: master
    

    버킷명이나 리전, 브랜치 등은 적절히 읽어들일 것. 자세한 내용은 참조을 보는 것이 좋습니다. 마지막으로 비밀 키를 암호화하여 삽입합니다. 사전에 travis.rb 을 넣어 둔다.
    travis encrypt --add deploy.secret_access_key
    

    표준 입력에 비밀 키를 붙여넣습니다. 그리고는, master 브랜치에 push 하면 S3에 파일이 전개되는 것을 확인한다.

    좋은 웹페이지 즐겨찾기