본문 바로가기

Kiro

AWS Kiro 완전 가이드 3편 — Steering 실전 + AWS 네이티브 통합 + Cursor·Claude Code·Kiro 선택 기준

반응형

Kiro를 2편까지 써보면 이런 불편함이 생겨요.

"파일 저장할 때마다 Kiro가 우리 팀 컨벤션을 무시하고 엉뚱한 스타일로 코드를 짠다." "Lambda 배포 코드 짜는데 일반적인 Node.js 패턴으로 뱉어낸다."

Steering이 이걸 해결해요. Kiro에 프로젝트별 컨텍스트를 주입해서, 모든 에이전트 인터랙션에 팀 컨벤션·아키텍처 결정·보안 요구사항이 자동으로 적용되게 만드는 기능이에요.


🔑 핵심 요약

Steering + AWS 통합 핵심 → Steering: .kiro/steering/ Markdown 파일 → 모든 에이전트 인터랙션에 자동 포함 → 3가지 포함 방식: Always(항상) / Conditional(파일 접근 시) / Manual(직접 참조) → Generate Steering Docs 버튼 → 레포 분석해서 자동 생성 → AWS 네이티브: Bedrock, Lambda, CDK, CloudFormation, CodeCatalyst 네이티브 통합 → GovCloud 지원 + FedRAMP High 취득 추진 (2026.02) → Kiro vs Cursor vs Claude Code: 복잡도·팀 규모·AWS 의존도에 따라 선택


실전 1 — Steering 파일 구조와 작성법

자동 생성으로 시작하기

Kiro 패널 → Agent Steering → "Generate Steering Docs" 클릭

Kiro가 레포 분석:
→ package.json, README.md, vite.config.js, App.tsx 등 읽기
→ 프로젝트 구조, 사용 라이브러리, 기존 패턴 파악
→ .kiro/steering/ 폴더에 Markdown 파일 자동 생성

생성된 기본 구조:

.kiro/steering/
├── conventions.md     # 코딩 컨벤션, 네이밍 규칙
├── architecture.md    # 시스템 아키텍처, 레이어 구조
└── tech-stack.md      # 사용 기술, 라이브러리 결정

Steering 포함 방식 3가지

# Always — 모든 인터랙션에 항상 포함 (기본값)
# 팀 전체 공통 규칙, 보안 요구사항에 적합
---
inclusion: always
---
## 코딩 컨벤션
- TypeScript strict 모드 필수
- console.log 금지, 반드시 logger 모듈 사용
- 모든 async 함수는 try-catch 처리

---

# Conditional — 특정 파일 접근 시에만 포함
# 무거운 도메인 지식, 특정 모듈 전용 규칙에 적합
---
inclusion: conditional
trigger: "**/*.lambda.ts"   # Lambda 파일 접근 시에만
---
## Lambda 함수 규칙
- 콜드 스타트 최소화: 핸들러 밖에서 초기화
- 타임아웃 기본 30초 설정
- 메모리 최소 512MB

---

# Manual — 직접 참조할 때만 포함
# 상황별로 필요한 문서, 방대한 레거시 컨텍스트에 적합
---
inclusion: manual
---
## 레거시 인증 모듈 주의사항
...

실전 2 — Steering 실전 작성 패턴

AWS CDK 팀용 Steering 예시

<!-- .kiro/steering/aws-cdk-conventions.md -->
---
inclusion: conditional
trigger: "**/*.ts,lib/**,bin/**"
---

## AWS CDK 컨벤션

### 스택 구조
- 환경별 스택 분리 (dev/staging/prod)
- 스택당 단일 책임 원칙 적용
- 크로스 스택 참조는 SSM Parameter Store 사용

### Lambda 패턴
- Node.js 22.x 런타임 표준
- Lambda Layer로 공통 의존성 관리
- ARM64 아키텍처 기본 (비용 20% 절감)
- 환경 변수는 반드시 Secrets Manager 참조

### 보안 요구사항
- IAM 최소 권한 원칙 필수
- VPC 내 프라이빗 서브넷 배포
- CloudWatch Logs 90일 보존 정책
- KMS 암호화 모든 데이터 스토어에 적용

