我使用跨账户 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 身份验证。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/*/*/*"
}
]
}
要允许账户 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 资源策略示例