You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否通过AWS CDK或CLI创建含多资源及对应方法的API Gateway?

用AWS CDK或CLI创建带多资源与方法的API Gateway

完全不需要依赖AWS控制台,用AWS CDK或者CLI都可以实现这个需求,甚至CDK是更推荐的方式——基础设施即代码,支持版本控制、复用和自动化部署。

一、用AWS CDK实现(以TypeScript为例)

CDK提供了高层级的API Gateway构造,能快速定义资源和方法,还能直接关联Lambda等后端服务。示例代码如下:

import * as cdk from 'aws-cdk-lib';
import * as apigateway from 'aws-cdk-lib/aws-apigateway';
import { Construct } from 'constructs';

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

    // 创建基础Rest API
    const api = new apigateway.RestApi(this, 'MyMultiResourceApi', {
      restApiName: 'Multi-Resource API',
      description: 'API with multiple resources and methods'
    });

    // 第一个资源:/users,绑定GET方法(Mock集成示例,可替换为Lambda等后端)
    const usersResource = api.root.addResource('users');
    usersResource.addMethod('GET', new apigateway.MockIntegration({
      integrationResponses: [{ statusCode: '200' }],
      passthroughBehavior: apigateway.PassthroughBehavior.NEVER,
      requestTemplates: {
        'application/json': '{ "statusCode": 200 }'
      }
    }), {
      methodResponses: [{ statusCode: '200' }]
    });

    // 第二个资源:/users/{userId},绑定GET和PUT方法
    const userResource = usersResource.addResource('{userId}');
    // GET方法
    userResource.addMethod('GET', new apigateway.MockIntegration({
      integrationResponses: [{ statusCode: '200' }],
      passthroughBehavior: apigateway.PassthroughBehavior.NEVER,
      requestTemplates: {
        'application/json': '{ "statusCode": 200 }'
      }
    }), {
      methodResponses: [{ statusCode: '200' }]
    });
    // PUT方法
    userResource.addMethod('PUT', new apigateway.MockIntegration({
      integrationResponses: [{ statusCode: '200' }],
      passthroughBehavior: apigateway.PassthroughBehavior.NEVER,
      requestTemplates: {
        'application/json': '{ "statusCode": 200 }'
      }
    }), {
      methodResponses: [{ statusCode: '200' }]
    });
  }
}

这段代码会创建一个包含/users(GET)和/users/{userId}(GET、PUT)的API,你可以把Mock集成替换为LambdaIntegration、HttpIntegration等实际后端。

二、用AWS CLI实现

如果偏好命令行操作,也可以通过CLI分步创建:

  1. 创建Rest API
aws apigateway create-rest-api --name "MyMultiResourceApi" --description "API with multiple resources"

执行后会返回API的id和根资源的id(rootResourceId),记下来后续使用。

  1. 创建/users资源
aws apigateway create-resource --rest-api-id <你的API ID> --parent-id <根资源ID> --path-part "users"

保存返回的id作为usersResourceId。

  1. 创建/users/{userId}资源
aws apigateway create-resource --rest-api-id <你的API ID> --parent-id <usersResourceId> --path-part "{userId}"

保存返回的id作为userResourceId。

  1. 为/users添加GET方法
aws apigateway put-method --rest-api-id <你的API ID> --resource-id <usersResourceId> --http-method GET --authorization-type "NONE"
  1. 为/users/{userId}添加GET和PUT方法
# GET方法
aws apigateway put-method --rest-api-id <你的API ID> --resource-id <userResourceId> --http-method GET --authorization-type "NONE"

# PUT方法
aws apigateway put-method --rest-api-id <你的API ID> --resource-id <userResourceId> --http-method PUT --authorization-type "NONE"
  1. 设置方法集成(以Mock为例)
    以/users的GET方法为例:
aws apigateway put-integration --rest-api-id <你的API ID> --resource-id <usersResourceId> --http-method GET --type MOCK --request-templates '{"application/json": "{ \"statusCode\": 200 }"}'
  1. 部署API到环境
aws apigateway create-deployment --rest-api-id <你的API ID> --stage-name prod

完成后,API就可以通过https://<你的API ID>.execute-api.<区域>.amazonaws.com/prod访问了。

内容的提问来源于stack exchange,提问作者Karim Fayed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 05:40:40