Use Cases

Claude Code × AWS API Gateway सम्पूर्ण गाइड | REST API डिज़ाइन से डिप्लॉयमेंट ऑटोमेशन तक

Claude Code से AWS API Gateway एंडपॉइंट्स का स्वचालित डिज़ाइन। रिसोर्स डिज़ाइन, Lambda इंटीग्रेशन, ऑथेंटिकेशन और डिप्लॉयमेंट — Masa के व्यावसायिक अनुभव पर आधारित असली कोड के साथ।

API Gateway डिज़ाइन समय एक-तिहाई कैसे हुआ

मैं Masa हूँ, claudecode-lab.com चलाता हूँ। जब मैं फ्रीलांस बैकएंड डेवलपर था, AWS API Gateway डिज़ाइन और इम्प्लीमेंटेशन “थकाऊ, समय लेने वाले कामों” की सूची में सबसे ऊपर था। एंडपॉइंट स्पेसिफिकेशन दस्तावेज़ लिखना, उन्हें CloudFormation में ट्रांसलेट करना, Lambda इंटीग्रेशन को मैन्युअली वायर अप करना, CORS कॉन्फ़िगर करना — और हर बार वही गलतियाँ दोहराना।

बदलाव लगभग छह महीने पहले आया, जब मैंने Claude Code से कहा: “इस यूज़ केस के आधार पर REST API डिज़ाइन करो और CDK में इम्प्लीमेंट करो।” नतीजा उत्पादन के लिए आश्चर्यजनक रूप से तैयार था, और तब से API Gateway इम्प्लीमेंटेशन समय एक-तिहाई हो गया है।


Step 1: REST API एंडपॉइंट डिज़ाइन Claude Code को सौंपना

प्रॉम्प्ट उदाहरण

निम्नलिखित यूज़ केस के आधार पर REST API एंडपॉइंट स्पेसिफिकेशन बनाओ।

यूज़ केस:
- टास्क मैनेजमेंट ऐप (यूज़र प्रोजेक्ट और टास्क मैनेज करते हैं)
- यूज़र ऑथेंटिकेशन आवश्यक (Cognito)
- प्रोजेक्ट में मेंबर्स जोड़े जा सकते हैं
- टास्क में कमेंट और फ़ाइल अटैचमेंट सपोर्ट

आउटपुट फ़ॉर्मेट:
- एंडपॉइंट लिस्ट (मेथड, पाथ, विवरण)
- Request/Response JSON स्कीमा
- ऑथेंटिकेशन आवश्यक एंडपॉइंट्स को चिह्नित करो
- REST सिद्धांत उल्लंघन बताओ

Step 2: Lambda इंटीग्रेशन कॉन्फिग ऑटो-जेनरेशन

जेनरेट किया गया CDK स्टैक (अंश)

import * as cdk from "aws-cdk-lib";
import * as apigateway from "aws-cdk-lib/aws-apigateway";
import * as nodejs from "aws-cdk-lib/aws-lambda-nodejs";
import * as lambda from "aws-cdk-lib/aws-lambda";
import { Construct } from "constructs";

export class TaskApiStack extends cdk.Stack {
  public readonly api: apigateway.RestApi;

