【发布时间】:2021-04-13 01:54:51
【问题描述】:
我有一个 AWS API 网关 websocket lambda 实现。我已将自定义域连接到 API 网关。我能够很好地连接和断开连接。但是当我尝试使用 AWS.ApiGatewayManagementApi 发布消息时,自定义域名会导致问题。
我正在使用 parms 构建端点,如下所示:
const apigwManagementApi = new AWS.ApiGatewayManagementApi({
apiVersion: '2018-11-29',
endpoint: event.requestContext.domainName + '/' + event.requestContext.stage
});
然后调用如下:
await apigwManagementApi.postToConnection({ ConnectionId: connectionId, Data: postData }).promise();
这导致了如下错误:
2021-01-07T09:56:12.751Z 846f4674-0ed9-422b-8b35-64f0c43a10de INFO NotFoundException: No method found matching route test/@connections/YxcdBcOkrPECHwA= for http method POST.
at Object.extractError (/var/runtime/node_modules/aws-sdk/lib/protocol/json.js:52:27)
at Request.extractError (/var/runtime/node_modules/aws-sdk/lib/protocol/rest_json.js:55:8)
at Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:106:20)
at Request.emit (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:78:10)
at Request.emit (/var/runtime/node_modules/aws-sdk/lib/request.js:688:14)
at Request.transition (/var/runtime/node_modules/aws-sdk/lib/request.js:22:10)
at AcceptorStateMachine.runTo (/var/runtime/node_modules/aws-sdk/lib/state_machine.js:14:12)
at /var/runtime/node_modules/aws-sdk/lib/state_machine.js:26:10
at Request.<anonymous> (/var/runtime/node_modules/aws-sdk/lib/request.js:38:9)
at Request.<anonymous> (/var/runtime/node_modules/aws-sdk/lib/request.js:690:12) {
code: 'NotFoundException',
time: 2021-01-07T09:56:12.712Z,
requestId: '43b744b9-25ef-4a15-82ed-6ecb13062208',
statusCode: 404,
retryable: false,
retryDelay: 64.57971601177839
}
然后我将代码更改为使用 AWS 网关端点的硬编码值,类似于 this(实际 id ogjkythg67m 因隐私而更改):
const apigwManagementApi = new AWS.ApiGatewayManagementApi({
apiVersion: '2018-11-29',
endpoint: "https://ogjkythg67m.execute-api.eu-west-2.amazonaws.com/test"
});
此时一切都开始工作了。
因此,在使用自定义域时,我似乎无法使用 event.requestContext.domainName + '/' + event.requestContext.stage 变量来构建我的端点。
我真的不想将端点硬编码到代码中。有没有办法配置我的 AWS API 网关或 lambda 定义以利用自定义域名,或以其他方式规避问题?
谢谢。
【问题讨论】:
标签: amazon-web-services websocket aws-lambda aws-api-gateway