如何在LocalStack中创建API Gateway并跳转至本地项目(无需Lambda)
无需Lambda!在LocalStack中配置API Gateway绑定自定义后端的步骤
其实你已经通过aws apigateway create-rest-api命令成功创建了API Gateway,接下来只需要完成资源配置、方法绑定和部署这几步,就能把请求转发到你的项目服务:
第一步:获取必要的ID信息
你已经执行过get-resources命令,从返回结果里找到两个关键ID:rest-api-id:就是你命令里用的8A-Z04959201- 根资源ID(
id字段,对应path为/的那条记录)
第二步:创建API子资源(可选但推荐)
如果你想给API加个路径前缀(比如/api),执行以下命令替换占位符:aws --endpoint-url=http://localhost:4567 apigateway create-resource \ --rest-api-id YOUR_REST_API_ID \ --parent-id ROOT_RESOURCE_ID \ --path-part "api"执行后会返回这个子资源的ID,记下来后续要用。
第三步:添加HTTP方法并绑定到你的项目
先给目标资源添加允许的HTTP方法(以GET为例):aws --endpoint-url=http://localhost:4567 apigateway put-method \ --rest-api-id YOUR_REST_API_ID \ --resource-id TARGET_RESOURCE_ID \ # 可以是根资源ID或刚创建的子资源ID --http-method GET \ --authorization-type "NONE" # 关闭授权方便测试,生产环境按需调整然后配置集成,把请求转发到你的项目端点,这里用
HTTP_PROXY类型完全不需要Lambda:aws --endpoint-url=http://localhost:4567 apigateway put-integration \ --rest-api-id YOUR_REST_API_ID \ --resource-id TARGET_RESOURCE_ID \ --http-method GET \ --type HTTP_PROXY \ --integration-uri "http://your-local-service:port/your-api-path" # 替换成你项目的实际地址,比如http://localhost:3000/users第四步:部署API到指定阶段
最后把配置好的API部署到一个阶段(比如dev),这样才能对外访问:aws --endpoint-url=http://localhost:4567 apigateway create-deployment \ --rest-api-id YOUR_REST_API_ID \ --stage-name dev测试调用
现在你可以通过LocalStack的API Gateway地址访问,格式如下:http://localhost:4567/restapis/YOUR_REST_API_ID/dev/_user_request_/[your-resource-path]比如你创建了
/api子资源并绑定到http://localhost:3000/users,就可以用http://localhost:4567/restapis/8A-Z04959201/dev/_user_request_/api来访问,请求会自动转发到你的项目服务。
内容的提问来源于stack exchange,提问作者Cristal
相关产品推荐
相关产品推荐

