Nivea씨가 Amazon Cognito 권한을
이용해 API 사용자가 AWS Lambda를
실행하는 방법을 보여줍니다.

Nivea_BLR0718

내 API에는 Amazon Cognito 사용자 풀 인증이 있고 AWS Lambda를 프록시 리소스로 사용합니다. API 사용자가 기본 Lambda 역할을 사용하는 대신 Amazon Cognito 사용자 풀 그룹과 관련된 AWS Identity and Access Management(IAM) 역할(실행 역할)을 사용하여 Lambda를 실행할 수 있게 하려면 어떻게 해야 합니까?

참고: Amazon Cognito 사용자 풀 외에도 ID 풀을 구성하여 API에 대한 액세스 권한을 부여할 수 있습니다. 자세한 내용은 역할 기반 액세스 제어를 참조하십시오.

Amazon Cognito 역할을 통해 Lambda를 실행할 사용자를 설정하기 전에 다음을 설정해야 합니다.

  • 연결된 IAM 역할이 있는 Amazon Cognito 사용자 풀 및 그룹
  • Amazon Cognito 사용자 인증을 통해 설정된 클라이언트 애플리케이션
  • Lambda가 프록시 리소스로 설정된 API

사용자가 Amazon Cognito 권한을 사용하여 Lambda를 실행할 수 있도록 하려면 다음 단계를 수행하십시오.

  1. API Gateway 콘솔을 사용하여 Amazon Cognito 사용자 풀을 권한 부여자로 설정합니다. 그런 다음, Amazon Cognito 사용자 풀을 API의 메서드에 대한 권한 부여자로 할당합니다. 지침은 API와 사용자 풀 통합을 참조하십시오.
  2. AWS Lambda 콘솔을 엽니다.
  3. API의 프록시 리소스로 구성된 Lambda 함수를 선택하십시오.
  4. Lambda 함수를 편집하고 다음 코드 조각을 추가합니다. 이 코드 조각은 이벤트 세부 정보에서 Amazon Cognito 역할을 가져와서 역할을 가정합니다.

참고: 이 코드 조각을 실행하려면 CloudWatch Logs에 액세스하고 assume_role 명령을 실행할 수 있는 Lambda IAM 역할(실행 역할)이 있어야 합니다.

import boto3
client = boto3.client('sts')
def lambda_handler(event, context):
    role=event['requestContext']['authorizer']['claims']['cognito:roles']
    response = client.assume_role(
        RoleArn=role,
        RoleSessionName='APIrole'
    )
    print(response)
    response2api = {"statusCode": 200,"headers": { },"body": "Success"}
    return response2api

사용자는 둘 이상의 Amazon Cognito 사용자 풀에 속할 수 있으며 각 그룹에는 서로 다른 IAM 역할이 포함될 수 있습니다. 사용자가 둘 이상의 그룹에 속하는 경우 cognito : roles 신청에서 역할 목록이 반환됩니다. 사용자 ID 토큰의 cognito : preferred_role 신청은 우선순위 값이 가장 낮은 그룹의 IAM 역할을 상속합니다. cognito:preferred_role을 가져오려면 다음 코드 조각을 사용합니다.

role = event['requestContext']['authorizer']['claims']['cognito:preferred_role']

사용자가 Amazon Cognito 역할을 사용하여 Lambda를 실행할 수 있는지 확인하려면 다음 단계를 수행합니다.

  1. 클라이언트 애플리케이션을 열고 Amazon Cognito 사용자 풀의 사용자로 로그인하십시오.
  2. 로그인 후 받은 ID 토큰을 사용하여 API를 호출하십시오.
  3. Amazon Cognito 사용자 풀 역할에 정의된 것과 동일 리소스에 액세스할 수 있는지 확인하십시오.
  4. 필요한 경우 CloudWatch Logs를 검토하여 assume_role 명령이 성공적으로 수행되었는지 확인하십시오.

참고: 사용자 풀 권한 부여자 대신 사용자 지정 권한 부여자를 사용하여 API에 대한 액세스 권한을 부여하는 경우, 권한 부여자에 의해 유효성이 검증된 사용자 풀 토큰을 사용해야 합니다. 토큰의 역할을 가정하기 전에 토큰의 유효성을 검사해야 합니다.


페이지 내용이 도움이 되었습니까? | 아니요

AWS 지원 지식 센터로 돌아가기

도움이 필요하십니까? AWS 지원 센터를 방문하십시오.

게시 날짜: 2018년 6월 13일