API Gateway Lambda 권한 부여자 구성 - Amazon API Gateway

API Gateway Lambda 권한 부여자 구성

Lambda 함수를 생성한 후 Lambda 함수를 API의 권한 부여자로 구성합니다. 그런 다음 Lambda 권한 부여자를 간접적으로 호출하도록 메서드를 구성하여 호출자가 메서드를 간접적으로 호출할 수 있는지 확인합니다. API를 생성한 계정과 동일한 계정이나 다른 계정에서 Lambda 함수를 생성할 수 있습니다.

API Gateway 콘솔에 기본으로 제공되는 도구를 사용하거나 Postman을 사용하여 Lambda 권한 부여자를 테스트할 수 있습니다. Postman을 사용하여 Lambda 권한 부여 함수를 테스트하는 방법에 대한 지침은 API Gateway Lambda 권한 부여자를 사용한 API 직접 호출 섹션을 참조하세요.

Lambda 권한 부여자 구성(콘솔)

다음 절차는 API Gateway REST API 콘솔에서 Lambda 권한 부여자를 생성하는 방법을 보여줍니다. 다른 Lambda 권한 부여자 유형에 대해 자세히 알아보려면 Lambda 권한 부여자 유형 선택 섹션을 참조하세요.

REQUEST authorizer
REQUEST Lambda 권한 부여자를 구성하려면
  1. https://console.aws.amazon.com/apigateway에서 API Gateway 콘솔에 로그인합니다.

  2. API를 선택한 다음 권한 부여자를 선택합니다.

  3. 권한 부여자 생성을 선택합니다.

  4. 권한 부여자 이름에 권한 부여자의 이름을 입력합니다.

  5. 권한 부여자 유형으로 Lambda를 선택합니다.

  6. Lambda 함수 함수에서 Lambda 권한 부여자 함수를 생성한 AWS 리전을 선택하고 함수 이름을 입력합니다.

  7. API Gateway REST API 콘솔이 리소스 기반 정책을 설정하도록 Lambda 호출 역할을 비워 둡니다. 이 정책은 API Gateway에 Lambda 권한 부여자 함수를 간접적으로 호출할 권한을 부여합니다. API Gateway가 Lambda 권한 부여자 함수를 간접적으로 호출하도록 허용하는 IAM 역할의 이름을 입력할 수도 있습니다. 예시 역할은 맡을 수 있는 IAM 역할 생성 섹션을 참조하세요.

  8. Lambda 이벤트 페이로드요청을 선택합니다.

  9. 자격 증명 소스 유형에서 파리미터 유형을 선택합니다. 지원되는 파라미터 유형은 Header, Query string, Stage variableContext입니다. 자격 증명 소스를 더 추가하려면 파라미터 추가를 선택합니다.

  10. 권한 부여자에 의해 생성된 권한 부여 정책을 캐싱하려면 권한 부여 캐싱을 설정해 둡니다. 정책 캐싱을 활성화한 경우 TTL 값을 수정할 수 있습니다. TTL을 0으로 설정하면 정책 캐싱이 비활성화됩니다.

    캐싱을 활성화하는 경우 권한 부여자가 API 전체의 모든 메서드에 적용 가능한 정책을 반환해야 합니다. 메서드별 정책을 적용하려면 컨텍스트 변수 $context.path$context.httpMethod를 사용하세요.

  11. 권한 부여자 생성을 선택합니다.

