AWS開発×AI:CDK・SAM・CloudFormation生成

AIを活用すればAWS開発でのCDK・SAM・CloudFormation生成を効率化できます。実践的な活用方法を解説します。

AI初心者

AIを知りたい

AWSのインフラ構築をAIに手伝ってもらいたいんですが、CDKとSAMとCloudFormationのどれを使えばいいですか?

AIエンジニア

AIエンジニア

用途と好みに応じて選ぶのがベストですが、AIとの相性で言えばCDKが最も効率的です。TypeScript/Pythonのプログラミング言語で書けるため、AIのコード生成能力を最大限に活用できます。型補完が効くのでAIの生成結果の正確性も高くなります。

AI初心者

AIを知りたい

それぞれの違いを教えてください!

AIエンジニア

AIエンジニア

CDKはプログラミング言語でインフラを定義し、SAMはサーバーレスに特化した簡易テンプレート、CloudFormationはAWSネイティブのJSON/YAMLテンプレートです。AIの支援を受けながら、プロジェクトの特性に合った選択をしましょう。新規プロジェクトならCDK、Lambda中心ならSAM、既存資産があるならCloudFormationが基本方針です。

AWS開発×AIとは

AWS開発×AIとは、AIツールを活用してAWSクラウドインフラの構築・運用を効率化する手法です。CDK(Cloud Development Kit)、SAM(Serverless Application Model)、CloudFormationのテンプレート生成をAIが支援し、Lambda関数のコード生成、API Gatewayの設定、IAMポリシーの設計まで自動化できます。特にCDKはTypeScriptで記述できるため、AIコーディングツールとの親和性が高く、L2 Constructによる抽象化で少ないコード量で複雑なインフラを定義できます。

CDK・SAM・CloudFormation徹底比較

AI初心者

AIを知りたい

3つのツールの違いを詳しく見せてください!

AIエンジニア

AIエンジニア

主要な比較ポイントを整理しましょう。プロジェクトの規模やチームのスキルセットによって最適な選択が変わります。

項目 AWS CDK SAM CloudFormation
記述言語 TypeScript/Python/Java等 YAML JSON/YAML
抽象度 高い(L2/L3 Construct) 中(サーバーレス特化) 低い(生リソース定義)
AI生成精度 ★★★(コード補完が効く) ★★☆(YAML構文対応) ★★☆(冗長だが正確)
学習コスト 中(プログラミング知識必要) 低(サーバーレス限定) 高(全リソース理解必要)
ユースケース 大規模・汎用 Lambda中心アプリ 企業の既存資産
ローカルテスト CDK Synth + CDK Assert SAM Local(Lambda実行可) CFn Linter

AIによるCDK Construct生成とLambda開発

AI初心者

AIを知りたい

CDKでAIを使うとどんなことができるんですか?

AIエンジニア

AIエンジニア

AIに「API Gateway + Lambda + DynamoDBのサーバーレスAPIをCDKで作って。認証はCognitoで」と指示すると、スタック定義、Construct、Lambda関数コード、DynamoDBテーブル設計まで一括生成してくれます。CDKのL2 Constructを活用した簡潔なコードが出力されるのが特徴です。

AI初心者

AIを知りたい

Lambda関数のコードもAIが書いてくれるんですか?

AIエンジニア

AIエンジニア

はい。「DynamoDBからユーザー情報を取得するLambda関数をTypeScriptで。入力バリデーション、エラーハンドリング、ログ出力付きで」と指示すれば、完全な関数コードが生成されます。さらにCDKスタック内でのLambda定義、環境変数の設定、IAMロールの最小権限付与まで含めたコードを一度に生成できますよ。

// AIが生成するCDKスタック例
import * as cdk from "aws-cdk-lib";
import * as lambda from "aws-cdk-lib/aws-lambda-nodejs";
import * as apigw from "aws-cdk-lib/aws-apigateway";
import * as dynamodb from "aws-cdk-lib/aws-dynamodb";

export class ApiStack extends cdk.Stack {
  constructor(scope: cdk.App, id: string) {
    super(scope, id);
    const table = new dynamodb.Table(this, "Users", {
      partitionKey: { name: "id", type: dynamodb.AttributeType.STRING },
      billingMode: dynamodb.BillingMode.PAY_PER_REQUEST,
    });
    const fn = new lambda.NodejsFunction(this, "Handler", {
      entry: "lambda/users.ts",
      environment: { TABLE_NAME: table.tableName },
    });
    table.grantReadWriteData(fn);
    new apigw.LambdaRestApi(this, "Api", { handler: fn });
  }
}

実践的な構成パターンとベストプラクティス

AI初心者

AIを知りたい

よく使うAWSの構成パターンをAIに生成してもらえますか?

AIエンジニア

AIエンジニア

