クロスアカウント AWS Identity and Access Management (IAM) エンティティ (ユーザーまたはロール) を使用して Amazon API Gateway API を呼び出しました。「HTTP 403 Forbidden」(HTTP 403 禁止) エラーが表示されます。
解決方法
REST API
API Gateway の REST API にアクセスするには、API Gateway コンソールで API メソッドの IAM 認証を有効にします。その後、IAM ポリシーとリソースポリシーを使用して、API ユーザーの許可を指定します。
クロスアカウントの IAM エンティティに API を呼び出すための許可があり、リソースポリシーでアクセスが許可されていることを確認してください。
この例では、アカウント A 111111111 の REST API で IAM 認証が有効になっています。ユーザー 1はアカウント B 999999999 から呼び出そうとします。アカウント B のユーザー 1 には、次の IAM ポリシーがアタッチされています。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"execute-api:Invoke",
"execute-api:ManageConnections"
],
"Resource": "arn:aws:execute-api:us-east-1:111111111:AB12CDEF34/*/*/*"
}
]
}
アカウント A のアカウント B の IAM ユーザーがクロスアカウントアクセスを呼び出せるようにするには、次のようなリソースポリシーを使用します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::999999999:user/User1"
},
"Action": "execute-api:Invoke",
"Resource": "arn:aws:execute-api:us-east-1:111111111:AB12CDEF34/stage/*/*"
}
]
}
詳細については、「API Gateway REST API の IAM 認証を有効にするにはどうすればよいですか?」を参照してください。
HTTP API
API Gateway HTTP API にアクセスするには、sts:AssumeRole API アクションを使用して HTTP API アカウントのロールを引き受けることができます。引き受けたロールは、別のアカウントで HTTP API を呼び出すために使用できる一時的なセキュリティ認証情報を提供します。
HTTP API の呼び出しに使用される一時的なセキュリティ認証情報が正しく、有効期限が切れていないことを確認してください。
詳細については、「API Gateway HTTP API 用にクロスアカウント IAM 認証を指定するにはどうすればよいですか?」を参照してください。
関連情報
API Gateway リソースポリシーの例