IAM 認証を使用して WebSocket API へのアクセスを制御する
WebSocket API の IAM 認証は REST API と似ていますが、次のような例外があります。
-
既存のアクション (
execute-api
、ManageConnections
) に加えて、Invoke
アクションはInvalidateCache
をサポートしています。ManageConnections
は @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 認証を使用する場合は、Signature Version 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
/*" ] } ] }