504调用某个外部api url时aws EC2超时



出于测试目的,我有以下Next.js api路由。

所有4个axois调用都能在localhost中完美工作;但在生产中(由AWS EC2托管(;最后2个调用失败,原因为504 gateway time-out

我曾考虑过nginx和AWSin-bound/out-bound的设置,但如果是这样的话,前两个mock api应该不会很好地工作。

我不知道为什么会这样。或者这与那些网站的api保护有关?但是为什么它在localhost 中工作

import axios from "axios";
import { NextApiHandler } from "next";
export default const MockApi: NextApiHandler = async (req, res) => {
try {
// mock set
// work in localhost and production
const { data: testData } = await axios.get("https://jsonplaceholder.typicode.com/todos/1");
console.log(testData);
const { data: mockData } = await axios.get("https://reqres.in/api/users?page=2");
console.log(mockData);
// some real life api
// work in localhost but failed in production with 504 gateway time-out
const { data: mockData2 } = await axios.get("https://www.target.com.au/ws-api/v1/target/products/search?category=W95362");
console.log(mockData2);
const { data } = await axios.get("https://api.nasdaq.com/api/ipo/calendar");
console.log(data);
res.status(200).send({});
} catch (err) {
res.status(403).json(err);
}
};

经过调查,问题似乎与AWS内部政策有关,因此您无法使用AWS服务滥用特定的附属公司和一些公共API。

如果有人能够解决问题,这个答案可能是错误的。

最新更新