ES /docs

AwsS3Manager::downloadParallel | begin - "Missing credentials in config, if using AWS_CONFIG_FILE, s

Fix Plan: AWS SDK v3 전체 마이그레이션 + Root-level 버전 관리

Changes#

cupixworks: applications/agents/pnpm-workspace.yaml#

  • What: catalog에 @aws-sdk/client-s3, @aws-sdk/lib-storage, @aws-sdk/client-sqs, @aws-sdk/client-ecs, @aws-sdk/client-auto-scaling 버전 등록
  • Why: 모든 agent 패키지가 동일한 AWS SDK v3 버전을 사용하도록 중앙 관리
  • Lines: catalog 섹션 (line 4-14)

cupixworks: applications/agents/packages/base/package.json#

  • What: aws-sdk 제거, @aws-sdk/client-s3, @aws-sdk/lib-storage, @aws-sdk/client-sqs, @aws-sdk/client-ecs catalog 참조로 교체
  • Why: base 패키지가 S3, SQS, ECS 3개 AWS 서비스를 직접 사용
  • Lines: dependencies 섹션 (line 4-15)

cupixworks: applications/agents/packages/base/src/manager/aws-s3.manager.ts#

  • What: import * as AWS from 'aws-sdk'@aws-sdk/client-s3 + @aws-sdk/lib-storage. new AWS.S3({...})new S3Client({...}). s3.upload({...}, callback) / s3.upload({...}).promise()new Upload({ client, params }).done(). 타입 AWS.S3S3Client
  • Why: v3 마이그레이션 core — S3 upload 기능
  • Lines: 1-183

cupixworks: applications/agents/packages/base/src/manager/aws-ecs.manager.ts#

  • What: import AWS from 'aws-sdk'@aws-sdk/client-ecs. new AWS.ECS({...})new ECSClient({...}). callback 패턴 → client.send(new XxxCommand(params)) 패턴. AWS.ECS.StopTaskRequest 등 타입 → v3 Command input types. AWS.AWSError → 일반 Error
  • Why: ECS 관리 (stopTask, runTask, listTasks)
  • Lines: 1-237

cupixworks: applications/agents/packages/base/src/manager/aws-queue.manager.ts#

  • What: import AWS from 'aws-sdk'@aws-sdk/client-sqs. new AWS.SQS({...})new SQSClient({...}). callback 패턴 → client.send(new XxxCommand(params)). AWS.SQS.MessageMessage from @aws-sdk/client-sqs. AWS.SQS.QueueAttributeMapRecord<string, string>. AWS.AWSError → 일반 Error
  • Why: SQS 큐 관리 (receive, delete, getAttributes, changeVisibility)
  • Lines: 1-163

cupixworks: applications/agents/packages/base/src/base-service.ts#

  • What: Array<AWS.SQS.Message>Message[] with import from @aws-sdk/client-sqs. 모든 AWS.SQS.Message 참조를 Message로 교체 (7곳)
  • Why: base-service가 SQS Message 타입을 직접 사용
  • Lines: 18-19, 37-38, 123, 153, 225

cupixworks: applications/agents/packages/cupix-tesla-compute-agent/package.json#

  • What: aws-sdk: "^2.1407.0" 제거, @aws-sdk/client-sqs, @aws-sdk/client-ecs, @aws-sdk/client-auto-scaling catalog 참조로 교체
  • Why: compute-agent가 SQS, ECS, AutoScaling 3개 서비스를 직접 사용
  • Lines: dependencies 섹션 (line 17-22)

cupixworks: applications/agents/packages/cupix-tesla-compute-agent/src/model/qmAws.ts#

  • What: import AWS from 'aws-sdk'@aws-sdk/client-sqs, @aws-sdk/client-ecs, @aws-sdk/client-auto-scaling. new AWS.SQS()new SQSClient(), new AWS.ECS()new ECSClient(), new AWS.AutoScaling()new AutoScalingClient(). 12개 메서드를 callback → Command 패턴으로 변환. 모든 AWS 타입 참조 교체
  • Why: compute-agent의 핵심 AWS 오케스트레이션 클래스
  • Lines: 1-351

cupixworks: applications/agents/packages/cupix-tesla-compute-agent/src/model/qmJob.ts#

  • What: import AWS from 'aws-sdk' 제거. AWS.SQS.MessageMessage from @aws-sdk/client-sqs. AWS.ECS.ContainerOverrideContainerOverride from @aws-sdk/client-ecs. AWS.ECS.TaskTask from @aws-sdk/client-ecs
  • Why: type-only 변경 — SQS Message와 ECS 타입 참조
  • Lines: 6, 18, 45, 163