### 금지 패턴
- 하드코딩된 ARN 금지 → SSM 참조 사용
- `*` 와일드카드 IAM 권한 금지
- 퍼블릭 S3 버킷 생성 금지

Steering 없을 때 vs 있을 때 차이: Steering 없이 "Lambda 함수 만들어줘"를 프롬프트하면 일반적인 Node.js 패턴 + PublicAccess 설정된 S3 버킷이 나와요. Steering 있으면 ARM64, 프라이빗 서브넷, KMS 암호화가 자동 적용돼요. 매번 프롬프트에 규칙을 붙여 쓰지 않아도 돼요.

보안 팀용 Steering (Always 포함)

<!-- .kiro/steering/security.md -->
---
inclusion: always
---

## 보안 요구사항 (전체 적용)

### 절대 생성 금지
- API 키, 시크릿을 소스 코드에 하드코딩
- 퍼블릭 접근이 가능한 스토리지 리소스
- 인증 없는 API 엔드포인트

### 의존성
- npm 패키지 추가 시 반드시 npm audit 통과 여부 명시
- LICENSE 파일 확인 후 사용 가능 여부 판단

### 로깅
- PII(개인식별정보) 로그 출력 금지
- 에러 로그에 스택 트레이스 프로덕션 환경 노출 금지

실전 3 — AWS 네이티브 통합 실전

Kiro의 가장 큰 차별화는 AWS 서비스와의 네이티브 통합이에요.

Lambda + CDK 네이티브 이해

// Kiro에 프롬프트: "주문 처리 Lambda 함수 추가해줘"
// → Steering의 CDK 컨벤션 자동 적용

// Kiro가 생성하는 코드 (steering 반영)
export class OrderProcessingStack extends Stack {
  constructor(scope: Construct, id: string, props: StackProps) {
    super(scope, id, props);

    // ARM64 + 프라이빗 서브넷 + KMS — Steering에서 자동 적용
    const orderHandler = new NodejsFunction(this, 'OrderHandler', {
      runtime: Runtime.NODEJS_22_X,
      architecture: Architecture.ARM_64,   // ← Steering: ARM64 기본
      memorySize: 512,                      // ← Steering: 최소 512MB
      timeout: Duration.seconds(30),        // ← Steering: 타임아웃 30초
      vpc: props.vpc,
      vpcSubnets: { subnetType: SubnetType.PRIVATE_WITH_EGRESS },
      environment: {
        // 하드코딩 없음 — SSM 참조로 자동 처리
        DB_SECRET_ARN: StringParameter.valueForStringParameter(
          this, '/prod/db/secret-arn'
        ),
      },
      // KMS 암호화 자동 적용
      environmentEncryption: props.kmsKey,
    });
  }
}

CodeCatalyst 통합

Kiro ↔ CodeCatalyst 연동 시:

→ CodeCatalyst 이슈 → Kiro Spec 자동 생성
→ Spec 완료 → CodeCatalyst PR 자동 생성
→ PR 리뷰 코멘트 → Kiro 에이전트 자동 수정
→ CodeCatalyst 워크플로우 → Kiro Hooks 트리거 연동

실무 패턴:
CodeCatalyst 이슈 #234 "결제 실패 시 재시도 로직 추가"
    ↓ Kiro 자동 감지
.kiro/specs/payment-retry/requirements.md 생성
    ↓ 요구사항 승인
태스크 구현 → 테스트 → PR 생성 → CodeCatalyst 이슈 자동 Close

멀티 AWS 계정 격리 패턴

AWS Organization
    ├── Client A 계정
    │   ├── .kiro/ (Client A 전용 Steering)
    │   ├── CodeCatalyst 레포
    │   └── Bedrock 접근 (us-east-1)
    │
    ├── Client B 계정
    │   ├── .kiro/ (Client B 전용 Steering)
    │   ├── CodeCatalyst 레포
    │   └── Bedrock 접근 (us-east-1)
    │
    └── Shared Services 계정
        ├── IAM Identity Center (모든 Kiro 로그인)
        └── 통합 결제

