API网关websocket IAM授权程序
我已将我的API网关websocket IAM授权程序,websocket,aws-api-gateway,serverless,Websocket,Aws Api Gateway,Serverless,我已将我的$connectwebsocket路由的身份验证配置为AWS_IAM,但是,我仍然可以建立连接,而无需使用凭据对url进行签名。我预计,如果url没有使用有效凭据签名,那么握手应该会失败,但似乎IAM授权人没有被调用。我尝试使用无效凭据对url进行签名,但它只能成功连接 还有其他需要的配置吗?经过长时间的尝试,我终于找到了问题的答案,让IAM授权程序为我的websocket api工作。我试图手动创建一个自定义lambda授权程序,并将其应用于$connect路由,并部署了api。正如
$connect
websocket路由的身份验证配置为AWS_IAM
,但是,我仍然可以建立连接,而无需使用凭据对url进行签名。我预计,如果url没有使用有效凭据签名,那么握手应该会失败,但似乎IAM授权人没有被调用。我尝试使用无效凭据对url进行签名,但它只能成功连接
还有其他需要的配置吗?经过长时间的尝试,我终于找到了问题的答案,让IAM授权程序为我的websocket api工作。我试图手动创建一个自定义lambda授权程序,并将其应用于
$connect
路由,并部署了api。正如预期的那样,定制授权人工作了。我把它改回了AWS_IAM
authorizer,再次在控制台中手动部署了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中的更新。我不是百分之百确定这一点,所以任何其他想法都是受欢迎的