참고사항
S3 - CloudFront - Routes53 환경입니다. AWS 배포 환경 설정은 자세히 다루지 않습니다.
아래는 이번 github action 에러를 처리하고 yml 파일 최종 코드입니다.
name: build and deploy
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Install dependencies
run: npm install
- name: Build project
run: npm run s-build
- 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: ap-northeast-2
- name: Deploy project
run: aws s3 sync ./out s3://lol-champ-cancorp
- name: CloudFront Invalidation
env:
CLOUD_FRONT_ID: ${{ secrets.AWS_CLOUDFRONT_ID}}
run: aws cloudfront create-invalidation --distribution-id $CLOUD_FRONT_ID --paths "/*"
마주한 Error
빌드 시 린트 오류
중간에 프로젝트를 옮기면서 린트가 꺼진 상태로 작업한 적이 있었는데, 그 스노우볼이 여기까지 굴러왔습니다.
린트 에러를 모두 잡는 수밖에 없습니다.
배포 실행문 오류 (프로필 설정): The config profile [profile] could not be found
아차차. aws CLI 명령어를 그대로 붙여넣었습니다.
로컬에서 배포하는 것이 아니기 때문에 프로필 설정 명령어는 지워줍니다. (—profile=yun_can)
배포 실행문 오류 (aws_region 설정): <botocore.awsrequest.AWSRequest object at 0x7fb140ffb010>
aws-region 설정을 빠뜨렸습니다. aws-region 구문을 추가합니다.
배포 실행문 오류 (공포의 AWS AccessDenied): fatal error: An error occurred (AccessDenied) when calling the ListObjectsV2 operation: Access Denied
1. AWS 권한 설정과 관련된 문제(AccessDenied) → AWS S3 의 버킷 정책과 IAM 의 권한 정책을 파고들었습니다.
참고: S3 동기화를 사용하여 ListObjectSv2에 대한 액세스 거부됨 오류 해결
S3 동기화를 사용하여 ListObjectSv2에 대한 액세스 거부됨 오류 해결
aws s3 동기화 명령을 실행하여 Amazon Simple Storage Service(S3) 버킷으로 또는 버킷에서 객체를 복사하고 있어요. 하지만 ListObjectsV2 작업을 호출하면 액세스 거부됨 오류가 발생해요. 이 문제를 어떻게
repost.aws
2. 역시나, AWS 의 공식 문서에서 관련된 정보를 획득했습니다. “IAM 정책과 버킷 정책 모두에서 s3:ListBucket에 대한 권한이 있어야 합니다.”
3. S3 의 버킷정책에 listBucket 추가
{
"Sid": "3",
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:ListBucket"
],
"Resource": "arn:aws:s3:::bucket-name"
}
저는 위처럼 작성해서 statement 를 추가해줬습니다.
아래처럼 작성하면 정책 편집기가 에러를 뱉습니다. 리소스는 버킷까지만 설정해주세요.
// Error
"Resource": "arn:aws:s3:::bucket-name/*"
참고: S3 Access Denied when calling ListObjectsV2 error [Solved] | bobbyhadz
S3 Access Denied when calling ListObjectsV2 error [Solved] | bobbyhadz
To solve the "(AccessDenied) when calling the ListObjectsV2 operation" error attach a policy that allows the `ListBucket` action on the bucket.
bobbyhadz.com
참고: AccessDenied for ListObjects for S3 bucket when permissions are s3:*
AccessDenied for ListObjects for S3 bucket when permissions are s3:*
I am getting: An error occurred (AccessDenied) when calling the ListObjects operation: Access Denied When I try to get folder from my S3 bucket. Using this command: aws s3 cp s3://bucket-n...
stackoverflow.com
4. IAM 권한 정책을 설정합니다. (저는 기존에 사용하던 사용자가 있었기에 이미 권한이 부여되어있는 상태였습니다.)
5. 해치웠나?
하라는대로 분명 했는데 왜 안되지…? 이 에러 잡으려고 하루동안 문서, 블로그 다 뒤져보고 이것저것 다 적용시켜 보며 정신이 바사삭…
6. 마음을 비웠습니다. 좋아, 초심으로 돌아간단 마인드. IAM 사용자 부터 새로 추가하기로 마음먹었습니다. 차근차근.
7. IAM 사용자를 생성하고… 그러던 중 마주한 ACCESS KEY 사용사례 설정 화면…
8. ???!!!
기존 사용자는 첫번째 사례, CLI 상태인 사용자였다는 것이 기억났습니다… 등골이 오싹했습니다.
동시에 느껴지는 모든것의 원인이 이것이었다는 기대감.
9. 액세스 키를 다섯번 째 사례, “AWS 외부에서 실행되는 애플리케이션” 으로 체크하고 생성해 봅니다…
10. 자… 새로 생성된 키로 GitHub action 의 secret 재설정… 그리고 배포… 간장되는 순간
...
11. 코드의 신이시여 감사합니다…!
12. 소리라도 지를 뻔 했으나…화… 하는 탄식과 함께 기쁨을 만끽했습니다… 약간의 허무함은 덤. (난 공공매너를 아는 어엿한 한명의 사회인… 인간의 존엄성을 지켰다.)
13.배포에 성공한 것을 확인하고 위에서 설정한 S3 listBucket 정책을 삭제해도 이상없이 잘 되더군요. 저의 경우엔 이미 기존 정책설정에서 허용이 되는 권한을 부여한 상태였습니다. 불필요한 정책은 다시 삭제해줬습니다. 긴 글 여기까지 읽어주셔서 감사합니다. 저와 같은 에러를 겪으시는 분들에게 조금이나마 도움이 됐으면 좋겠네요. 오늘도 맘 편히 행ㅂ…
CloudFront Invalidation Error
14. 여기부턴 CloudFront 를 적용한 후의 상황입니다. 혹여나 CloudFront와 함께 사용하시는 분들이 있다면 invalidation 명령문을 실행할 수도 있을텐데요.
15. —paths 를 /* 로 입력하니 페이지가 XML 오류를 뱉더군요… 그래서 무효화 태그 정보를 확인했습니다.
? 왜 와일드카드(/*)가 안들어가고…
16. 그래서 아래처럼 적어줬더니 잘 적용됩니다. 페이지도 정상적으로 나오고… 휴…
그 이후에도 몇번 테스트를 해봤는데, 처음처럼 /* 로 작성해줘도 잘 되더군요… 배포 설정 과정과 엮여서 발생한 문제일 수도 있겠다는 생각이 들었습니다. (에러 처리중에 페이지를 주기적으로 확인하지 않아서 불확실하네요.) 위 방법은 참고만 해주시면 좋을 것 같아요.
그럼 진짜로 감사합니다… 마음 편히 행복한 하루 보내세요.(꾸벅)
'Development' 카테고리의 다른 글
API 호출 에러와 비동기 (0) | 2023.01.25 |
---|---|
리액트 폴더 구조(Architecture) (0) | 2023.01.08 |
Chart.js 사용하기 (0) | 2022.12.19 |
도서 정리 프로젝트(4) (0) | 2022.06.26 |
도서 정리 프로젝트(3) (0) | 2022.06.13 |