TOKEN authorizer
TOKEN Lambda 권한 부여자를 구성하려면
  1. https://console.aws.amazon.com/apigateway에서 API Gateway 콘솔에 로그인합니다.

  2. API를 선택한 다음 권한 부여자를 선택합니다.

  3. 권한 부여자 생성을 선택합니다.

  4. 권한 부여자 이름에 권한 부여자의 이름을 입력합니다.

  5. 권한 부여자 유형으로 Lambda를 선택합니다.

  6. Lambda 함수 함수에서 Lambda 권한 부여자 함수를 생성한 AWS 리전을 선택하고 함수 이름을 입력합니다.

  7. API Gateway REST API 콘솔이 리소스 기반 정책을 설정하도록 Lambda 호출 역할을 비워 둡니다. 이 정책은 API Gateway에 Lambda 권한 부여자 함수를 간접적으로 호출할 권한을 부여합니다. API Gateway가 Lambda 권한 부여자 함수를 간접적으로 호출하도록 허용하는 IAM 역할의 이름을 입력할 수도 있습니다. 예시 역할은 맡을 수 있는 IAM 역할 생성 섹션을 참조하세요.

  8. Lambda 이벤트 페이로드토큰을 선택합니다.

  9. 토큰 소스에 인증 토큰이 포함된 헤더 이름을 입력합니다. 호출자는 권한 부여 토큰을 Lambda 권한 부여자에게 전송하기 위해 이 이름의 헤더를 포함해야 합니다.

  10. (선택 사항) 토큰 검증에 정규 표현식 문을 입력합니다. API Gateway는 이 표현식에 대해 입력 토큰의 초기 확인을 수행하고 확인이 성공할 경우 권한 부여자를 호출합니다.

  11. 권한 부여자에 의해 생성된 권한 부여 정책을 캐싱하려면 권한 부여 캐싱을 설정해 둡니다. 정책 캐싱을 비활성화한 경우 토큰 소스에 지정된 헤더 이름이 캐시 키가 됩니다. 정책 캐싱을 활성화한 경우 TTL 값을 수정할 수 있습니다. TTL을 0으로 설정하면 정책 캐싱이 비활성화됩니다.

    캐싱을 활성화하는 경우 권한 부여자가 API 전체의 모든 메서드에 적용 가능한 정책을 반환해야 합니다. 메서드별 정책을 적용하려는 경우 권한 부여자 캐싱을 끌 수 있습니다.

  12. 권한 부여자 생성을 선택합니다.

Lambda 권한 부여자를 생성한 후 테스트할 수 있습니다. 다음 절차는 Lambda 권한 부여자를 테스트하는 방법을 보여줍니다.

REQUEST authorizer
REQUEST Lambda 권한 부여자를 테스트하려면
  1. https://console.aws.amazon.com/apigateway에서 API Gateway 콘솔에 로그인합니다.

  2. 권한 부여자의 이름을 선택합니다.

  3. 테스트 권한 부여자에 자격 증명 소스의 값을 입력합니다.

    REQUEST 권한 부여자 Lambda 함수 예제를 사용하는 경우 다음과 같이 합니다.

    1. 헤더를 선택하고 headerValue1을 입력한 다음 파라미터 추가를 선택합니다.

    2. 자격 증명 소스 유형에서 쿼리 문자열을 선택한 다음 queryValue1을 입력하고 파라미터 추가를 선택합니다.

    3. 자격 증명 소스 유형에서 스테이지 변수를 선택하고 stageValue1을 입력합니다.

    테스트 간접 호출을 위한 컨텍스트 변수는 수정할 수 없지만 Lambda 함수의 API Gateway 권한 부여자 테스트 이벤트 템플릿은 수정할 수 있습니다. 그런 다음 수정된 컨텍스트 변수를 사용하여 Lambda 권한 부여자 함수를 테스트할 수 있습니다. 자세한 내용은 AWS Lambda 개발자 안내서의 콘솔에서 Lambda 함수 테스팅을 참조하세요.

  4. 테스트 권한 부여자를 선택합니다.

TOKEN authorizer
TOKEN Lambda 권한 부여자를 테스트하려면
  1. https://console.aws.amazon.com/apigateway에서 API Gateway 콘솔에 로그인합니다.

  2. 권한 부여자의 이름을 선택합니다.

  3. 테스트 권한 부여자에 토큰 값을 입력합니다.

    TOKEN 권한 부여자 Lambda 함수 예제를 사용하는 경우 다음과 같이 합니다.

    1. authorizationTokenallow를 입력합니다.

  4. 테스트 권한 부여자를 선택합니다.

    Lambda 권한 부여자가 테스트 환경에서 요청을 성공적으로 거부하면 테스트는 200 OK HTTP 응답으로 응답합니다. 그러나 테스트 환경 밖에서는 API Gateway가 403 Forbidden HTTP 응답을 반환하고 메서드 요청이 실패합니다.

Lambda 권한 부여자 구성(AWS CLI)