→ 계정 경계로 클라이언트 IP, Secrets, Bedrock 비용 격리
→ 컨벤션이 아니라 IAM이 강제

실전 4 — Cursor vs Claude Code vs Kiro 선택 기준

┌─────────────┬──────────────┬──────────────┬──────────────┐
│             │   Cursor     │ Claude Code  │    Kiro      │
├─────────────┼──────────────┼──────────────┼──────────────┤
│ 가격        │ $20/월       │ $20/월~      │ $19/월       │
│ 철학        │ 빠른 반복    │ 자율 에이전트│ 스펙 기반    │
│ 컨텍스트    │ 전체 레포    │ 200K~1M토큰  │ Spec+Steering│
│ AWS 통합    │ 없음         │ MCP 설정     │ 네이티브     │
│ 팀 규칙     │ .cursorrules │ CLAUDE.md    │ Steering     │
│ 문서화      │ 없음         │ 없음         │ Spec 자동    │
│ GovCloud    │ ❌           │ ❌           │ ✅           │
│ SWE-bench   │ 공개 안 함   │ 87.6%        │ 공개 안 함   │
└─────────────┴──────────────┴──────────────┴──────────────┘

Kiro가 맞는 상황

✅ AWS 스택 중심 팀 (Lambda, CDK, CloudFormation, CodeCatalyst)
✅ 팀 3명 이상, 컨벤션 강제가 필요한 환경
✅ 규제 산업 (금융, 헬스케어) — GovCloud, FedRAMP 요건
✅ 복잡한 기능 — 요구사항 추적, 설계 문서가 필수인 프로젝트
✅ Q Developer 현 사용자 (2027.04 지원 종료 전 전환 필수)

Claude Code가 맞는 상황

✅ SWE-bench 87.6% — 복잡한 멀티파일 자율 리팩토링
✅ 클라우드 무관 (AWS/GCP/Azure 혼합 환경)
✅ CLAUDE.md로 프로젝트 에이전트 동작 정밀 제어
✅ 터미널 기반 CI/CD 파이프라인 통합
✅ 대형 코드베이스 자율 이해 + 구현

Cursor가 맞는 상황

✅ 빠른 이터레이션, 프로토타이핑 위주
✅ AWS 외 환경 (GCP, Azure, 온프레미스)
✅ IDE 내 인라인 편집 중심 워크플로우
✅ 솔로 개발자, 소규모 팀

2026년 현실적인 조합 패턴

대형 AWS 팀:
→ Kiro: 복잡한 기능 스펙 작성 + 팀 컨벤션 강제
→ Claude Code: 아키텍처 결정, 대형 리팩토링
→ Cursor: 일상 인라인 편집, 빠른 수정

AWS 없는 팀:
→ Claude Code: 복잡한 자율 태스크
→ Cursor: 일상 편집
→ Copilot: GitHub 이슈 → PR 자동화

✅ 결론

Steering은 CLAUDE.md의 AWS 버전이에요. Always/Conditional/Manual 세 가지 포함 방식으로 인터랙션 유형마다 다른 컨텍스트를 주입할 수 있어요. CDK 파일 작업 시에만 Lambda 규칙이 들어오는 Conditional 설정이 실무에서 특히 유용해요.

Kiro의 진짜 강점은 AWS 생태계 안에 있어요. CodeCatalyst 이슈 → Spec → PR 파이프라인, IAM 멀티계정 격리, GovCloud 지원은 다른 AI IDE가 따라올 수 없는 영역이에요.

AWS 생태계 밖에선 Kiro의 강점이 절반 이상 사라져요. Bedrock·CDK·CodeCatalyst 통합이 핵심 가치인데, GCP·Azure 팀은 이 이점을 못 살리고 $19/월을 쓰는 셈이에요.

Bedrock 비용을 별도로 모니터링해야 해요. Kiro의 기본 모델 라우팅은 편리하지만, 팀 규모가 커지면 Bedrock 청구가 예상을 초과할 수 있어요. 프로젝트별 Bedrock 비용 알림 설정을 권장해요.


관련 글


 

반응형