如何在 Localstack 中为 API 网关提供永久 url

Kon*_*nia 5 amazon-web-services aws-lambda aws-api-gateway localstack

我正在使用 localstack 进行本地 AWS 开发。lambda 通过 API 网关公开。每当 localstack 重新启动时(或者当它在另一台机器上第一次启动时),我必须再次创建该网关,并且它将有一个新生成的 ID。

就像这个控制台输出:

endpoints:
  http://localhost:4566/restapis/0ulz03h9kk/local/_user_request_
Run Code Online (Sandbox Code Playgroud)

我怎样才能让这个 URL 看起来很漂亮,这样我就可以有一个简单的前端启动脚本?或者至少,有没有办法使该 id0ulz03h9kk硬编码?

小智 1

您可以使用 localstack 中 api-gateway 设置上的标签创建自定义 API ID。

根据API Gateway LocalStack 文档

您可以在资源创建期间使用custom_id标签将自定义 ID 分配给 API Gateway REST 和 HTTP API 。这对于确保 API 的静态端点 URL 非常有用,从而简化测试以及与其他服务的集成。

要将自定义 ID 分配给 API Gateway REST API,请使用带有参数的 create-rest-api 命令tags={"_custom_id_":"myid123"}。以下示例将自定义 ID“myid123”分配给 API:

awslocal apigateway create-rest-api --name my-api --tags '{"_custom_id_":"myid123"}'
{
    "id": "myid123",
    ....
}
Run Code Online (Sandbox Code Playgroud)

您还可以配置协议类型,可能的值为 HTTP 和WEBSOCKET:

awslocal apigatewayv2 create-api \
  --name=my-api \
  --protocol-type=HTTP --tags="_custom_id_=my-api"                                                                                                                   
{
    "ApiEndpoint": "my-api.execute-api.localhost.localstack.cloud:4566",
    "ApiId": "my-api",
    "Name": "my-api",
    "ProtocolType": "HTTP",
    "Tags": {
        "_custom_id_": "my-api"
    }
}
Run Code Online (Sandbox Code Playgroud)