다음 create-authorizer 명령은 AWS CLI를 사용하여 Lambda 권한 부여자를 생성하는 방법을 보여줍니다.

REQUEST authorizer

다음 예제에서는 REQUEST 권한 부여자를 생성하고 Authorizer 헤더와 accountId 컨텍스트 변수를 자격 증명 소스로 사용합니다.

aws apigateway create-authorizer \ --rest-api-id 1234123412 \ --name 'First_Request_Custom_Authorizer' \ --type REQUEST \ --authorizer-uri 'arn:aws:apigateway:us-west-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-west-2:123412341234:function:customAuthFunction/invocations' \ --identity-source 'method.request.header.Authorization,context.accountId' \ --authorizer-result-ttl-in-seconds 300
TOKEN authorizer

다음 예제에서는 TOKEN 권한 부여자를 생성하고 Authorization 헤더를 자격 증명 소스로 사용합니다.

aws apigateway create-authorizer \ --rest-api-id 1234123412 \ --name 'First_Token_Custom_Authorizer' \ --type TOKEN \ --authorizer-uri 'arn:aws:apigateway:us-west-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-west-2:123412341234:function:customAuthFunction/invocations' \ --identity-source 'method.request.header.Authorization' \ --authorizer-result-ttl-in-seconds 300

Lambda 권한 부여자를 생성한 후 테스트할 수 있습니다. 다음 test-invoke-authorizer 명령은 Lambda 권한 부여자를 테스트하는 방법을 보여줍니다.

aws apigateway test-invoke-authorizer --rest-api-id 1234123412 \ --authorizer-id efg1234 \ --headers Authorization='Value'

Lambda 권한 부여자를 사용하도록 메서드 구성(콘솔)

Lambda 권한 부여자를 구성한 후 API에 대한 메서드에 연결해야 합니다.

Lambda 권한 부여자를 사용하도록 API 메서드를 구성하려면
  1. https://console.aws.amazon.com/apigateway에서 API Gateway 콘솔에 로그인합니다.

  2. API를 선택합니다.

  3. 리소스를 선택한 다음 새 메서드를 선택하거나 기존 메서드를 선택합니다.

  4. 메서드 요청 탭의 메서드 요청 설정에서 편집을 선택합니다.

  5. 권한 부여자의 경우 드롭다운 메뉴에서 방금 생성한 Lambda 권한 부여자를 선택합니다.

  6. (선택 사항) 권한 부여 토큰을 백엔드로 전달하려면 HTTP 요청 헤더를 선택합니다. 헤더 추가를 선택한 다음 인증 헤더의 이름을 추가합니다. 이름에서, API에 대한 Lambda 권한 부여자를 생성할 때 지정한 토큰 소스 이름과 일치하는 헤더 이름을 입력합니다. REQUEST 권한 부여자에는 이 단계가 적용되지 않습니다.

  7. Save(저장)를 선택합니다.

  8. Deploy API(API 배포)를 선택하여 단계에 API를 배포합니다. 스테이지 변수를 사용하는 REQUEST 권한 부여자의 경우 스테이지 페이지가 열려 있는 동안 필요한 스테이지 변수를 지정하고 값을 지정해야 합니다.

Lambda 권한 부여자를 사용하도록 메서드 구성(AWS CLI)

Lambda 권한 부여자를 구성한 후 API에 대한 메서드에 연결해야 합니다. 새 메서드를 생성하거나 패치 작업을 사용하여 권한 부여자를 기존 메서드에 연결할 수 있습니다.

다음 put-method 명령은 Lambda 권한 부여자를 사용하는 새 메서드를 생성하는 방법을 보여줍니다.

aws apigateway put-method --rest-api-id 1234123412 \ --resource-id a1b2c3 \ --http-method PUT \ --authorization-type CUSTOM \ --authorizer-id efg1234

다음 update-method 명령은 Lambda 권한 부여자를 사용하도록 기존 메서드를 업데이트하는 방법을 보여줍니다.

aws apigateway update-method \ --rest-api-id 1234123412 \ --resource-id a1b2c3 \ --http-method PUT \ --patch-operations op="replace",path="/authorizationType",value="CUSTOM" op="replace",path="/authorizerId",value="efg1234"