利用 IAM 授权来控制对 WebSocket API 的访问 - Amazon API Gateway
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

利用 IAM 授权来控制对 WebSocket API 的访问

WebSocket API 中的 IAM 授权类似于 REST API 的授权,但有以下例外情况:

  • 除了现有操作(execute-apiManageConnections)之外,Invoke 操作也支持 InvalidateCacheManageConnections 控制对 @connections API 的访问。

  • WebSocket 路由使用不同的 ARN 格式:

    arn:aws:execute-api:region:account-id:api-id/stage-name/route-key
  • @connections API 使用与 REST API 相同的 ARN 格式:

    arn:aws:execute-api:region:account-id:api-id/stage-name/POST/@connections
重要

在使用 IAM 授权时,必须使用签名版本 4 (SigV4) 对请求进行签名。

例如,您可以为客户端设置以下策略。此示例能让每个人为 Invoke 阶段中除密钥路由之外的所有路由发送消息 (prod),并针对所有阶段阻止每个人将消息发送回连接的客户端 (ManageConnections)。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "execute-api:Invoke" ], "Resource": [ "arn:aws:execute-api:us-east-1:account-id:api-id/prod/*" ] }, { "Effect": "Deny", "Action": [ "execute-api:Invoke" ], "Resource": [ "arn:aws:execute-api:us-east-1:account-id:api-id/prod/secret" ] }, { "Effect": "Deny", "Action": [ "execute-api:ManageConnections" ], "Resource": [ "arn:aws:execute-api:us-east-1:account-id:api-id/*" ] } ] }