クロスアカウントの AWS Identity and Access Management (IAM) エンティティ (ユーザーまたはロール) を使用して Amazon API Gateway API を呼び出したところ、"HTTP 403 Forbidden" エラーが発生しました。
解決策
REST API
API Gateway REST API にアクセスすために、API Gateway コンソールで API メソッドの IAM 認証を有効にします。次に、IAM ポリシーとリソースポリシーを使用して API のユーザーに対してアクセス許可を指定します。
クロスアカウント IAM エンティティが API を呼び出すことを許可されており、リソースポリシーでアクセスが許可されていることを確認します。
この例では、アカウント A 111111111 用の REST API で IAM 認証が有効になっています。User1 は、アカウント B 999999999 から呼び出しを試みます。アカウント B 内の User1 には、次の 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/*/*/*"
}
]
}
アカウント B の IAM ユーザーに、アカウント A でクロスアカウントアクセスを呼び出すことを許可するには、次に示すようにリソースポリシーを使用します。
{
"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 のリソースポリシー例