전체 글152 StackSet 관리 리소스를 수동 삭제하면 생기는 일 - SUCCEEDED 뒤에 숨는 배포 실패 어떤 상황인가CloudFormation StackSet(또는 Control Tower CfCT)으로 수십 개 계정에 IAM Role 같은 표준 리소스를 배포해 운영하는 환경누군가 그 리소스를 콘솔이나 CLI로 직접 삭제하면, 그 순간에는 아무 일도 일어나지 않습니다문제는 다음 배포 때 터집니다 — 그것도 겉으로는 성공한 것처럼 보이는 형태로증상다음 배포(UPDATE)에서 해당 계정만 이런 에러로 실패합니다The role with name xxx-standard-role cannot be found.(Status Code: 404, HandlerErrorCode: NotFound)그런데 파이프라인과 StackSet operation은 SUCCEEDED로 표시됩니다StackSet에는 실패 허용치(failur.. 2026. 8. 28. Claude Code를 Amazon Bedrock으로 쓰기 - 엔터프라이즈 도입 가이드 왜 Bedrock 경로인가Claude Code는 기본적으로 Anthropic에 직접 로그인해서 쓰지만, Amazon Bedrock을 경유해서 쓸 수도 있습니다 (공식 문서)기업 환경에서 Bedrock 경로가 매력적인 이유AWS 통합 청구 — 별도 Anthropic 계약·결제 수단 없이 기존 AWS 청구로 합산IAM/SSO 재사용 — 이미 쓰고 있는 AWS 자격증명 체계(SSO, IAM Role)로 인증. 개인별 API 키 발급·관리가 사라짐거버넌스 — IAM 정책·SCP·Bedrock Guardrails로 접근·사용을 조직 차원에서 통제알아둘 제약도 있습니다WebSearch 도구를 사용할 수 없음/logout 명령 없음 (인증이 AWS 자격증명 체계라서)Bedrock 경로의 인증·호출 구조와 거버넌스 레.. 2026. 8. 28. 헤드리스 모드로 CI/CD에 Claude Code 넣기 헤드리스 모드란Claude Code는 대화형 터미널 도구지만, -p(--print) 플래그를 붙이면 비대화형으로 한 번 실행하고 종료합니다 (공식 문서)성공 시 exit code 0, 실패 시 non-zero — 스크립트에서 분기 가능stdin으로 파이프 입력을 받고 stdout으로 결과를 내보내므로, 일반 CLI 도구처럼 파이프라인에 끼워 넣을 수 있습니다# 빌드 로그를 파이프로 넣고 원인 분석을 파일로 받기cat build-error.txt | claude -p '이 빌드 에러의 근본 원인을 간결하게 설명해줘' > output.txtCI에서는 --bare를 함께 쓰는 것을 권장합니다 — 훅·플러그인·MCP 서버·CLAUDE.md 자동 로딩을 건너뛰어 어느 러너에서 돌려도 같은 결과가 나옵니다 (시작 .. 2026. 8. 28. IAM Identity Center 로그인 실패, CloudTrail 어디를 봐야 하나 상황사용자가 "로그인이 안 된다"고 문의 — AWS 액세스 포털에서 "인증실패, 로그인 자격증명을 올바르게 입력했는지 확인하세요"IAM Identity Center(구 AWS SSO) 환경이라면 로그인 시도 기록은 CloudTrail에 남습니다 (공식 문서)그런데 어느 이벤트를 봐야 하는지가 문서만 봐서는 전혀 직관적이지 않습니다 — 실제로 조사하면서 두 번 틀렸던 과정을 정리합니다주의할 점 1 — Authenticate 이벤트만 보면 "기록이 없다"고 오판한다처음에는 당연히 Authenticate 이벤트를 조회했습니다 → 해당 사용자 기록 0건"CloudTrail에 안 남는구나"라고 결론 내릴 뻔했지만 오판이었습니다Authenticate는 로그인에 성공했을 때만 기록됩니다 → 실패한 사용자는 여기 나올.. 2026. 8. 28. EBS 기본 암호화 전사 적용하다 Karpenter를 멈춘 이야기 배경 — 무엇을 하려고 했나조직 전체 계정에 EBS 볼륨 암호화를 강제하는 거버넌스를 배포하는 작업이었습니다 (EBS 기본 암호화 공식 문서)구성은 3단으로 설계했습니다SCP — 미암호화 볼륨 생성(ec2:Encrypted = false)을 조직 차원에서 거부Config 규칙 + 자동 교정 — 계정별 EbsEncryptionByDefault를 켬계정 기본 암호화(EbsEncryptionByDefault) — 켜져 있으면 암호화를 지정하지 않아도 볼륨이 암호화됨일부 테스트 OU에서 문제없이 돌던 것을 수십 개 계정으로 확대하는 배포였습니다사전 점검 — 그리고 그 맹점확대 전 점검은 이렇게 했습니다: 전체 Terraform 코드에서 encrypted = false 리터럴을 검색 → 0건 → 안전하다고 판단이.. 2026. 8. 28. Claude Code 훅(Hooks)으로 가드레일 만들기 - 위험 명령과 시크릿 차단 프롬프트 지시만으로는 부족하다"rm -rf 쓰지 마", "시크릿은 커밋하지 마" 같은 규칙을 CLAUDE.md에 적어두는 것만으로는 안심할 수 없습니다프롬프트 지시는 모델이 따르기를 기대하는 것이고, 긴 세션에서 컨텍스트가 밀리면 잊힐 수 있습니다훅(Hooks)은 다릅니다 — 도구 실행 전후에 끼어드는 코드 레벨 강제 장치라서, 모델이 뭐라고 판단하든 조건에 걸리면 무조건 차단됩니다 (공식 문서)실제로 AWS 액세스 키·Bearer 토큰 패턴이 파일에 쓰이기 전에 차단하는 훅을 팀에서 운영해봤는데, "규칙을 지켜달라"와 "지킬 수밖에 없다"의 차이는 큽니다PreToolUse 훅의 개입 지점 - 통과와 차단 두 갈래훅 이벤트 한눈에이벤트가 많지만 가드레일 용도로는 이 정도만 알면 됩니다이벤트발화 시점가드레.. 2026. 8. 28. Karpenter가 예고 없이 노드를 교체할 때 - Drift 동작과 NodeClass 사고 2건 Karpenter를 운영하면서 실제로 겪은 사고 2건을 정리합니다. 하나는 아무도 배포하지 않았는데 새벽에 노드가 전부 순차 교체된 사건이고, 다른 하나는 노드가 재시작된 뒤 신규 노드가 아예 생성되지 않던 사건입니다. 둘 다 원인은 Karpenter의 정상 동작 원리 안에 있었습니다.사건 1 - 새벽에 노드가 전부 순차 교체됨증상배포도, 스케일 이벤트도 없었는데 워커 노드들이 하나씩 삭제되고 새 노드로 교체됨서비스 순단은 없었지만 노드 이름과 인스턴스가 전부 바뀌어 있었음로그 확인Karpenter 로그를 보면 교체 사유가 명시되어 있습니다 — "reason":"drifted"{"level":"INFO","message":"disrupting nodeclaim(s) via replace, terminat.. 2026. 8. 28. EKS DNS 안정화 - NodeLocal DNSCache 도입 검증기 배경 — 왜 DNS를 건드렸나게임 런칭을 앞둔 EKS 클러스터에서 DNS를 사전 튜닝하기로 했습니다. CoreDNS가 Fargate 위에 떠 있는 구성이었는데, 이 구조에는 세 가지 잠재 리스크가 있습니다네트워크 지연 — 모든 DNS 질의가 네트워크를 건너 Fargate 상의 CoreDNS까지 가야 함conntrack 경합 — 짧은 시간에 몰리는 DNS UDP 패킷이 노드의 conntrack 테이블 입력 과정에서 경합(race)을 일으켜 패킷 드랍 발생 가능. 애플리케이션에서 간헐적으로 보이는 "DNS 5초 지연"의 주범입니다 — 드랍된 UDP 질의는 resolver 타임아웃(기본 5초)만큼 기다렸다가 재시도되기 때문부하 집중 — 클러스터 전체 질의가 소수의 CoreDNS 파드에 몰려, CoreDNS 장.. 2026. 8. 28. NAT Gateway 비용 절감 실전 - 일 150TB 트래픽을 100GB로 줄인 3단계 라이브 게임 서비스의 AWS 청구서에서 NAT Gateway 데이터 처리 비용이 비정상적으로 커진 것을 발견하고,트래픽 경로를 3단계로 손봐서 일 $9,000 수준이던 NAT 전송 비용을 $10 미만으로 줄인 기록입니다.AS-IS / TO-BE 트래픽 경로와 비용 변화NAT Gateway 요금 구조NAT Gateway는 두 가지 축으로 과금됩니다 (요금표)시간당 요금 — 떠 있기만 해도 나감 (도쿄 기준 $0.062/h)데이터 처리 요금 — NAT를 통과하는 트래픽 GB당 과금 (도쿄 기준 $0.062/GB)시간당 요금은 예측 가능하지만, 데이터 처리 요금은 경로 설계에 따라 폭발합니다GB당 $0.062 × 일 150TB ≒ 일 $9,300 — 실제로 벌어진 일입니다여기에 NAT Gateway가 다른 가.. 2026. 8. 28. EKS 노드가 안 늘어날 때 의심할 것 (1) - vCPU 서비스 쿼터 증상파드가 Pending 상태로 계속 쌓이는데 새 노드가 안 뜹니다Karpenter(또는 Cluster Autoscaler)는 분명 NodeClaim을 만들려고 시도 중노드그룹 설정도, 서브넷도, 인스턴스 타입도 다 정상으로 보임QA 환경 여러 개가 한 AWS 계정을 공유하는 구성에서 특히 자주 발생합니다kubectl get pods -A --field-selector=status.phase=Pendingkubectl get nodeclaims # Karpenter — 계속 생성 시도만 반복흔한 오답들원인을 찾을 때 보통 이 순서로 헤매게 됩니다서브넷 IP 고갈? → aws ec2 describe-subnets로 확인해보면 여유 있음인스턴스 타입 재고 부족(ICE)? → 다른 AZ도 마찬가지NodeP.. 2026. 8. 28. 이전 1 2 3 4 ··· 16 다음