当前位置: 首页 > 知识库问答 >
问题:

尝试连接到AWS网关专用API时出现UnknownHostException

陈高寒
2023-03-14

我这样做:

  • https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-private-apis.html
  • https://aws.amazon.com/blogs/compute/induction-amazon-api-gateway-private-endpoints/tutorials

以创建REST APIendpoint之间的私有链接。

基本上,我所做的步骤:

>

  • 将(以前工作的)边缘API转换为私有API(通过AWS API网关控制台)

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Deny",
                "Principal": "*",
                "Action": "execute-api:Invoke",
                "Resource": "arn:aws:execute-api:us-west-2:{aws-account-id}:{rest-api-id}/*/*/*",
                "Condition": {
                    "StringNotEquals": {
                        "aws:sourceVpce": "vpce-{endpoint}"
                    }
                }
            },
            {
                "Effect": "Allow",
                "Principal": "*",
                "Action": "execute-api:Invoke",
                "Resource": "arn:aws:execute-api:us-west-2:{aws-account-id}:{rest-api-id}/*/*/*"
            }
        ]
    }
    

    然后,我使用AWS SDK创建的Java客户机:https://AWS.amazon.com/sdk-for-java/来调用API,结果遇到了以下错误:

    com.amazonaws.SdkClientException: Unable to execute HTTP request: {rest-api-id}.execute-api.us-west-2.amazonaws.com
    
    ...
    
    Caused by: java.net.UnknownHostException: {rest-api-id}.execute-api.us-west-2.amazonaws.com
    

    当我使用邮递员时也发生了同样的问题。

    正如https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-private-api-test-invoke-url.html以及API网关控制台中所指出的,如果我启用了私有DNS,我应该能够使用URL调用API。

  • 共有1个答案

    翟鹏
    2023-03-14

    资源策略应该具有基于VPCendpoint的条件,而不是显示的基于VPC的条件。尝试将“aws:sourceVpce”:“vpce-{endpoint}”替换为“aws:sourceVpce”:“vpce-{endpoint}”,然后重新部署。

     类似资料:
    • 当我调用导出器url时:https:///restapis//stages//exports/swagger根据中记录的http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-export-api.html 我得到这个错误: 无法构建导出器:错误创建在类路径资源[com/amazonaws/背景板/控制服务/配

    • 我的VPC中有Public和Pvt子网。我在Pvt子网上有一些运行在EC2上的服务,需要通过外部/移动资源访问。我如何做到这一点-是VPCLink和NLB的方式来做到这一点,还是任何其他方式,创建一些访问点在公共子网(??)。Lambda似乎是答案(现在AWS中几乎所有的东西)--甚至不确定那种访问对于Pvt子网中的资源是如何工作的。 同样,同一个Pvt子网可以访问外部资源(在AWS之外)-我如何

    • 如何配置API将请求路由到NLB上的特定目标组?在VPC链接的集成点中,我只看到指定VPC链接和endpoint的选项。如果是endpoint,要路由到特定目标组的endpointURL的格式是什么? 还是我必须为每个微服务创建一个NLB?

    • 我有EC2实例在私有子网中运行,想要访问API网关。 我做的步骤:- 在API网关中创建和部署阶段 从测试URL和邮递员测试-工作良好 创建了具有execute-api接口的VPCendpoint 更新了API-Gateway资源策略,如下所示并已保存

    • 首先,我对AWS很陌生。以下是我想要达到的目标: null 因此,现在我有了一个专用子网,其endpoint允许HTTP(S)流量。该endpoint具有某些(专用)DNS名称,(可能)也具有专用IP(找不到) 现在我想要添加一个API网关来前面的一些AWS lambda。我创建所述API,并将其作为endpoint类型->Private 下面是:正式文档将API网关“链接”到VPCendpoin

    • 我正在尝试运行以下Sqoop命令: 然而,我得到了这个错误: 17/02/04 00:04:53 警告安全。用户组信息: 特权行动例外作为:avinash (身份验证:简单) 原因:java.io.文件不发现异常: 文件不存在: hdfs://localhost:9000/home/avinash/sqoop-1.4.6.bin__hadoop-2.0.4-alpha/lib/slf4j-api-