java—尝试连接到aws网关专用api时出现未知hostexception

wmtdaxz3  于 2021-06-27  发布在  Java
关注(0)|答案(1)|浏览(479)

我遵循这一点:
https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-private-apis.html
https://aws.amazon.com/blogs/compute/introducing-amazon-api-gateway-private-endpoints/ 教程
到tee以在restapi端点之间创建私有链接。
基本上,我所做的步骤是:
已将(以前工作的)边缘api转换为专用api(通过aws api网关控制台)
使用此模板创建了一个包含2个公用子网和2个专用子网的专有网络:https://s3.amazonaws.com/computeblog-us-east-1/apigateway-private-endpoints/basevpc.template
已确认在专有网络上启用了dns命名和dns解析。
创建了一个连接到上面创建的专有网络的专有网络终结点。已启用专用dns。
将此资源策略添加到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

我用 Postman 的时候也发生了同样的问题。
如中所示https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-private-api-test-invoke-url.html 以及api网关控制台,如果我启用了私有dns,我应该能够使用url调用api。
我误解了什么吗?成功调用api的正确方法是什么?

s4n0splo

s4n0splo1#

如图所示,资源策略应具有基于vpc端点而不是基于vpc的条件。尝试替换“aws:sourcevpc“:”vpce-{endpoint}“作者”aws:sourcevpce“:”vpce-{endpoint}“,然后再次部署。

相关问题