我有一个私有的AWS API Gateway REST API,这意味着只能在我的VPC中访问它。我在VPC中运行了一个堡垒SSH实例,这意味着我可以执行以下操作:
ssh -J ec2-user@<bastion> ec2-user@<ip of EC2 instance within my VPC>
然后从该实例中,我可以使用curl
URL https://<api-id>.execute-api.eu-west-1.amazonaws.com/dev/<my endpoint>
我的API。
现在,对于本地测试,我想将此实例通过隧道传输到本地端口,所以我尝试
ssh -J ec2-user@<bastion> -L 8888:<api-id>.execute-api.eu-west-1.amazonaws.com:443 ec2-user@<ip of EC2 instance within my VPC>
此命令返回的结果很好,但是当我尝试执行curl localhost:8888/dev/<my endpoint>
时,我首先会收到一个证书错误,这是很自然的,但是当我尝试使用curl -k localhost:8888/dev/<my endpoint>
忽略该证书时,我只是从AWS收到了403禁止响应。对于这些请求,我的REST API访问日志中什么都没有。
403是否与我忽略TLS证书或其他原因有关?是否可以这样设置隧道?不幸的是,似乎无法对API网关REST API使用简单的HTTP:s,否则对于这种类型的事情我会更喜欢。
API网关需要主机头以匹配API端点URL。将主机名添加到您的/etc/hosts