외부 어플리케이션에 QuickSight 대시보드를 삽입하기

2024.05.21

안녕하세요, 클래스메소드의 서은우 입니다.

최근에 Amazon QuickSight에 대해 다룰 기회가 생겨 직접 다뤄보고 알게 된 내용들을 블로그를 통해 공유하고 있습니다. 이번에는 익명의 사용자를 위해 대시보드의 임베디드 URL을 생성하는 방법에 대해 알아보도록 하겠습니다.

익명 사용자를 위한 임베디드 URL 생성

QuickSight의 대시보드를 다른 어플리케이션에 삽입해야할 경우가 있습니다. 이때, 대시보드의 임베디드 URL 을 생성하는 기능을 사용하여 어플리케이션에서 QuickSight 대시보드에 엑세스할 수 있도록 할 수 있습니다.

대시보드에 엑세스하는 대상에 따라 아래의 2가지 API를 이용해 QuickSight에 등록되어 있는 유저 대상 또는 익명의 사용자를 대상으로 한 임베디드 URL을 생성할 수 있습니다.

  • generate-embed-url-for-registered-user(특정 QuickSight 유저 혹은 그룹)
  • generate-embed-url-for-anonymous-user(QuickSight 에 등록되지 않은 익명의 사용자)

본 블로그에서는 익명의 사용자를 대상으로 한 임베디드 URL 을 생성 방법에 대해서 다루고 있습니다.

Reader 세션 용량 요금 플랜 구매

익명의 유저를 위한 대시보드 URL 을 생성하기 위해서는 Reader 세션 용량이 필요 합니다. Reader 세션 용량을 구입하지 않으면 익명의 사용자를 위한 URL을 생성할 수 없으며 API 실행시 아래와 같은 오류가 발생합니다.

An error occurred (UnsupportedPricingPlanException) when calling the GenerateEmbedUrlForAnonymousUser operation: This API action is supported only when the account has an active Capacity Pricing plan.

때문에, 익명의 사용자를 위한 대시보드의 URL 을 생성하기 위해서 미리 QuickSight 콘솔의 요금 관리 페이지를 통해 Reader 세션의 용량 요금의 구매를 확인해 주세요.

용량 요금 플랜(Capacity Pricing plan) 이란

용량 요금을 이용하면, QuickSight 고객이 QuickSight에서 개별 사용자를 프로비저닝할 필요 없이 Reader 세션 또는 Amazon Q 질문 용량을 할인된 요금으로 대량 구매할 수 있습니다. 용량 요금은 내장 애플리케이션 또는 대형 BI 배포에 이상적입니다. 용량 요금에서는 대규모 사용량을 약정할 경우 세션당 비용이 줄어듭니다.

AWS 공식 문서에서는 용량 요금 플랜(Capacity Pricing plan)에 대해 위와 같이 설명하고 있습니다.

QuickSight 를 이용하기 위해서는, 예를 들어 대시보드를 열람하고 싶은 경우, 대시보드를 열람하기 위한 특정 유저를 작성하고 대시보드를 해당 유저에 공유하는 방식을 생각할 수 있습니다. 이를 위해서는 대시보드를 열람할 각각의 유저를 생성해줘야하며 생성한 유저 수 만큼 비용이 발생하게 되는 문제가 있습니다.

하지만 용량 요금 플랜을 구입하게 되면 각각의 유저를 생성할 필요 없이 다수의 사람이 대시보드를 열람할 수 있게 할 수 있으며, 비용도 줄일 수 있다는 장점이 있습니다.

Reader 세션 용량 요금의 구매

다음과 같이 Reader 세션 용량을 구매할 수 있습니다.

QuickSight 콘솔 화면에 QuickSight 요금제 변경이 가능한 계정 로그인 후, QuickSight 관리 -> 요금 관리 페이지로 이동합니다. 그리고 독자 -> 플랜 전환을 클릭하여 구매하고자 하는 요금제를 확인합니다.

본 블로그에서는 Quick Sighgt Q에 대한 기능은 필요하지 않기 때문에 500세션 당 월 250$ 의 Reader 세션 용량 요금을 구매합니다.

플랜 변경을 완료하면, 독자(Reader) 요금이 기존의 사용자 요금제에서 500 세션으로 바뀐 모습을 확인할 수 있습니다.

직접해보기

이제 generate-embed-url-for-anonymous-user 명령어를 사용하여 AWS CLI로 익명의 사용자를 위한 임베디드 URL 을 생성하도록 하겠습니다.

aws quicksight generate-embed-url-for-anonymous-user \
--aws-account-id xxxxxxxxxxxx \
--namespace default \ 
--authorized-resource-arns "arn:aws:quicksight:ap-northeast-1:xxxxxxxxxxxx:dashboard/dashboard-id" \
--experience-configuration Dashboard={InitialDashboardId=dashboard-id} \

명령어를 입력하면 아래와 같은 반환 값을 얻을 수 있습니다. 반환 값의 EmbedUrl 이 익명의 사용자가 엑세스 가능한 URL 주소입니다.

{
    "Status": 200,
    "EmbedUrl": "URL 정보",
    "RequestId": "d42fc416-056a-4def-a526-0e2474d6dbb7",
    "AnonymousUserArn": "arn:aws:quicksight:ap-northeast-1:xxxxxxxxxxxx:anonymousUser/default/3d38bd6c69e047a6998a43072166bb8a"
}

인터넷 브라우저를 통해 해당 URL 로 접속하면, QuickSight 유저가 없음에도 대시보드에 접속할 수 있습니다.

해당 URL 을 iframe 같은 태그와 함께 사용하는 등의 방식을 통해 QuickSight 대시보드를 외부의 어플리케이션에 임베드할 수 있습니다.

그 외

RLS 설정

데이터 세트에 태그 기반 RLS 규칙을 설정하고 generate-embed-url-for-anonymous-user API의 --session-tags 파라미터 값을 지정하여 대시보드에 표시되는 데이터의 범위를 제한할 수 있습니다.

태그 기반 규칙의 RLS 설정의 자세한 내용에 대해서는 아래의 블로그를 참고해주세요.

비용

Reader 세션 용량은 기본적으로 500개의 세션에 대해 월 250 달러의 비용이 발생합니다. 세션은 30분 동안 유지 되며, 추가 세션에 대해서는 0.5 달러의 비용이 발생합니다. 세션을 대량으로 구매할 경우 더욱 저렴한 비용으로 Reader 세션을 이용할 수 있습니다.

세션 용량을 구매할 경우, 구매시 선불로 한 번에 모든 비용을 지불하는 것이 아니라, 일 단위로 비용이 발생하게 됩니다. 즉, 한 달이 31일인 경우, 하루에 8 달러 정도의 비용이 발생하며, QuickSight 계정 삭제 후 해당 비용은 발생하지 않게 됩니다.

끝으로

익명의 유저를 위한 QuickSight 대시보드의 임베디드 URL을 직접 생성해보았습니다.

해당 기능을 사용하여 QuickSight 에 유저를 등록하지 않고도 외부의 어플리케이션을 통해 대시보드를 쉽게 공유할 수 있다는 점이 매우 편리한 것 같습니다.