【问题标题】:Unable to Access AWS Private Api无法访问 AWS 私有 API
【发布时间】: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


【解决方案1】:

基于 cmets。

问题是由 VPCE 上的不正确的安全组安全组引起的。

解决方案是在 VPCE 上为 API 网关允许 443 个传入连接ingress

【讨论】:

    猜你喜欢
    • 2019-04-29
    • 1970-01-01
    • 1970-01-01
    • 2011-02-09
    • 1970-01-01
    • 2021-12-29
    • 2021-05-22
    • 2021-07-04
    • 2014-11-21
    相关资源
    最近更新 更多