본문 바로가기

AWS

AWS S3: 보안관점에서 Presigned PUT vs POST S3를 사용하게 되면서 업로드 시 서버에서 Presigned URL을 생성해 클라이언트로 반환한 뒤 클라이언트가 URL로 PUT요청을 통해 파일을 업로드하도록 구현해보았다. public PresignedPutObjectRequest presignPut(String bucket, String key, Duration ttl) { PutObjectRequest putObjectRequest = PutObjectRequest.builder() .bucket(bucket) .key(key) .build(); PutObjectPresignRequest presignRequest = PutObject.. 더보기
AWS S3: Post Presign Url이 만료되지 않는 문제 문제AWS PresignedUrl로 업로드 시 policy에 expiration을 설정해 url 만료 시간을 지정했지만 만료시간이 지났음에도 업로드 되는 문제가 발생했다.해결policy를 디코딩해본 결과, expiration이 다음과 같았다.2026-01-20T12:39:36.031377839Z나노초(9자리)까지 설정되었기때문에 발생한 문제였다. //policy.put("expiration", DateTimeFormatter.ISO_INSTANT.format(expiresAt)); policy.put("expiration", expiresAt.truncatedTo(ChronoUnit.MILLIS).toString());밀리초 단위(3자리)까지만 표기하도록 수정하니, 유효기간이 제.. 더보기
AWS: IAM Billing 읽기 권한 IAM User에게 위처럼 같이 두 개의 권한을 주어도 Billing 메뉴에 접근할 수가 없다. 그 이유는, Root가 Global 설정을 해줘야 하기 때문이며, 설정하는 방법은 다음과 같다: 1. 루트 계정 로그인2. 오른쪽 사용자 이름 클릭3. 계정 클릭4. 결제 정보에 대한 IAM 사용자 및 역할 액세스 활성화 이제 결제 관련 메뉴 열람이 가능해진다. 더보기
Blue-Green Deployment (자동화) [아직 배포용 클라우드 계정이 준비되지 않아 GitHub Actions 검증은 되지 않은 상태입니다. 다만, AWS CLI의 경우 문제 없음을 확인하였습니다.]이 글에서는 AWS ALB와 두 타겟그룹(Blue/Green)에서 무중단 배포를 자동화하는 방법에 대해 다룬다.CI/CD 자동화는 GitHub Actions를 사용하며, 각 타켓그룹에는 인스턴스가 1개씩만 있다고 가정한다.전체 흐름빌드 & 푸시Github Actions로 prod 브랜치 push 시 도커로 애플리케이션을 빌드해 이미지를 DockerHub에 푸시한다.현재 라이브 색상 확인ALB 리스너가 Blue/Green 중 어디로 트래픽을 보내는지 조회한다.비활성 타겟그룹에 배포 진행→ 로컬 스모크 체크(curl -fsS http://localho.. 더보기
AWS: IAM 사용자 생성 깃헙 액션 배포 시 ALB Listener의 대상그룹 변경을 위한 최소한의 권한을 가진 IAM 사용자를 생성해보려고 한다.내 워크플로우에서 필요한 권한은 다음과 같다:elasticloadbalancing:DescribeListenerselasticloadbalancing:ModifyListenerelasticloadbalancing:DescribeTargetHealth우선 다음 화면에서 사용자 이름을 입력하자:GitHub Actions를 통해서만 명령을 실행할 것이기 때문에 콘솔 액세스 권한은 주지 않는다. 2단계: 권한 설정에서, 직접 정책 연결에서 정책 생성을 선택한다.이후 JSON을 선택해 다음 JSON을 붙여넣는다.과 는 실제 값으로 넣어야한다.{ "Version": "2012-10-17", .. 더보기
AWS CLI: describe-rules --listener-arn 블루 그린 배포를 위해 GitHub Actions yaml을 작성하던 중 로드밸런서의 현재 대상그룹 ARN 값이 필요하게 되었다.ALB Listener arn은 깃헙 시크릿으로 전달받아 알 수 있기에 describe-rules을 사용하면 될 것 같다.aws elbv2 describe-rules --listener-arn { "Rules": [ { "RuleArn": "", "Priority": "default", "Conditions": [], "Actions": [ { "Type": "forward", "Order.. 더보기
무중단 배포(Zero-Downtime Deployment) 애플리케이션을 배포할 때, 기존 애플리케이션을 종료시키고 새로운 애플리케이션을 실행하기까지 애플리케이션이 종료된다.기존 애플리케이션을 종료시키고 새로운 애플리케이션을 시작하기 전까지의 시간을 다운타임이라고 한다.다운타임을 없애기 위해 무중단 배포라는 방법이 존재한다.무중단 배포 시, 기존 요청은 처리하고, 새 요청은 새 애플리케이션으로 연결되도록 만드는 것이다.Blue-Green DeploymentBlue(현재)와 Green(새 버전) 두 개의 서버 환경을 두고, 트래픽을 한 번에 전환장점: 빠른 롤백 가능단점: 서버 두 대 필요(서버 1대에서도 유사한 방법으로 가능하고, 이 경우 서버 프로세스 2개를 띄워서 nginx가 LB역할을 수행)Rolling Deployment서버 여러 대 중 하나씩 교체하면서.. 더보기