Intro
AWS에는 지역을 구분하는 Region개념이 있습니다. 이 Region은 27개로 구분되어있으며 seoul, tokyo, verginia, california, ohio, oregon, jakarata 등등 이 있습니다.(https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html)
이 Region에는 aws에서 정의한 Region 명이 있는데, ap-northeast-1, ap-northeast-2, us-east-1 으로 표기합니다. AWS서비스는 모두 Region에 따라 구분되어 지며 Region에 따라 요금도 조금씩 다르죠. 오늘은 이 Region설정 이야기를 좀 해볼까 합니다.
AWS CLI를 사용할때 Region설정
aws cli를 사용할때 예를들어 aws s3 ls
와 같은 간단한 명령어를 사용할때 이 s3는 어떤 region의 s3를 가져오게 되는걸까요?
정답부터 말씀드리면 현재 EC2가 생성되어있는 region이 Default region으로 설정되어 만약 EC2가 ap-northeast-2(서울리전)에 있다면 서울리전의 s3 리스트를 가져오게 됩니다.
현재 내 EC2가 어떤 region에 생성되어있는지 확인해보려면 다음 명령어로 확인할 수 있습니다.
curl http://169.254.169.254/latest/dynamic/instance-identity/document
특정 region을 지정할 수도 있는데요. aws cli를 사용할때 region을 설정하는 방법으로는 3가지가 있습니다.
첫째, aws configure
명령을 통해 default region을 설정한다. aws configure 를 통해 아래와 같이 default region name을 입력할 수 있습니다. 이렇게 되면 내 ec2가 어떤 region에 있건 상관없이 aws cli를 사용할때 항상 이 default region의 서비스를 호출하게 됩니다.
둘째, aws cli 명령어 옵션을 사용할 수 있습니다. aws cli 옵션중에 --region
이 있는데요. 만약 버지니아에 있는 s3의 목록을 가져오고 싶다라고 하면 aws s3 ls --region=us-east-1
이렇게 수행하면됩니다. 이렇게 하면 내 ec2가 어떤 region에 있건 상관없이 옵션값으로 설정한 region에 aws cli명령을 수행합니다.
셋째, 환경변수를 이용합니다. aws cli는 시스템 환경변수를 읽어오는데 그중 하나가 AWS_DEFAULT_REGION
입니다. 만약 서울리전을 default region으로 설정하고 싶다면 AWS_DEFAULT_REGION=ap-northeast-2
와 같이 설정하면 됩니다.
VPC Endpoint를 사용할경우 aws cli 리전은??
사실 오늘 최종적으로 이야기 하고싶었던 부분인데요. 만약 vpc endpoint를 사용했을 경우 위에서 설명드린 특정 리전을 설정하지 않았다면 어떻게 될까요? s3 vpc endpoint를 (gateway용도) 생성 하고 aws s3 ls
명령을 수행하면 네트워크 timeout이 발생합니다.
처음에 이 timeout이 s3 vpc endpont의 설정 문제나 vpc route table 문제 인줄 알았으나, 몇번을 찾아봐도 네트워크 설정에는 어떤 이슈도 없었습니다. 결국은 사내 보안 솔루션에 이슈가 있는 줄 알고 괜한 보안담당자만 괴롭히게 되었습니다.
문제는 aws default region 설정 이었습니다. vpc endpoint를 사용할경우 ec2가 어떤 region에 떠있는지와는 상관없이 위에서 설명드린 3가지 방법으로 default region이 설정되어 있지 않다면 us-east-1의 vpc endpoint로 통신을 시도 합니다. 하지만 우리는 서울리전에 vpc endpoint를 생성하였기 때문에 없는 리소스에 통신을 시도하기 때문에 timeout이 발생하게되는 것입니다.
따라서 vpc endpoint를 사용할 경우 반드시 ec2에 default region을 설정하여 사용하시기 바랍니다.
'IT > AWS' 카테고리의 다른 글
[AWS] EKS 트러블 슈팅 (aws-auth 권한 추가 이슈) (0) | 2023.02.09 |
---|---|
[AWS] Cluster Autoscaler의 주요 옵션들(CA deep dive) (0) | 2022.10.07 |
[FinOps] 오픈소스 Bill bot 사용기 (슬랙으로 AWS비용 레포트 받는법) (0) | 2022.09.16 |
[AWS] IRSA 란? (IAM Roles for Service Accounts) (0) | 2022.09.09 |
[AWS] EKS내부 pod가 Node의 IAM Role 권한 가져오지 못하는 이슈 (feat.IMDSv2) (1) | 2022.07.20 |