【发布时间】:2021-04-15 06:51:06
【问题描述】:
我创建了一个内部私有 api 并希望从 ec2 实例访问它。 为此,我创建了一个端点并启用了私有 dns。 我已应用允许任何人访问的资源策略(现在进行测试)。
当我从 ec2 实例访问我的 api 时,它给出了以下错误
The remote name could not be resolved:
启用私有 dns:true
私有 DNS 名称:*.execute-api.REGION.amazonaws.com
资源政策:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "execute-api:Invoke",
"Resource": "arn:aws:execute-api:REGION:ACC_ID:REST_API_ID/*",
"Condition": {
"IpAddress": {
"aws:SourceIp": [
"172.31.0.0/16",
"10.192.0.0/16"
]
}
}
}
]
}
是的,我在更改资源策略后部署了 api。
VPC Endpoint 的安全组(出站规则):
Type - All traffic
Protocol - All
Port range - All
Destination - 0.0.0.0/0
Description - optional
如何访问私有 api?
我正在使用 powershell Invoke-RestMethod。当我用公共 api 替换 url 时,它工作正常(脚本中没有问题)。私有 api 只给出错误。
实例和端点是否在同一个 vpc 中?
是的,两个屏幕都显示相同的 vpc id。
注意:我创建了 2 个 vpc 和 2 个端点。一个说默认-是,另一个说默认-否。
连接到 ec2 和端点的 VPC 是具有 default-no 的 VPC,我正在尝试使用它。
DNS 主机名和 DNS 支持?
知道我错过了什么吗?
【问题讨论】:
-
你能说得更具体点吗? API 资源策略到底是什么? VPC端点的安全组是什么?您如何尝试准确访问 api?在对 api 进行任何更改后,您是否部署了阶段?实例和端点是否在同一个 vpc 中?
-
@Marcin 我已经用您要求的详细信息更新了我的问题,请验证
-
“当我用公共 api 替换 url 时,它工作正常” - 你是什么意思?如果您为端点启用了私有 DNS,则只需使用公共端点。您如何以不同的方式调用私有 api?你有例子吗?
-
我在另一个帐户中有一个公共 api,我可以使用 powershell 脚本从不同的帐户 ec2 实例访问它。讨论这一点的重点是调用者脚本工作正常。使用 api 的 powershell 脚本没有问题
-
您是否将 VPCE-id 与您的 API 相关联?
标签: amazon-web-services powershell amazon-ec2 aws-api-gateway amazon-vpc