Programming-[Base]/Cloud-AWS 6

Elasticache 연결 문제 - <unresolved>:6379, Redis, Springboot, Lettuce

문제상황 Elasticache - Redis를 사용하기 위해 Redis cluster를 생성하고 스프링부트 - LettuceConnectionFactory를 통해 연결할려는데, 아래와 비슷한 에러가 발생했다. Caused by: io.lettuce.core.RedisConnectionException: Unable to connect to {레디스 엔드포인트 주소}.cache.amazonaws.com/:6379 at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:78) at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:..

[탐험]S3 Content-Disposition으로 파일 다운로드 이름 변경, CloudFront 캐시 무효화

1. 결론 s3는 Content-Disposition값에 따라 다운로드하는 파일의 이름을 변경할 수 있다. 다만 S3 자체에서 다운로드 할때는 AWS에서 해당 header값을 override해서 안된다. URL을 거쳐서 진행할때만 가능하다. CloudFront를 사용하는 경우 요청의 X-Cache 값을 살펴보자. S3와 즉각적으로 동기화가 안된다면 캐싱 때문일 수도 있고, 이때는 무효화를 적극적으로 고려해보자. 상기 내용 때문에, CloudFront로 연결된 S3의 Content-Disposition 값을 그대로 프론트에서 활용하는 것은 실시간성을 확보할 수 없다. 실시간으로 변경 및 표시가 필요하다면 따로 DB 등에 저장해놓고 해당 값을 프론트에서 조회해야한다. 2. 문제상황 S3에 업로드된 파일을 사..

[TIL] AWS S3 donwload_file() method directory에 random string 붙는 현상. FileNotFoundError

1. 현상 S3의 boto3를 이용하여 donwload_file() 메서드를 실행한다. 첫 번째 인자인 obj.key는 S3에 저장된 파일의 key값, 두번째 인자는 저장된 버킷의 이름, 세 번째 인자는 다운로드한 파일을 저장할 디렉토리 이름이다. os.mkdir(folder, exist_ok=True) 를 써서 folder에 대한 경로는 로컬에 만들어놓고, obj.key값을 붙여서 저장할려고 했는데 저장이 안되고 디버깅 상에서 _packed라는 obj.key 상 파일 이름 뒤에 .bd88bF6E라는 이상한 문자열이 추가로 붙었다. 그리고 실행할 때마다 뒤 문자열이 임의로 계속 변경되었다. 2. 원인 random string이 붙는 현상 boto3는 파일 다운로드 중 파일의 이름 뒤에 random str..

[TIL] AWS Lambda, CloudFormation, Gateway

람다 서비스 구조 AWS Lambda로 AWS에서 Function Resource를 만들어서 하나의 서비스를 처리하도록 만들 수 있다. 작은 서버와도 같아서, 기존 서비스와는 별개로 요청을 받고, 어떤 작업을 처리하고 응답을 내보낼 수 있는 구조이다. 람다는 내부 용량 제한이 있는데, 만약 이 용량 제한이 512MB라면 작업을 처리하기 위한 모든 파일을 포함하기에는 부족하다. 서버를 띄우기 위한 일부 코드와 파이썬 프로그램 등만 포함해도 512MB를 초과할 수 있다. 따라서 람다에 필요한 라이브러리 등의 코드들은 직접 포함하지 못하고 Layer라는 참조 정보만 포함하게 된다(단순하게 표현하자면 특정 라이브러리를 다운로드 받을 수 있는 URL). 실제 람다 실행 시에 Layer 정보를 참조로하여 다른 라이..

2020/11/11 TIL : AWS/local 서버 생성, AWS DB 생성, 서버-DB 연결

11월 11일 1. Git Flow 파악 2. 서버 및 DB 생성, 연결 항목(시간순 정렬) 방법 정보 유의점 Git flow 확립 우측 그림 참조 -upstream의 Dev repo.를 default로 설정, -local에서 본인 repo.로 업로드 시, git push origin feature#00 입력 EC2 서버 생성 및 접속 - 생성 방법은 매뉴얼 참조 - 우측 '정보'란의 퍼블릭 DNS 주소를 터미널에 입력 AWS- EC2 - 인스턴스 - 인스턴스 이름 클릭 - 연결 - SSH 클라이언트 - 퍼블릭 DNS 주소 복사 -local PC에서 .ssh 폴더에 pem key 파일 존재 -터미널의 디렉토리 위치를 .ssh 폴더로 지정 후 명령어 입력 - 플랫폼을 Ubuntu로 만들어주어야 한다. 서버..

[AWS] 개요, S3, EC2, RDS 시작 방법 등

AWS Deployment(배포)를 위해서 클라우드 형태로 서버를 제공하는 서비스가 AWS(Amazon Web Service) 이다. 추가로 배포를 할 수 있는 플랫폼은 Microsoft의 Azure, Digital Ocean, Heroku 등이 있다. 회원 가입 시에 계좌정보를 입력하게 되어있고, 1달러를 빼간다! 다만, 인증이 완료되고 나면 약 2주 안에 환불해준다. AWS 서비스를 가입한 후 1년 동안은 지정된 규칙(Prettier, 지정된 컴퓨터로만 사용하는 등의 규칙)을 지키면 무료로 사용할 수 있다. -- 배포를 위한 가이드라인 1. 코드내에서 주로 상대주소를 쓴다. 내가 제작한 코드를 참고, 수정, 이용하는 사람들은 다른 환경에서 작업하기 때문에, 참조하는 주소가 다를 수 있다. 2. 환경변..