ECS Task를 고정된 IP로 실행하기

Today I Learned 날짜 2024년 12월 6일 금요일 내용 ECS Task의 IP 고정하기 네이버 커머스 솔루션에서 앱을 등록할 때, IP를 등록해야 한다. 네이버 쪽 API를 사용할때는 등록된 API만 사용해야 한다. 네이버쪽에서 허용되지 않은 IP로 요청이 왔었고, 이게 지속되면 막아버린다고 한다. 곰곰히 생각해봤을 때, 네이버 API에 접근하는 곳은 3가지이다. 서버, 크론 작업이 돌아가는 ECS Task, 서버의 데이터베이스 마이그레이션이나 커맨드를 돌릴 떄 사용하는 EC2다. 서버는 진작에 등록해줬기 떄문에 문제가 없고, EC2는 이참에 등록해줬다. 그런데 네이버쪽에서 보내준 IP는 EC2 것과는 달랐다. 인스턴스를 바꾸거나 한 일이 없으니 IP도 바뀌지 않았기 떄문에.. 아마 ECS Task의 IP였나보다. 그렇다면 크론작업이 돌아갈 때만 생성되는 Task의 IP가 무엇일 줄 알고 미리 네이버에 등록할 수 있을까.. ...

2024년 12월 6일 · 1 분 · 배준수

ECS 컨테이너가 아무 이유없이 종료될 때

Today I Learned 날짜 2024년 9월 13일 금요일 내용 ECS 컨테이너가 종료되는 이유 ECS 테스크가 자꾸 종료된다. 내부 로직에선 전혀 이상하지 않은데… 몇일 전에 해결된줄 알았더니 작동하고 안하고가 반복된다. 물론 안하는 경우가 훨씬 많지만.. 내부 코드에는 문제가 없다고 판단해서 AWS를 열심히 찾아봤다. ECS에서 컨테이너가 작동해 태스크가 추가되면, 그 태스크의 IP가 로드밸런서가 향하는 대상그룹에 등록된다. 그리고 그 컨테이너가 제대로 통신할 수 있는지 확인하게 된다. 여기서 방금 실행된 컨테이너 IP가 Target is in an Availability Zone that is not enabled for the load balancer ...

2024년 9월 13일 · 1 분 · 배준수

boto3로 ECS Task 호출하기

Today I Learned 날짜 2024년 8월 5일 월요일 내용 ECS 태스크 호출하기 아무리 생각해도 서버 외부에서 호출해야 했다. 람다는 15분 제한 시간에 넘치고, 서버에서 돌리기엔 처음 네이버에 호출하는 순간 CPU 사용률이 80%에 달한다! 다행히 boto3로 ECS Task를 호출하는 방법이 있어 적용했다. 태스크를 직접 요청시에 적용할 수 도 있지만, 미리 정의해놓고 호출해서 원하는 로직만 처리하도록 구현했다. 다만, 일부 파라미터들은 일시적인 환경변수로 지정해줘야 했다. 기존에 lambda_function.py에 있는 lambda_handler 를 자동으로 호출되었는데, ECS에선 내가 실행할 스크립트를 추가해줘야 했다. ...

2024년 8월 5일 · 1 분 · 배준수

구글 스프레드시트에 기존 데이터 업데이트하기

Today I Learned 날짜 2024년 2월 1일 목요일 내용 스프린트 결과가 배포됐다. 다행히 큰 빵꾸는 없었다. 많은 유저가 몰려왔으면 좋겠다. 구글 스프레드시트에 데이터 추가하기 새로 만든 기능에 대한 KPI 데이터를 구글 스프레드시트에 추가하는 태스크를 맡았다. 이전에, 작동이 멈췄던 커맨드를 다시 돌리는 작업을 했었는데 이와 비슷할거라고 생각해서 별로 어렵지 않겠다 싶었다. 약간의 차이점이 있었는데 이 부분을 너무 쉽게 생각했다. 기존에는 매일매일 새로운 행에 데이터를 추가했지만, 이번에는 기존 데이터에 덮어써야 했다. 1개의 샵 당 1개의 데이터를 가지게 되며, 이미 데이터가 존재한다면 새로 행을 추가하지 않고 수정해야 한다. ...

2024년 2월 1일 · 3 분 · 배준수

AWS 백서 : AWS 서비스 알아보기

AWS 이 글은 누군가 AWS를 다룰 때 조금이나마 덜 고생하길 바라는 마음으로 작성하며, 부정확한 정보에 대한 지적, 정정을 환영하고 자신이 아는 바가 있다면 얼마든지 추가해주길 바랍니다. 앞으로 지속적으로 추가할 예정입니다. What is AWS? 아마존 웹 서비스(AWS, Amazon Web Service)는 아마존닷컴의 클라우드 컴퓨팅 사업부이다. 아마존 웹 서비스는 다른 웹 사이트나 클라이언트측 응용 프로그램에 대해 온라인 서비스를 제공하고 있다. Region 아마존은 클라우드 컴퓨팅을 제공하기 때문에, 데이터센터를 곳곳에 보유하고 있다. 주 고객층을 생각해 물리적으로 가까운 리전을 선택한다. ...

2024년 1월 31일 · 6 분 · 배준수

ECS 망령

