API网关websocket IAM授权人



我将$connectwebsocket路由的auth配置为AWS_IAM,但是,我仍然可以在不使用凭据对url进行签名的情况下建立连接。我预计,如果url没有用有效凭据签名,握手应该会失败,但似乎没有调用IAM授权人。我尝试使用无效凭据对url进行签名,但它只是成功连接。

是否需要其他配置?

经过长时间的尝试,IAM授权程序为我的websocket api工作,我终于解决了问题。我尝试手动创建一个自定义lambda授权器,并将其应用于$connect路由并部署了api。不出所料,自定义授权人成功了。我把它改回AWS_IAMauthorizer,然后再次在控制台中手动部署api,它终于工作了。我认为原因是因为我必须通过AWS::ApiGatewayV2::Route资源配置$connect路由的授权器,如下所示:

// serverless@2.16.0
resources: {
Resources: {
SconnectWebsocketsRoute: {
Type: 'AWS::ApiGatewayV2::Route',
Properties: {
AuthorizationType: 'AWS_IAM'
}
}
}
}

每次我执行serverless deploy -s stage --force时,它都不认为这是配置中的新更改,因此它跳过了在Cloudformation中更新它。不过我不能百分之百肯定,所以欢迎其他想法。

最新更新