다른 사람들은 이런 에러 없던데 아무튼 이런 에러가 났다.
IAM 유저에게는 AmazonS3FullAccess
와 AWSCodeDeployFullAccess
권한을 부여한 상태였다.
이 에러를 어떻게 해결할까?
CreateInvalidation
은 대체 뭐에 대한 권한일까?
지금 보니까 처음에 유저에 들어갈 필요 없이 Policies에서 바로 정책 추가하고 IAM에 연결만 하면 될 것 같은데 일단은 했던 거랑 또옥같이 적도록 하겠다. 혹시 모르니까.
입력창에서 바로 검색하면 빠르다.
역시 입력창에서 바로 검색하면 빠르다.
AWS 관련된 모든 작업이 그렇듯이, 개별적으로 진행하는게 베스트라고 안내해준다.
Next 눌러가면서 리뷰쯤 되면 이름과 설명 원하는 걸로 짓고 Create policy 하면 된다.
감동적이다...
https://docs.aws.amazon.com/ko_kr/AmazonCloudFront/latest/DeveloperGuide/Invalidation.html
Invalidation. 직역하면 무효화다. 대체 뭘 무효화 한다는 걸까.
찾아보니 CloudFront의 주요한 기능에 연관되어 있었다.
CloudFront는 전 세계 400개 이상의 엣지 로케이션 및 13개 이상의 중간 리전 캐시를 두고, 연결된 도메인에 대한 정보를 캐싱해서 전 세계의 사용자들에게 빠른 UX를 제공할 수 있다.
예를 들어, 한국에 있는 서버에 저어 지구 반대편 아르헨티나 사람이 접속한다고 하자.
라우터들은 바다아래 광케이블로 연결되어 있는 만큼 물리적으로 떨어져있으면 어쨌든 시간이 더 걸린다.
그러니 한국에서 한국 서버에 접속하는 것보다는 아르헨티나에서 한국 서버에 접속하는 속도가 훨씬 느릴 것이다.
하지만 우리가 아는 주요 해외 사이트들, 구글이나 넷플릭스 등을 이용할 때는 체감이 어려울 정도로 그냥 빨리 나온다.
어떻게 가능할까?
바로 전세계의 엣지에 사이트에 대한 정보를 미리 저장해놓는 것이다.
아르헨티나와 한국의 예를 계속 들자면, 아르헨티나 사람이 한국에 원본 서버가 있는 www.domain.com
으로 접속을 하면, 한국 서버까지 광케이블 여행을 하는 게 아니라 미리 캐싱해둔 데이터를 AWS 아르헨티나 엣지 로케이션에서 꺼내다 쓰게 된다.
간단하게 말해서 캐싱된 데이터를 무효화한다. CloudFront를 만든 순간 전 세계의 엣지에 데이터가 캐싱된다. CloudFront는 기본 설정 그대로라면 캐시된 데이터를 24시간동안 유지하고, 이 시간이 만료되면 원본 데이터를 갱신한다. Invalidation은 갱신시점(예: 24시간)까지 기다리지 않고 전 세계의 기존 캐시를 무효화 한 뒤, 데이터를 갱신한다는 의미였다.
일단 workflow에 invalidation을 실행하는 부분이 있고, 해당 IAM이 Invalidation에 대한 권한이 없어서 그런 건 맞는 것 같다.
근데 다른 블로그들은 이 권한 설정에 대한 언급이 없는데 도대체 어떻게 잘 됐는지.. 조금 궁금하다.
더 확실히 알게 되면 글을 업데이트 하기로..
너무 멋진글입니다