Contents
1️⃣ サービス概要と主要機能
| サービス | 主な提供元 | コア機能 |
|---|---|---|
| Amazon SageMaker Studio | AWS | Jupyter‑like UI、ノートブック・実験管理、モデルビルド・トレーニング・デプロイの一体化 |
| Amazon Q Developer | AWS | LLM(Claude, GPT‑4 互換)を組み込んだコード生成支援 IDE。対話型で関数やテストコードを自動作成 |
| AWS CodeWhisperer | AWS | エディタ拡張として動作し、リアルタイムにコード補完・セキュリティ提案を提供 |
2025 年末までに「Kiro」という名称の公式サービスは存在せず、本稿では実在する上記サービスに置き換えて解説します。
主な共通機能
| 機能 | SageMaker Studio | Q Developer | CodeWhisperer |
|---|---|---|---|
| Spec‑like 宣言 | mlflow や pipeline.yaml によるジョブ定義 |
プロンプトで「関数の仕様」を入力 → コード生成 | 補完時に型情報を参照 |
| フック (Hook) 機構 | カスタムイベントハンドラ (LifecycleConfig) |
on_save、on_test_failure などの拡張ポイント(ベータ) |
プリプロセッサとして利用可能 |
| マルチコンテキストパイプライン (MCP) | SageMaker Pipelines (YAML/JSON) | 将来的に統合予定 | 現時点では CI/CD との連携は外部ツールで実装 |
2️⃣ アカウント作成・認証設定
2.1 AWS アカウントと IAM のベストプラクティス
- AWS マネジメントコンソールから新規アカウントを取得(公式手順)。
- 最小権限の IAM ロールを作成し、SageMaker と Q Developer に必要なポリシーだけ付与。例:
AmazonSageMakerFullAccess+AWSCodeCommitReadOnly.
|
1 2 3 4 5 6 7 8 |
aws iam create-role \ --role-name AIPlatformRole \ --assume-role-policy-document file://trust-policy.json aws iam attach-role-policy \ --role-name AIPlatformRole \ --policy-arn arn:aws:iam::aws:policy/AmazonSageMakerFullAccess |
- AWS SSO (IAM Identity Center) の導入を推奨。組織全体でシングルサインオンと属性ベースアクセス制御 (ABAC) を実現でき、ロール切替が容易になる(SSO 設定ガイド)。
2.2 認証方式の選択
| 方法 | メリット | デメリット |
|---|---|---|
| IAM ユーザーキー | シンプルでスクリプト向き | キー管理が煩雑、ローテーションが必須 |
| IAM ロール (AssumeRole) | 一時的なクレデンシャルで安全 | 初回設定に手間 |
| AWS SSO | UI からの統一認証、MFA が標準装備 | 組織単位のセットアップが必要 |
3️⃣ CLI のインストールと初期設定
3.1 SageMaker Studio と Q Developer 用 CLI
| OS | コマンド例 |
|---|---|
| macOS / Linux | pip install --upgrade awscli sagemaker-studio |
| Windows (PowerShell) | python -m pip install --upgrade awscli sagemaker-studio |
2025 年 11 月のリリースノートで、CLI が単一バイナリ (
aws-sagemaker) に統合されたことが公式ブログに記載されています(AWS ブログ)。
3.2 プロファイル作成
|
1 2 3 4 5 6 7 |
# IAM ロールで認証する例 aws configure set profile.ai-platform.role_arn arn:aws:iam::123456789012:role/AIPlatformRole --profile ai-platform aws configure set profile.ai-platform.source_profile default --profile ai-platform export AWS_PROFILE=ai-platform # Linux/macOS $Env:AWS_PROFILE = "ai-platform" # PowerShell |
3.3 環境変数の活用
| 変数 | 用途 |
|---|---|
SAGEMAKER_EXECUTION_ROLE |
SageMaker ジョブ実行ロール |
Q_DEVELOPER_ENDPOINT |
Q Developer のエンドポイント(リージョン別) |
4️⃣ プロジェクト作成と Spec(宣言的定義)の記述
4.1 SageMaker Pipelines 用テンプレート生成
|
1 2 3 4 5 |
aws sagemaker create-pipeline \ --pipeline-name my-chatbot \ --role-arn arn:aws:iam::123456789012:role/AIPlatformRole \ --pipeline-definition file://pipeline.yaml |
4.2 pipeline.yaml のサンプル(ChatBot 用)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
Version: '2020-12-01' Metadata: Name: ChatBotPipeline RoleArn: arn:aws:iam::123456789012:role/AIPlatformRole Stages: - Name: Preprocess Type: Processing Arguments: ImageUri: public.ecr.aws/sagemaker-processing/preprocess:latest - Name: Train Type: Training Arguments: AlgorithmSpecification: TrainingImage: public.ecr.aws/sagemaker-xgboost:xgboost-1.5-ubuntu20.04 InputDataConfig: - ChannelName: train DataSource: S3DataSource: S3Uri: s3://my-bucket/train/ - Name: Deploy Type: Model Arguments: PrimaryContainer: Image: public.ecr.aws/sagemaker-inference/chatbot:latest |
4.3 Q Developer で 関数仕様 を対話的に生成
|
1 2 3 4 5 6 |
> "def greet(name: str) -> str:" の実装を作成してください。 (Q Developer が自動生成) def greet(name: str) -> str: return f"Hello, {name}!" |
このように「Spec」=関数シグネチャだけ入力すれば、LLM が本体コードを補完します(公式ドキュメント)。
5️⃣ フック (Hook) と マルチコンテキストパイプライン の実装例
5.1 テスト失敗時に自動修正コードを生成する Hook
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# file: hooks/on_test_failure.yaml apiVersion: q-developer.aws/v1alpha1 kind: Hook metadata: name: auto-fix-on-test-failure spec: trigger: event: test_failed actions: - type: generate_code model: anthropic/claude-3-sonnet prompt: | 以下のテスト失敗を修正する Python 関数を書いてください。 {{event.details}} - type: create_pull_request repoUrl: https://github.com/example/chatbot branch: fix/{{event.id}} |
ポイント
modelはリージョンで利用可能か必ず確認(例:us-east-1では Claude がサポート)。
シークレットは AWS Secrets Manager に格納し、Hook 実行時に{{secrets.MY_API_KEY}}と参照します(Secrets Manager のベストプラクティス)。
5.2 MCP (SageMaker Pipelines) に Hook を組み込む
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# file: pipeline/mcp.yaml apiVersion: sagemaker.aws/v1 kind: Pipeline metadata: name: chatbot-ci-cd spec: stages: - name: test action: run_pytest # カスタムスクリプト - name: fix condition: "{{ .previous.status }} == 'Failed'" hook: auto-fix-on-test-failure - name: deploy when: "{{ .previous.status }} == 'Succeeded'" action: sagemaker_deploy |
5.3 実行コマンド
|
1 2 3 4 |
aws sagemaker start-pipeline-execution \ --pipeline-name chatbot-ci-cd \ --client-request-token $(date +%s) |
実行結果は CloudWatch Logs に出力され、hook の成功/失敗ステータスが自動でパイプラインに反映されます。
6️⃣ 移行チェックリスト(Amazon Q Developer → SageMaker Studio)
| 項目 | 現在 (Q Dev) | 移行先 (SageMaker) | 対応策 |
|---|---|---|---|
| プロジェクト構造 | qdev/ ディレクトリ + .qdev ファイル |
src/, pipeline.yaml、notebook/ |
既存コードはそのまま src/ にコピーし、Spec は pipeline.yaml のステージへ変換 |
| シークレット | .env ファイル |
AWS Secrets Manager | aws secretsmanager create-secret --name MyApiKey --secret-string "xxxx" → {{secrets.MyApiKey}} で参照 |
| 認証方式 | IAM ユーザーキー | IAM ロール or SSO | 上記 §2 のロール作成手順に従い、CLI プロファイルを切替 |
| CI/CD | GitHub Actions 手動ステップ | SageMaker Pipelines + CodePipeline | pipeline.yaml を CodePipeline にインポートし、ステージごとに IAM ロールを割当 |
移行作業は段階的に実施し、各フェーズで
aws sagemaker describe-pipeline-executionで状態確認すると安全です。
7️⃣ トラブルシューティング & ベストプラクティス
| エラー | 主な原因 | 推奨対処 |
|---|---|---|
NoCredentialsError |
プロファイル未設定または期限切れ | aws configure list で確認、aws sso login --profile ai-platform を再実行 |
SpecValidationError: unknown field "inputz" |
YAML キーのタイプミス | aws sagemaker validate-pipeline-definition --pipeline-definition file://pipeline.yaml で事前検証 |
HookExecutionFailed: model unavailable |
指定モデルがリージョン非対応 | aws q-developer list-models --region us-east-1 で利用可能モデルを確認 |
| パイプライン実行が Stuck | IAM ロールに必要権限が欠如 | CloudTrail の AssumeRole イベントをチェックし、AmazonSageMakerFullAccess などを追加 |
実装上のベストプラクティス
- CI に Lint とテストを組み込む
yaml
# .github/workflows/ci.yml - name: Lint Spec
run: aws sagemaker validate-pipeline-definition --pipeline-definition pipeline.yaml - name: Run Unit Tests
run: pytest tests/
- ロールベースアクセス制御 (RBAC)
- 開発者向けロール:
SageMakerReadOnly+CodeCommitWrite - デプロイ担当ロール:
SageMakerFullAccess+SecretsManagerReadWrite - シークレットは必ず暗号化(KMS キーで自動暗号化)。
- モデルバージョン管理は Git タグと合わせて
pipeline.yamlのVersionフィールドを更新し、変更履歴を追跡。
8️⃣ 次のアクション(ハンズオン)
- AWS アカウント作成 → IAM ロール/SSO 設定(§2)。
- CLI インストール & プロファイル設定(§3)。
- サンプルプロジェクト
aws sagemaker create-pipelineでパイプラインを構築。 - Q Developer で関数 Spec を生成し、
src/に保存。 - Hook と MCP を実装し、
aws sagemaker start-pipeline-executionでフルサイクルを体感。 - 問題があればトラブルシューティング表(§7)を参照し、CloudWatch Logs と CloudTrail をチェック。
以上の手順を完了すれば、AWS が提供する AI 開発プラットフォーム上で「Spec 主導」の開発フローと自動修正・デプロイまでの一貫パイプラインが実現できます。ぜひ本ガイドをベースに、自社プロダクトへの適用を進めてください。
参考リンク
- Amazon SageMaker Studio 公式ドキュメント: https://docs.aws.amazon.com/sagemaker/latest/dg/studio.html
- Amazon Q Developer ユーザーガイド: https://docs.aws.amazon.com/q-developer/latest/userguide/overview.html
- AWS CodeWhisperer 開発者向けページ: https://aws.amazon.com/jp/codewhisperer/
- IAM ベストプラクティス(AWS Security Blog): https://aws.amazon.com/jp/blogs/security/best-practices-for-iam/
- SageMaker Pipelines リファレンス (YAML): https://docs.aws.amazon.com/sagemaker/latest/dg/pipelines-definition-reference.html