Amazon API Gateway
개발자 안내서

Amazon API Gateway Lambda 권한 부여자에 대한 입력

TOKEN 유형 Lambda 권한 부여자(이전에는 사용자 지정 권한 부여자라고 함)의 경우 API에 대해 권한 부여자를 구성할 때 사용자 지정 헤더를 토큰 원본(Token Source)으로 지정해야 합니다. API 클라이언트가 수신되는 요청에서 필요한 인증 토큰을 전달해야 합니다. 메서드 요청을 수신하면 는 사용자 지정 헤더로부터 토큰을 추출합니다. 그런 다음 토큰을 Lambda 함수 내 event 객체의 authorizationToken 속성으로 전달하고 메서드 ARN을 methodArn 속성으로 전달합니다.

{ "type":"TOKEN", "authorizationToken":"<caller-supplied-token>",     "methodArn":"arn:aws:execute-api:<regionId>:<accountId>:<apiId>/<stage>/<method>/<resourcePath>" }

이 예제에서 type 속성은 권한 부여자 유형(TOKEN 권한 부여자)을 지정합니다. <caller-supplied-token>의 출처는 클라이언트 요청의 권한 부여 헤더입니다. methodArn은 수신 메서드 요청의 ARN이며 API Gateway에서 Lambda 권한 부여자 구성에 따라 채워집니다.

이전 단원에 표시된 예제 TOKEN 권한 부여자 Lambda 함수의 경우 <caller-supplied-token> 문자열은 allow, deny, unauthorized 또는 다른 문자열 값입니다. 빈 문자열 값은 unauthorized와 같습니다. 다음은 모든 단계(*)에서 AWS 계정(123456789012)의 API(ymy8tbxw7b) GET 메서드에 대한 Allow 정책을 가져오기 위한 그런 입력의 예를 보여줍니다.

{ "type":"TOKEN", "authorizationToken":"allow", "methodArn":"arn:aws:execute-api:us-west-2:123456789012:ymy8tbxw7b/*/GET/" }

REQUEST 유형 Lambda 권한 부여자의 경우, API Gateway가 필요한 요청 파라미터를 event 객체의 일부로 Lambda 함수에 전달합니다. 이러한 요청 파라미터에는 헤더, 경로 파라미터, 쿼리 문자열 파라미터, 단계 변수 및 일부 요청 컨텍스트 변수가 포함됩니다. API 호출자는 경로 파라미터, 헤더 및 쿼리 문자열 파라미터를 설정할 수 있습니다. API 개발자는 API를 배포할 때 단계 변수를 설정해야 하며, 는 런타임 시 요청 컨텍스트를 제공합니다.

다음 예제는 프록시 통합을 포함하는 API 메서드(REQUEST)에 대한 GET /request 권한 부여자에 대한 입력입니다.

{ "type": "REQUEST", "methodArn": "arn:aws:execute-api:us-east-1:123456789012:s4x3opwd6i/test/GET/request", "resource": "/request", "path": "/request", "httpMethod": "GET", "headers": { "X-AMZ-Date": "20170718T062915Z", "Accept": "*/*", "HeaderAuth1": "headerValue1", "CloudFront-Viewer-Country": "US", "CloudFront-Forwarded-Proto": "https", "CloudFront-Is-Tablet-Viewer": "false", "CloudFront-Is-Mobile-Viewer": "false", "User-Agent": "...", "X-Forwarded-Proto": "https", "CloudFront-Is-SmartTV-Viewer": "false", "Host": "....execute-api.us-east-1.amazonaws.com", "Accept-Encoding": "gzip, deflate", "X-Forwarded-Port": "443", "X-Amzn-Trace-Id": "...", "Via": "...cloudfront.net (CloudFront)", "X-Amz-Cf-Id": "...", "X-Forwarded-For": "..., ...", "Postman-Token": "...", "cache-control": "no-cache", "CloudFront-Is-Desktop-Viewer": "true", "Content-Type": "application/x-www-form-urlencoded" }, "queryStringParameters": { "QueryString1": "queryValue1" }, "pathParameters": {}, "stageVariables": { "StageVar1": "stageValue1" }, "requestContext": { "path": "/request", "accountId": "123456789012", "resourceId": "05c7jb", "stage": "test", "requestId": "...", "identity": { "apiKey": "...", "sourceIp": "..." }, "resourcePath": "/request", "httpMethod": "GET", "apiId": "s4x3opwd6i" } }

requestContext는 키-값 페어의 맵이며 $context 변수에 해당합니다. 결과는 API 종속적입니다. API Gateway에서 새 키를 맵에 추가할 수 있습니다. 프록시 통합에서의 Lambda 함수에 대한 자세한 내용은 프록시 통합에 대한 Lambda 함수의 입력 형식 단원을 참조하십시오.