  constructor(scope: Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    // ===== Lambda फ़ंक्शन फ़ैक्ट्री =====
    const createLambda = (name: string, handler: string) =>
      new nodejs.NodejsFunction(this, name, {
        entry: `src/handlers/${handler}.ts`,
        handler: "handler",
        runtime: lambda.Runtime.NODEJS_20_X,
        timeout: cdk.Duration.seconds(29), // API Gateway की अधिकतम timeout
        memorySize: 256,
        bundling: {
          minify: true,
          sourceMap: true,
          externalModules: ["@aws-sdk/*"],
        },
      });

    const listProjectsFn = createLambda("ListProjects", "projects/list");
    const createProjectFn = createLambda("CreateProject", "projects/create");
    const getProjectFn = createLambda("GetProject", "projects/get");
    const updateProjectFn = createLambda("UpdateProject", "projects/update");
    const deleteProjectFn = createLambda("DeleteProject", "projects/delete");

    // ===== REST API परिभाषा =====
    this.api = new apigateway.RestApi(this, "TaskApi", {
      restApiName: "task-management-api",
      defaultCorsPreflightOptions: {
        allowOrigins: apigateway.Cors.ALL_ORIGINS, // प्रोडक्शन में सीमित करें
        allowMethods: apigateway.Cors.ALL_METHODS,
        allowHeaders: ["Content-Type", "Authorization", "X-Api-Key"],
      },
      deployOptions: {
        stageName: "v1",
        loggingLevel: apigateway.MethodLoggingLevel.INFO,
        dataTraceEnabled: false,
      },
    });

    // ===== रिसोर्स और मेथड्स =====
    const projects = this.api.root.addResource("projects");
    projects.addMethod("GET", new apigateway.LambdaIntegration(listProjectsFn));
    projects.addMethod("POST", new apigateway.LambdaIntegration(createProjectFn));

    const project = projects.addResource("{id}");
    project.addMethod("GET", new apigateway.LambdaIntegration(getProjectFn));
    project.addMethod("PUT", new apigateway.LambdaIntegration(updateProjectFn));
    project.addMethod("DELETE", new apigateway.LambdaIntegration(deleteProjectFn));

    new cdk.CfnOutput(this, "ApiUrl", {
      value: this.api.url,
      description: "API Gateway URL",
    });
  }
}

Step 3: ऑथेंटिकेशन (Cognito / Lambda Authorizer / API Key)

पैटर्न 1: Cognito User Pool Authorizer

const cognitoAuthorizer = new apigateway.CognitoUserPoolsAuthorizer(
  this,
  "CognitoAuthorizer",
  {
    cognitoUserPools: [userPool],
    identitySource: "method.request.header.Authorization",
    resultsCacheTtl: cdk.Duration.minutes(5),
  }
);

projects.addMethod("GET", new apigateway.LambdaIntegration(listProjectsFn), {
  authorizer: cognitoAuthorizer,
  authorizationType: apigateway.AuthorizationType.COGNITO,
});

पैटर्न 2: Lambda Authorizer

// src/handlers/auth/authorizer.ts
import * as jwt from "jsonwebtoken";

export const handler: APIGatewayTokenAuthorizerHandler = async (event) => {
  const token = event.authorizationToken.replace("Bearer ", "");

  try {
    const decoded = jwt.verify(token, process.env.JWT_SECRET!) as {
      sub: string; email: string; role: string;
    };
    return generatePolicy(decoded.sub, "Allow", event.methodArn, {
      userId: decoded.sub, email: decoded.email, role: decoded.role,
    });
  } catch {
    throw new Error("Unauthorized");
  }
};

Step 4: स्टेज मैनेजमेंट (dev/staging/prod)

# डेवलपमेंट एनवायरनमेंट
CDK_ENV=dev npx cdk deploy Api-dev --require-approval never

# स्टेजिंग
CDK_ENV=staging npx cdk deploy Api-staging

# प्रोडक्शन (पुष्टि के साथ)
CDK_ENV=prod npx cdk deploy Api-prod

4 सामान्य गलतियाँ

गलती 1: CORS कॉन्फ़िगरेशन की कमी

// ❌ अपर्याप्त
defaultCorsPreflightOptions: { allowOrigins: apigateway.Cors.ALL_ORIGINS }

// ✅ Lambda रिस्पॉन्स में CORS हेडर्स जोड़ें
return {
  statusCode: 200,
  headers: {
    "Content-Type": "application/json",
    "Access-Control-Allow-Origin": "https://example.com",
  },
  body: JSON.stringify(data),
};

गलती 2: Lambda Invoke Permission की कमी

listProjectsFn.addPermission("ApiGatewayInvoke", {
  principal: new iam.ServicePrincipal("apigateway.amazonaws.com"),
  sourceArn: this.api.arnForExecuteApi("GET", "/projects", "v1"),
});

गलती 3: 29-सेकंड Timeout सीमा

// ✅ असिंक्रोनस पैटर्न: तुरंत job ID रिटर्न करें
export const startExport: APIGatewayProxyHandler = async (event) => {
  const jobId = crypto.randomUUID();
  await sqsClient.send(new SendMessageCommand({
    QueueUrl: process.env.JOB_QUEUE_URL!,
    MessageBody: JSON.stringify({ jobId, params: JSON.parse(event.body!) }),
  }));
  return {
    statusCode: 202,
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({ jobId, status: "processing" }),
  };
};