cupixworks: applications/agents/packages/cupix-tesla-compute-agent/src/manager/job.manager.ts#

  • What: import AWS from 'aws-sdk' 제거. AWS.SQS.Message[]Message[] from @aws-sdk/client-sqs. AWS.ECS.TaskTask from @aws-sdk/client-ecs
  • Why: type-only 변경
  • Lines: 6, 64, 96

cupixworks: applications/agents/packages/cupix-tesla-forge-agent/src/forge-service.ts#

  • What: Array<AWS.SQS.Message>Message[] with import from @aws-sdk/client-sqs. 모든 AWS.SQS.Message 참조를 Message로 교체 (8곳)
  • Why: downstream type 전파 — forge-agent는 aws-sdk 직접 dependency 없이 global type 사용 중
  • Lines: 25-26, 52-53, 64, 106, 162, 329

cupixworks: applications/agents/packages/cupix-tesla-potree-agent/src/potree-service.ts#

  • What: Array<AWS.SQS.Message>Message[] with import from @aws-sdk/client-sqs. 모든 AWS.SQS.Message 참조를 Message로 교체 (7곳)
  • Why: downstream type 전파 — potree-agent는 aws-sdk 직접 dependency 없이 global type 사용 중
  • Lines: 23-24, 44-45, 90, 180, 444

cupixworks: applications/agents/packages/cupix-tesla-forge-agent/package.json#

  • What: @aws-sdk/client-sqs: "catalog:" 추가 (SQS Message 타입 사용을 위해)
  • Why: forge-agent가 SQS Message 타입을 직접 import하려면 dependency 필요
  • Lines: dependencies 섹션

cupixworks: applications/agents/packages/cupix-tesla-potree-agent/package.json#

  • What: @aws-sdk/client-sqs: "catalog:" 추가 (SQS Message 타입 사용을 위해)
  • Why: potree-agent가 SQS Message 타입을 직접 import하려면 dependency 필요
  • Lines: dependencies 섹션

cupixworks: applications/agents/packages/cupix-pano-postprocessor/package.json#

  • What: @aws-sdk/client-s3, @aws-sdk/lib-storage를 catalog 참조로 변경 (현재 직접 버전 지정)
  • Why: root-level 버전 관리로 통일
  • Lines: dependencies 섹션 (line 18-19)

cupixworks: applications/agents/packages/base/src/manager/aws-s3.manager.spec.ts#

  • What: import * as AWS from 'aws-sdk'@aws-sdk/client-s3 + @aws-sdk/lib-storage. vi.mock 패턴 변경: vi.mock('aws-sdk')vi.mock('@aws-sdk/client-s3') + vi.mock('@aws-sdk/lib-storage'). AWS.S3 생성자 mock → S3Client mock. mockS3.upload()Upload mock
  • Why: 테스트가 v3 mock 패턴을 사용해야 함
  • Lines: 1-428

cupixworks: applications/agents/packages/base/src/manager/aws-ecs.manager.spec.ts#

  • What: import AWS from 'aws-sdk'@aws-sdk/client-ecs. vi.mock 패턴 변경. callback mock → send() mock
  • Why: 테스트가 v3 mock 패턴을 사용해야 함
  • Lines: 1-435

cupixworks: applications/agents/package.json#

  • What: pnpm.onlyBuiltDependencies에서 aws-sdk 제거
  • Why: v2 제거 후 더 이상 빌드 불필요
  • Lines: pnpm.onlyBuiltDependencies 섹션 (line 85)

Acceptance Criteria#

  • import.*aws-sdk 가 전체 agents 소스에서 0건 (spec 포함)
  • @aws-sdk/client-s3, @aws-sdk/client-sqs, @aws-sdk/client-ecs, @aws-sdk/client-auto-scaling import가 해당 파일에 존재
  • pnpm-workspace.yaml catalog에 @aws-sdk/* 5개 패키지 등록
  • base, pano-postprocessor, tesla-compute-agent의 package.json에서 aws-sdk 제거
  • forge-agent, potree-agent의 package.json@aws-sdk/client-sqs: "catalog:" 추가
  • pnpm exec eslint lint 통과 (changed files)
  • pnpm exec nx run base -t test 테스트 통과

Tests#

  • 기존 테스트: aws-s3.manager.spec.ts, aws-ecs.manager.spec.ts, base-service.spec.ts
  • 테스트 마이그레이션: aws-sdk v2 mock을 v3 mock으로 전환 필요