AWS S3 연동하기
AWS S3는 파일 서버 역할을 한다. github action에서 빌드한 결과를 저장해 놓는 기능을 할 예정이며 flow는 다음과 같다.
AWS는 외부 서비스의 접근을 기본적으로 허용하지 않는다. 따라서 IAM(Identify & Access Management)를 사용하여 접근 권한을 획득해야 한다.
IAM 설정
AWS IAM에서 사용자 그룹에서 ‘사용자 추가’를 한다. 여기서 사용자란 AWS 외부에서 접속할 수 있는 권한을 줄 대상을 말한다.
해당 페이지에서 ‘AmazonS3FullAccess’, ‘AWSCodeDepolyFullAccess’ 두 가지 요소를 활성화 시킨다.
그러면 해당 권한을 가진 사용자가 생성되고 ACCESSKEY와 SECRETKEY가 발급이 된다.
권한 설정을 했으니 이제 실제로 S3에서 저장될 버킷을 생성한다.
S3 Bucket 설정
S3에서 ‘버킷 만들기’를 한다. 3단계 권한 설정에서 모든 퍼블릭 액세스 차단 이외에는 디폴트 옵션을 사용하였다.
github 설정
이제 github repository에서 해당 키 값들을 세팅한다. action에 키 값을 그대로 노출하는 것은 보안상 문제가 되므로 repository의 ‘Settings -> Secret’에서 해당 키 값을 등록해준다.
workflow에 S3로 파일을 옮기기
name: Deploy to Amazon EC2
on:
push:
branches: [ "main" ]
# pull_request:
# branches: [ "feature" ]
env:
AWS_REGION: ap-northeast-2 (지역명!)
S3_BUCKET_NAME: s3 버킷 이름
ZIP_NAME: zip -r ./프로젝트명.zip .
APPLICATION: ./src/main/resources/application.yml
# AWS 인증 (IAM 사용자 Access Key, Secret Key 활용)
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ env.AWS_REGION }}
# 빌드 결과물을 S3 버킷에 업로드
- name: Upload to AWS S3
run: |
aws deploy push \\
--application-name ${{ env.CODE_DEPLOY_APPLICATION_NAME }} \\
--ignore-hidden-files \\
--s3-location s3://$S3_BUCKET_NAME/$GITHUB_SHA.zip \\
--source .
이렇게 맨 위쪽과 아래쪽에 입력을 해주면 됩니다!
실패할 경우 에러코드를 보면서 이름이나 깃허브 설정에서 키를 입력하지 않았거나 다른 지는 확인하면 됩니다!
AWS인증 부터는 코드의 변경은 비추합니다.. 후에 codedeploy를 실행할 때, 작동이 하지 않을 수도 있습니다.!
secrets -> 깃허브 설정에 있는 키를 가져옵니다.
env -> 상단에 있는 부분을 활용합니다.(본인이 설정한 키를 입력하기!)
'개발 > sw' 카테고리의 다른 글
인스턴스IP 도메인 연결 (0) | 2023.03.31 |
---|---|
Codedeploy SQL 오류 (0) | 2023.03.30 |
CodeDeploy (0) | 2023.03.30 |
CI/CD 구축 github action (3) (0) | 2023.03.28 |
CI/CD 구축 github action (1) (0) | 2023.03.28 |