गलती 4: Lambda में Request Body की कमी

// ✅ हमेशा proxy: true स्पष्ट रूप से सेट करें
project.addMethod("POST", new apigateway.LambdaIntegration(createProjectFn, { proxy: true }));

सारांश तालिका

कार्यClaude Code का महत्वकठिनाई
REST API डिज़ाइनयूज़ केस से स्पेक्स ऑटो-जेनरेटकम
Lambda Integration CDKप्रॉक्सी इंटीग्रेशन + रिसोर्स डेफिनिशनकम
Cognito AuthUser Pool, Authorizer कॉन्फिगमध्यम
Lambda AuthorizerJWT वैलिडेशन + पॉलिसी जेनरेशनमध्यम
स्टेज मैनेजमेंटएनव कॉन्फिग सेपरेशनमध्यम
असिंक्रोनस प्रोसेसिंगSQS इंटीग्रेशन + पोलिंग पैटर्नअधिक

संबंधित लेख

संदर्भ

#claude-code #aws #api-gateway #lambda #typescript #rest-api

अपने Claude Code वर्कफ़्लो को अगले स्तर पर ले जाएँ

Claude Code में तुरंत कॉपी-पेस्ट करने योग्य 50 आज़माए हुए प्रॉम्प्ट टेम्पलेट।

मुफ़्त

मुफ़्त PDF: 5 मिनट में Claude Code चीटशीट

बस अपना ईमेल दर्ज करें और हम तुरंत A4 एक-पृष्ठ चीटशीट PDF भेज देंगे।

हम आपकी व्यक्तिगत जानकारी की सुरक्षा करते हैं और स्पैम नहीं भेजते।

Masa

लेखक के बारे में

Masa

Claude Code का गहराई से उपयोग करने वाले इंजीनियर। claudecode-lab.com चलाते हैं, जो 10 भाषाओं में 2,000 से अधिक पेजों वाला टेक मीडिया है।

संबंधित लेख

Claude Code × Amazon Bedrock संपूर्ण गाइड | AWS पर Claude को प्रोडक्शन में चलाएं
Use Cases

Claude Code × Amazon Bedrock संपूर्ण गाइड | AWS पर Claude को प्रोडक्शन में चलाएं

Claude Code के साथ Amazon Bedrock उपयोग करने की संपूर्ण गाइड। IAM प्रमाणीकरण, स्ट्रीमिंग, Lambda इंटीग्रेशन, RAG कार्यान्वयन से लेकर लागत अनुकूलन तक — Masa के वास्तविक प्रोडक्शन अनुभव पर आधारित।

Claude Code × AWS CodePipeline/CodeBuild पूर्ण गाइड | CI/CD पाइपलाइन स्वचालित रूप से बनाएं
Use Cases

Claude Code × AWS CodePipeline/CodeBuild पूर्ण गाइड | CI/CD पाइपलाइन स्वचालित रूप से बनाएं

Claude Code का उपयोग करके AWS CodePipeline और CodeBuild के साथ CI/CD स्वचालित रूप से बनाएं। पाइपलाइन डिज़ाइन, buildspec.yml जेनरेशन, टेस्ट ऑटोमेशन और CDK इन्फ्रास्ट्रक्चर के व्यावहारिक कोड उदाहरण।

Claude Code × AWS CloudWatch सम्पूर्ण गाइड | लॉग विश्लेषण, अलार्म सेटअप और डैशबोर्ड ऑटोमेशन
Use Cases

Claude Code × AWS CloudWatch सम्पूर्ण गाइड | लॉग विश्लेषण, अलार्म सेटअप और डैशबोर्ड ऑटोमेशन

Claude Code से AWS CloudWatch को और प्रभावी बनाएं। लॉग पैटर्न विश्लेषण, स्वचालित अलार्म कॉन्फ़िगरेशन, मेट्रिक्स डैशबोर्ड और इंसिडेंट जांच के लिए व्यावहारिक कोड।