[amazon-web-services] API Gateway에 액세스하는 동안 인증 토큰이 누락 되었습니까?

AWS API Gateway를 통해 Lambda 함수를 호출하려고합니다. 인증 유형 NONE을 언급하면 ​​제대로 작동하지만 API가 공개되고 URL이있는 모든 사용자가 내 API에 액세스 할 수 있습니다. API 호출을 안전하게 만들기 위해 인증 유형 AWS_IAM을 사용하고 있으며 AmazonAPIGatewayInvokeFullAccess 정책을 사용자에게 연결했지만이 오류가 발생합니다.

{ message: "Missing Authentication Token"}

내가 여기서 무엇을 놓치고 있는지 모르겠습니다.



답변

API 링크에 직접 액세스하려고하는 것 같습니다. API가 IAM 역할을 사용하여 보호되고 AWS 인증, 즉 액세스 키 및 비밀 키를 제공해야하기 때문에 작동하지 않습니다.

Postman Chrome 확장 프로그램을 사용하여 API를 테스트하십시오.
http://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-use-postman-to-call-api.html


답변

어리석은 이유로 시간을 잃었습니다.

단계를 만들 때 표시된 링크에는 URL의 리소스 부분이 포함되지 않습니다.

API URL :
https://1111.execute-api.us-east-1.amazonaws.com/dev

API + 리소스 URL
https://1111.execute-api.us-east-1.amazonaws.com/dev/get-list

/ 얻을 목록은 실종됐다

물론 메서드 구성이 다음과 같은지 확인해야합니다.

여기에 이미지 설명 입력


답변

방금 동일한 문제가 발생했으며 리소스를 찾을 수없는 경우에도이 메시지가 표시되는 것 같습니다.

제 경우에는 API를 업데이트했지만 재배포하는 것을 잊었습니다. 업데이트 된 API를 내 스테이지에 배포 한 후 문제가 해결되었습니다.


답변

(2019 년 4 월 현재) AWS API Gateway는 다양한 이유로이 예외를 throw합니다. 대부분 API Gateway가 배포되지 않았거나 특정 상황이 발생하여 도달 할 수없는 엔드 포인트에 도달 할 때 HTTP 메서드는 지원되지 않습니다.

게이트웨이가 일반 HTTP 403 금지 대신 HTTP 405 메서드가 지원되지 않거나 HTTP 404를 찾을 수 없음과 같은 더 적절한 오류 코드를 보내길 바랍니다.


답변

스테이지 트리에서 특정 리소스를 먼저 클릭해야합니다. 그러면 URL 이 리소스에 대한 전체 경로 (루트 경로가 아닌) 채워집니다 .
여기에 이미지 설명 입력

다른 원인은 http://www.awslessons.com/2017/aws-api-gateway-missing-authentication-token/을 참조하십시오 .


답변

Resource를 생성 한 다음 그 안에 메소드를 생성해야합니다. 그게 제 문제였습니다. 감사

여기에 이미지 설명 입력


답변

문서에서 이것을 찾았습니다.

AWS_IAM 권한이 사용 된 경우 서명 버전 4 프로토콜을 사용하여 요청에 서명합니다.

서명 버전 4로 서명 요청


API 용 SDK를 생성 할 수도 있습니다.

API Gateway에서 API 용 SDK를 생성하는 방법

선택한 플랫폼 용 SDK를 생성 한 후 6 단계에서는 AWS 자격 증명을 사용하는 경우 API에 대한 요청이 서명 될 것이라고 언급합니다.

  1. AWS 자격 증명으로 API Gateway 생성 SDK를 초기화하려면 다음과 유사한 코드를 사용하십시오. AWS 자격 증명을 사용하는 경우 API에 대한 모든 요청이 서명됩니다. 즉, 각 요청에 대해 적절한 CORS Accept 헤더를 설정해야합니다.

    var apigClient = apigClientFactory.newClient({
      accessKey: 'ACCESS_KEY',
      secretKey: 'SECRET_KEY',
    });