2016-06-24 2 views
4

AWS API 게이트웨이에서 리디렉션 작업을하려고합니다. 메소드 응답을 헤더에 위치를 포함하도록 구성했고 통합 응답에 다음과 같이 매개 변수를 설정했습니다. location = integration.response.body.location. 그러나 API를 테스트 할 때 위치로 리디렉션하지 않고 API 페이지에서 위치 텍스트를 보여줍니다. 전에 만난 사람이 있습니까?응답을 사용하여 aws api gateway에서 리디렉션 302

표시된 문자열이 실제로 정확한 위치이지만 API가 나를 해당 URL로 리디렉션하지 않습니다.

+0

실제로 리디렉션을 원하십니까? 그것은 aws-lambda에서 무엇인가? – Andremoniy

+0

@Andremoniy 초기 페이지는 양식 인 S3에서 나옵니다. 일단 제출되면 API를 통해 AWS Lambda 함수를 호출하고 API가 응답하면 동일한 버킷의 다른 html 파일로 리디렉션하려고합니다. 나는 그 순간 문제를 고립시켰다. {} 내에 실제 위치를 문자열로 넣으면 리디렉션이 작동합니다. 그러나 JSON 객체를 변수에 저장하고 해당 변수를 콜백에 전달하면 리디렉션이 작동하지 않습니다. –

답변

0

API 끝 점이 302를 반환하고 있습니까?

메소드에 정의 된 302 이외의 2xx 또는 3xx 응답 코드가 없는지 확인하십시오. "성공"한 응답 코드 매핑 만 가질 수 있습니다. 2xx 및 3xx 코드는 모두 성공 코드로 간주됩니다.

+0

예, 나는 302의 응답을 받고 있다고 확신합니다. 왜냐하면 표시된 문자열은 내가 리디렉션하려는 위치이기 때문입니다. 값을 var에 저장 한 다음 해당 변수를 콜백의 일부로 전달하면 작동하지 않는 것처럼 보입니다. 내가 콜백에 직접 넣으면 작동 해. –

0

좋아, 문제가 발생했습니다. 위치를 저장하는 변수는 객체 대신 문자열로 정의됩니다. 이유는 웹 페이지가 텍스트로 표시하고 있기 때문입니다. 이제 페이지로 리디렉션 중입니다.

0

먼저 "위치"헤더에 대한 메소드 응답을 생성하려고합니다. 그런 다음 람다의 응답에서 위치 헤더 값을 매핑하고 싶습니다. Node.js 런타임에서는 integration.response.body.errorType에 매핑 할 수 있습니다. 당신이 수행하여 리디렉션 할 수 있습니다이 방법 :

// Returns 302 or 301 
var err = new Error("HandlerDemo.ResponseFound Redirection: Resource found elsewhere"); 
err.name = "http://a-different-uri"; 
context.done(err, {}); 

을 전체 작성자의 경우는, 참조 : https://aws.amazon.com/blogs/compute/redirection-in-a-serverless-api-with-aws-lambda-and-amazon-api-gateway/

0

나도 여기에 수행 한 후에도이 문제가 있었 : https://aws.amazon.com/blogs/compute/redirection-in-a-serverless-api-with-aws-lambda-and-amazon-api-gateway/

도 얻을 계속되었다 텍스트로 200 응답 (API 게이트웨이에서 200 삭제에도 불구하고).

우리 팀은 API 게이트웨이의 변경 사항을 재배포하여 작동하도록했습니다. (람다는 단지 절약이 필요합니다. API 게이트웨이는 실제로 재배포되어야합니다.)

관련 문제