我使用跨帳戶 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 資源政策範例