我正在尝试从部署在EC2实例上的React JS Front调用一个AWS API Gateway Private,并且正在获取:POST https://abcdefghi0123456.execute-api.us-west-2.amazonaws.com/stage / net :: ERR_NAME_NOT_RESOLVED。
条件如下:
OK-专用API网关与VPCE(VPC端点)相关联,可以访问和调用Lambda(位于VPC内部)
OK-从API的方法进行POST测试以调用Lambda(VPC)
OK-从EC2实例命令行进行POST测试,以下是curl命令的示例:
curl --location --request POST'https:
//abcdefghi0123456.execute-api.us-west-2.amazonaws.com/stage/'--header'Content-Type:application / json'--
data-raw' {“ my_key”:“ my_value”}'
错误-来自部署在同一EC2实例中的React JS构建的POST
注意:
确定-调用AWS Public API网关
附加到专用API网关的策略示例:
{“版本”:“ 2012-10-17”,“声明”:[{“效果”:“拒绝”,“委托人”:“ ”,“动作”:“ execute-api:调用”,“资源”: “阿尔恩:AWS:执行-API:美国西2:123456789123:abcde1abc2 / / / ”, “条件”:{ “StringNotEquals”:{ “AWS:sourceVpce”: “vpce-0abc12d34567e8901”}}},{“效果”:“允许”,“主体”:“ ”,“动作”:“ execute-api:Invoke”,“资源”:“ arn:aws:execute-api:us-west-2:123456789123:abcde1abc2 // / “}]}
您的ReactJS不起作用,因为调用API的JavaScript代码在客户端(例如Web浏览器)上执行。
这需要可以在Internet上运行的公共API网关,而不是仅在VPC内有效的私有API网关。正如您使用所验证的那样,私有API仅可在实例上执行的后端代码中运行curl
,并且无法通过Internet调用。随后,它将无法在客户端上运行。
为了使您的API网关可以从客户端调用,必须将其更改为公共API。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句