使用 IAM 授權控制對 WebSocket API 的存取 - Amazon API Gateway

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 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 使用的 ARN 格式與 REST API 相同:

    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/*" ] } ] }