Amazon API Gateway
개발자 안내서

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

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

{ "type":"TOKEN", "authorizationToken":"{caller-supplied-token}",     "methodArn":"arn:aws:execute-api:{regionId}:{accountId}:{appId}/{stage}/{httpVerb}/[{resource}/[{child-resources}]]" }

이 예제에서 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 Gateway는 런타임 시 요청 컨텍스트를 제공합니다.

참고

경로 파라미터는 Lambda 권한 부여자 함수에 요청 파라미터로 전달될 수 있지만, 자격 증명 원본으로 사용될 수는 없습니다.

다음 예제는 프록시 통합을 포함하는 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 함수 입력에 대한 자세한 내용은 프록시 통합에 대한 Lambda 함수의 입력 형식 단원을 참조하십시오.