플랫폼 팀이 10년간 우회 설계해 온 제약 둘이 7월 13일의 한 주에 사라졌다. S3는 객체가 S3 Standard에서 Standard-IA나 One Zone-IA로 옮겨 가기 전의 30일 대기를 없앴고, Lambda는 배포 패키지를 자기 스토리지로 복사하는 것을 그쳤는데, 이는 코드 스토리지 쿼터를 없애고 배포 후 활성화를 짧게 만든다. 세 번째 변화는 더 작지만 ID를 통합하는 누구에게나 중요하다. Cognito가 이제 기존 비밀번호 해시와 함께 사용자를 가져올 수 있으므로, 다른 ID 공급자에서의 마이그레이션이 더는 모든 사용자에게 비밀번호 재설정을 강제하지 않는다. AI 쪽에서는 OpenAI의 GPT-5.6 Sol, Terra, Luna가 Bedrock에서 GA가 됐다.

이 기간에 Cognito 변경 외에는 마이그레이션이나 현대화 출시가 없었으므로 이 글은 지난주보다 짧다. 그래도 주제가 있는 주다. AWS는 당신의 편의가 아니라 AWS의 편의를 위해 존재하던 한계를 없앴다.

S3: 생성 당일의 Infrequent Access

7월 16일까지 라이프사이클 규칙은 객체가 S3 Standard에 30일 머문 뒤에야 S3 Standard-IA나 One Zone-IA로 전환할 수 있었다. 이제 규칙에 0일이라고 쓸 수 있고, 전환은 객체가 생성된 바로 그날 일어난다. AWS는 몇 시간 안에 차가워지는 백업, 로그 분석, 컴플라이언스 데이터를 위한 것으로 내세우며, IA 클래스의 스토리지 요율은 같은 밀리초 접근을 유지하면서 S3 Standard보다 최대 40% 낮다.

모든 규칙을 0으로 바꾸기 전에 전환 고려 사항을 읽어라. 잘못된 워크로드에 IA를 비싸게 만들던 것들은 그대로이기 때문이다. 128 KB 미만의 객체는 기본적으로 전환되지 않고, 어느 쪽이든 객체마다 전환 요청 비용을 내므로, 작은 로그 조각으로 가득한 버킷은 더 싸지는 게 아니라 더 비싸진다. IA 클래스는 최소 스토리지 기간 요금을 유지하므로, 쓰고, 0일에 티어링하고, 3일에 삭제한 객체는 머문 것처럼 과금된다. 그리고 IA는 검색된 GB당 과금하는데, 재처리 작업이 전부 다시 읽어 들일 때 "차가운" 데이터를 뜻밖의 청구서로 바꾸는 것이 바로 그것이다. 백업 접두사에 대한 구체적인 규칙은 이렇게 생겼다.

{
  "Rules": [{
    "ID": "backups-to-ia-day-zero",
    "Status": "Enabled",
    "Filter": { "Prefix": "backups/" },
    "Transitions": [{ "Days": 0, "StorageClass": "STANDARD_IA" }]
  }]
}

올바른 워크로드는 한 번 쓰고, 드물게 읽고, 최소 기간을 넘겨 보관하는 데이터다. 백업과 컴플라이언스 아카이브가 해당한다. 일주일간 tail하는 애플리케이션 로그는 아니고, S3 Intelligent-Tiering은 "모르겠다"의 경우를 검색 요금 없이 이미 처리해 왔다.

Lambda: 당신의 버킷이 진실의 원천이다

Lambda는 함수나 레이어를 만들거나 업데이트할 때마다 모든 배포 패키지를 Lambda 관리 스토리지로 복사했다. 그 복사본이 리전당 75 GB 코드 스토리지 쿼터가 세던 것이었고, 모든 배포의 크리티컬 패스 위의 한 단계였다. 7월 15일부터 함수나 레이어에서 S3ObjectStorageMode를 REFERENCE로 설정하면 Lambda가 대신 당신의 버킷에서 코드를 읽는다. 참조된 코드는 쿼터에 계산되지 않고, 관리형 쿼터 자체도 나머지 모두에게 75 GB에서 300 GB로 올랐으며, Lambda 추가 요금은 없고, S3 스토리지와 해당되는 경우 교차 리전 전송 비용을 낸다. Lambda 서비스 주체에는 버킷에 대한 s3:GetObject와 s3:GetObjectVersion이 필요하다.