Today I Learned 날짜 2024년 1월 22일 월요일 내용 진척이 많이 됐지만, 디테일이 많이 부족한 상황. ECS Task 이쯤되면 ECS가 일본 축구선수 (이) 시바사키 가쿠의 약자는 아닐까 의심된다. 오늘 weekly review report 메일이 발송되지 않았다. 지금은 스프린트 중이라 나중에 고쳐야하지만 얼추 봤을땐 cron식이 잘못된 것으로 보인다. 구글 스프레드시트에 데이터를 추가하는 Task에서도 오류를 발견했다. 작동자체는 잘 되지만 데이터 상의 날짜가 이틀 전으로 들어간다. 내가 넣고자 하는 날짜는 오늘이었으나, UTC 시간 상 한국 시간 8시는 전날 오후 11시다. 따라서 Task가 동작하는 시간의 “오늘”은 실제론 어제다. 그리고 내가 작성한 cronjob은 날짜를 어제로 설정한다. 이 cronjob은 어제의 “어제”, 즉 그저께를 가리키게 된다. ...

2024년 1월 22일 · 2 분 · 배준수

업보 청산하기

Today I Learned 날짜 2024년 1월 17일 수요일 내용 일이 많이 꼬여서 밤 새는거 아닌가 싶었으나 늘 그랬듯 답을 찾았다. 또경변수 지긋지긋한 ECS Task가 또 말썽을 부린다. 오늘 아침에 구글 스프레드시트에 추가되었어야 할 데이터가 추가 되지 않았다! 하필 1시간이 지나버려서 Task 기록도 안남았다. 실행 주기를 바꿔 실행해봤더니 또 환경변수를 못찾는다고 땡깡부린다. 하… 그동안은 테스트서버였고, 지금은 실서버라서 Task에 문제가 전혀 없는데 도대체 어디부터 또 시작해야 할지 눈 앞이 깜깜해졌다. 환경변수가 있는데 왜 못찾냐고! Task 상세정보를 봤는데 내가 알던 환경변수 경로와 달랐다. 생각해보니 실서버는 production을 위한 환경변수를 받아야 하는데 추가를 안해줬다. 진짜 없어서 못찾았구나? 그래도 미안하진 않다. 추가해주니 잘 작동한다. ...

2024년 1월 17일 · 4 분 · 배준수

DKIM 헤더에 포함시키기

Today I Learned 날짜 2024년 1월 16일 화요일 내용 다행히 Task들이 얼추 마무리 되었다. 얼추인 이유는 실서버에서도 잘 되나 확인해야 하니까.. DKIM이 없는 이유 DMARC 설정을 위해 SPF와 DKIM을 적용했었다. 이메일을 받으면 원본에서 header를 확인할 수 있다. 이것처럼 DKIM은 흔적도 없다. DMARC는 둘 중 하나만 통과하면 되기 때문에 기능에 이상은 없으나 분명 설정한게 나타나지 않으니 찝찝해서 그냥 지나칠 수 없었다. 고민의 흐름은 다음과 같았다. 이 인증의 핵심은 alph.kr 이라는 도메인에서 온 메일은 안전하다는 증거다. alph.kr은 AWS의 Route53에서 라우팅한다. 나는 테스트를 위해 info@alph.kr의 daum 메일로 보내고 있다. 목적지는 gmail 이 DMARC는 누가 어떻게 확인하는가? 우선 이 고민에 대한 답을 얻었다 ...

2024년 1월 16일 · 3 분 · 배준수

AWS ECS와 S3 버킷의 통신 해결

Today I Learned 날짜 2024년 1월 15일 월요일 내용 드으으으으디어 ECS를 해결했다! ECS 정복 직전 너무 자주 말한듯 하지만.. ECS 클러스터가 S3 버킷에서 환경변수를 가져오지 못하고 있었다. 질문 I am encountering an issue with my ECS service where tasks are consistently failing during deployment. The specific error message I receive is as follows: 1 ResourceInitializationError: failed to download env files: file download command: non empty error stream: service call has been retried 5 time(s): RequestCanceled: request context canceled caused by: context deadline exceeded ECS tasks are configured to download environment files from an S3 bucket. My ECS service is in the Seoul region (ap-northeast-2), and the S3 bucket is in the US East (Ohio) region (us-east-2). The S3 bucket and objects are not set to public access. I suspect that the issue might be related to timeout settings, as the error indicates that the request is canceled after multiple retries due to a context deadline being exceeded. I have tried setting the startTimeout and stopTimeout in the task definition JSON to 120 seconds, but this has not resolved the issue. ...

2024년 1월 15일 · 5 분 · 배준수

ECS 클러스터는 왜 일을 안할까?

Today I Learned 날짜 2024년 1월 12일 금요일 내용 타운홀미팅이 있어 오전밖에 시간이 없었다. 딱히 시간이 있었다고 해결이 됐을 것 같진 않지만.. SEO HTML의 <meta> 태그는 해당 페이지에 대한 다양한 정보를 표현하기 위해 사용한다. 쉬운 부분이라 다들 알겠지만, 나는 속성에 대해 몰랐던 부분이 있었는데, title 속성은 없다. meta가 아니라 head에 title 태그를 추가하면 된다. 최근 keyword 속성은 잘 쓰지 않는다. 너도 나도 이것 저것 추가를 많이 하다보니 알고리즘이 신경쓰지 않는다고 한다. description : 뭔가 읽기 편하고, 간결한게 좋을 것 같지만 사실 최근에는 검색의 핵심이다. 타겟 유저가 검색에 포함할 법한 단어가 포함되어 있는 것이 좋다. 따라서 동어반복은 좋지 않다. 그렇다고, 말이 안되는 단순 단어 나열만 작성하면 알고리즘이 무시한다. 이정도…? 구글 검색 봇의 마음은 참 갈대같다. ...

2024년 1월 12일 · 3 분 · 배준수