C# AWS Api网关Web套接字发布到$default禁止
我试图让我的lambda发布到我的awswebsocketapi,我在帖子上收到了一条禁止的错误消息。我有以下设置:C# AWS Api网关Web套接字发布到$default禁止,c#,amazon-web-services,websocket,aws-api-gateway,C#,Amazon Web Services,Websocket,Aws Api Gateway,我试图让我的lambda发布到我的awswebsocketapi,我在帖子上收到了一条禁止的错误消息。我有以下设置: 使用proxy+配置的公共api,指向处理所有路由的lambda 调用上述lambda的公共web套接字api 我正在测试连接性,我的lambda正确地从web套接字api接收$connect、$default和$disconnect事件。我试图在打开时将测试消息发送回客户端,但在Post命令中收到禁止的错误 我的代码在这里: public async Task<I
public async Task<ITrWebsocketsContext> SendMessageAsync(UserDefinition userDefinition, string message)
{
var connectionIds = GetConnectionIds(userDefinition);
if (connectionIds != null)
{
foreach (var connectionId in connectionIds)
{
try
{
Console.WriteLine($"Sending to {connectionId}");
var response = await PostAsync($"https://{suppliedServiceUrl}/@connections/{connectionId}", message);
Console.WriteLine($"Sent to {connectionId}: {response}");
}
catch (ForbiddenException ex)
{
Console.WriteLine($"Exception: {SerialisableException.Serialise(ex)}");
}
catch (AmazonServiceException ex)
{
Console.WriteLine($"Exception: {SerialisableException.Serialise(ex)}");
RemoveConnection(connectionId);
}
catch (Exception ex)
{
throw;
}
}
}
return this;
}
public async Task sendmagesasync(UserDefinition UserDefinition,string message)
{
var connectionIds=GetConnectionIds(userDefinition);
if(connectionId!=null)
{
foreach(connectionId中的变量connectionId)
{
尝试
{
WriteLine($“发送到{connectionId}”);
var response=wait PostAsync($“https://{suppliedServiceUrl}/@connections/{connectionId}”,message);
WriteLine($“发送到{connectionId}:{response}”);
}
捕获(禁止例外)
{
Console.WriteLine($“异常:{SerialisableException.Serialise(ex)}”);
}
捕获(AmazonServiceException ex)
{
Console.WriteLine($“异常:{SerialisableException.Serialise(ex)}”);
移除连接(connectionId);
}
捕获(例外情况除外)
{
投掷;
}
}
}
归还这个;
}
对PostAsync的调用失败
我认为这是一个专有网络问题,因为Lambda是专有网络的幕后操纵者。VPC配置有2个专用子网和1个公用子网,以及一个Internet网关。lambda可以访问互联网,因此VPC似乎设置正确。我还有一个端点指向我所在区域的执行api
去哪里有什么想法吗?我是否需要为我的lambda配置一个VPC链接以连接到我的AWS web Socket api?看起来您的websocket api中默认路由中的执行角色没有权限执行您选择的资源。@Ali,这是我假设的,但是调用post命令的lambda具有执行api:*针对InvalidateCache、Invoke和ManageConnections访问所有资源。我遇到的另一个原因是lambda执行的角色也应该具有访问VPC的权限。