트레이드오프는 이제 예전에 없던 가용성 의존성을 당신이 소유한다는 것이다. 버킷의 객체가 삭제되거나, 덮어쓰이거나, 정책이 깨지면 그것은 Lambda 사건이다. 버킷의 버저닝은 선택이 아니게 되고, 배포 파이프라인은 덮어쓰기가 아니라 새 키를 써야 하며, 버킷 정책에는 함수의 IAM 역할과 같은 변경 관리가 필요하다. 75 GB 쿼터가 분기마다 지원 티켓을 뜻했던, 수백 개의 함수와 레이어를 가진 팀이 이것에서 가장 많이 얻는다. 함수 스무 개를 가진 팀은 더 빠른 활성화가 잘못 구성될 수 있는 것 하나를 더 들일 만한 가치가 있는지 물어야 한다.

Cognito: 더는 비밀번호를 재설정하지 않는 마이그레이션

CSV 가져오기로 사용자 기반을 Cognito로 옮기는 데는 늘 못난 순간 하나가 있었다. Cognito가 소스 시스템의 해시를 받을 수 없었기 때문에 가져온 모든 사용자가 첫 로그인에서 비밀번호를 재설정해야 했다. 7월 15일부터 CSV가 해시를 담을 수 있고, 알고리즘을 선언하면, Cognito가 첫 로그인에서 사용자의 비밀번호를 가져온 해시와 대조해 검증한 뒤 다시 보호한다. 지원: bcrypt, scrypt, Argon2id, SHA-256을 쓰는 PBKDF2, Cognito가 돌아가는 모든 리전에서.

이것은 통합 프로젝트가 일어나느냐 마느냐를 결정하는 종류의 변화다. 강제 재설정은 많은 팀이 레거시 IdP를 1년간 나란히 살려 두고 첫 로그인에 마이그레이션 트리거를 걸어 둔 이유였다. 이제 컷오버는 한 번의 가져오기일 수 있다. 실패 모드는 해시 내보내기 자체다. 소스 시스템이 알고리즘 매개변수를 정확히 줘야 하고, 불일치는 큰 소리로 실패하지 않는다. 전체 사용자 기반에 대해 한꺼번에 "잘못된 비밀번호"로 실패한다. 옛 시스템이 쓴 모든 역사적 해싱 구성에 속한 사용자를 포함한 샘플로 테스트하라.

이번 주의 다른 소식

관통하는 맥락

S3의 30일 규칙과 Lambda의 코드 복사는 둘 다 고객이 필요로 한 것이 아니라 AWS가 서비스를 만든 방식의 산물이었다. 둘 다 도구로 우회됐다. 첫째는 Intelligent-Tiering으로, 둘째는 레이어 정리 스크립트와 쿼터 티켓으로. 그것들을 없애는 것은 좋고, 동시에 우회책이 무엇을 숨기고 있었는지 떠올리게 한다. 생성 당일 IA는 30일 대기가 대부분의 사람을 부딪히지 않게 막아 주던 검색과 최소 기간 요금을 드러낸다. 참조된 코드는 당신의 버킷을 런타임 의존성으로 드러낸다. Cognito의 해시 가져오기는 강제 재설정을 없애고 옛 IdP 내보내기의 품질을 드러낸다. 각 경우에 AWS는 예전에 당신 대신 내리던 결정을 되돌려 줬다.

다음으로 읽을 글

같은 주들의 AI와 에이전트 쪽 읽기는 ercan.ai의 필드 노트에 있다. AWS, 클라우드, CI/CD 파이프라인, Linux, GitHub/GitLab 등에 대한 컨설팅은 ercanermis.com을 통해 진행한다.

참고 자료