代表的なパターンをAIに依頼する際のプロンプト例と合わせて紹介します。これらのパターンはAIの学習データに豊富に含まれているため、高精度で生成可能です。

構成パターン 主要サービス AIへの指示例
サーバーレスAPI API GW + Lambda + DynamoDB 「CRUD APIをサーバーレスで構築して」
コンテナAPI ALB + ECS Fargate + RDS 「Fargateのコンテナサービスを作って」
静的サイト配信 S3 + CloudFront + Route53 「SPAの配信環境をCDKで作って」
非同期処理 SQS + Lambda + DLQ 「キューベースの非同期処理基盤を作って」
イベント駆動 EventBridge + Step Functions 「イベント駆動ワークフローを設計して」
データパイプライン Kinesis + Lambda + S3 + Athena 「リアルタイムデータ処理基盤を作って」

コスト最適化とセキュリティのAI支援

AI初心者

AIを知りたい

AWS開発でAIを使うときの注意点はありますか?

AIエンジニア

AIエンジニア

IAMポリシーの最小権限原則は必ず人間が確認してください。AIは動作を優先して広い権限を付与しがちです。また、CDKのcdk diffコマンドでデプロイ前に差分を確認する習慣も重要です。コスト面では、AIが生成した構成のランニングコストをAWS Pricing Calculatorで見積もることをおすすめします。

AI初心者

AIを知りたい

コスト削減のアドバイスもAIにもらえますか?

AIエンジニア

AIエンジニア

非常に有効です。「この構成の月額コストを見積もって、コスト削減のオプションを提案して」と依頼すると、Reserved Instances、Savings Plans、Spotインスタンスの活用、不要リソースの特定などを提案してくれます。特にLambdaのメモリ設定やDynamoDBのキャパシティモードの選択は、コストに大きく影響する部分なのでAIに相談する価値があります。

AWS開発タスク AI活用度 推奨ツール
CDKスタック生成 ★★★ Claude Code / Copilot
Lambda関数実装 ★★★ Claude Code
IAMポリシー設計 ★★☆ Claude Code(要レビュー)
コスト見積もり ★★☆ Claude + AWS Calculator
アーキテクチャ設計 ★★★ Claude Code
障害対応・運用 ★★☆ Claude + CloudWatch

まとめとして、AWS開発にAIを活用することで、CDK Constructの生成からLambda関数の実装、デプロイパイプラインの構築、コスト最適化まで大幅に効率化できます。特にCDKはTypeScriptで記述できるためAIコーディングツールとの親和性が高く、複雑なマルチサービス構成も自然言語の指示で生成可能です。SAMはサーバーレスに特化したシンプルな選択肢、CloudFormationは既存資産との互換性が強みです。プロジェクトの規模と特性に応じて最適なツールを選び、AIの力で効率的なクラウド開発を実現しましょう。IAMポリシーの確認とcdk diffによる事前チェックは必ず実施してください。

関連記事

AWS CDK (TypeScript) で Lambda + API Gateway を構築する例

// lib/ai-api-stack.ts
import * as cdk from 'aws-cdk-lib';
import * as lambda from 'aws-cdk-lib/aws-lambda';
import * as apigw from 'aws-cdk-lib/aws-apigateway';
import * as nodejs from 'aws-cdk-lib/aws-lambda-nodejs';
import { Construct } from 'constructs';

export class AiApiStack extends cdk.Stack {
  constructor(scope: Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    // Lambda関数(Bedrock呼び出し用)
    const aiHandler = new nodejs.NodejsFunction(this, 'AiHandler', {
      runtime: lambda.Runtime.NODEJS_20_X,
      entry: 'lambda/ai-handler.ts',
      handler: 'handler',
      timeout: cdk.Duration.seconds(30),
      memorySize: 512,
      environment: {
        MODEL_ID: 'anthropic.claude-3-haiku-20240307-v1:0',
      },
      bundling: {
        minify: true,
        sourceMap: true,
      },
    });

    // API Gateway REST API
    const api = new apigw.RestApi(this, 'AiApi', {
      restApiName: 'AI Inference API',
      deployOptions: { stageName: 'prod' },
      defaultCorsPreflightOptions: {
        allowOrigins: apigw.Cors.ALL_ORIGINS,
        allowMethods: ['POST', 'OPTIONS'],
      },
    });

    // POST /predict エンドポイント
    const predict = api.root.addResource('predict');
    predict.addMethod('POST', new apigw.LambdaIntegration(aiHandler));

    new cdk.CfnOutput(this, 'ApiUrl', { value: api.url });
  }
}

※ cdk deploy 一発で Lambda・API Gateway・IAMロールが自動作成されます。CDK は CloudFormation テンプレートを自動生成するため、IaC の恩恵を TypeScript の型安全性とともに受けられます。