임베디드 분석 자습서

Amazon QuickSight 사용

모듈 6: QuickSight 사용자 및 도메인 설정

이 모듈에서는 데모 사용자를 등록하고 임베딩된 독자 그룹을 생성한 후 데모 사용자를 이 그룹에 추가합니다.

소개

이 모듈에서는 데모 사용자를 생성 및 등록하고 임베딩된 독자 그룹을 생성한 후 이 그룹에 데모 사용자를 추가하여 임베딩된 대시보드 또는 세션에 액세스할 수 있도록 합니다.

학습 내용

  • 대시보드 임베딩을 위한 초기 설정 Lambda를 생성 및 실행하여 QuickSight 사용자, 그룹 및 권한을 생성합니다.
  • 세션 임베딩을 위한 초기 설정 Lambda를 생성 및 실행하여 QuickSight 사용자, 그룹 및 권한을 생성합니다.
  • 도메인을 화이트리스트에 올려 QuickSight 페이지의 임베딩을 허용합니다.

 완료 시간

15분

 사용되는 서비스

구현

  • 초기 설정 Lambda 생성 및 실행(대시보드 임베딩용)

    세션 임베딩을 시도하려는 경우 다음 섹션으로 이동
    QuickSight에 대한 초기 설정 API 호출을 실행할 Lambda 함수를 생성합니다. 이러한 API 호출은 DemoUser를 QuickSight에 등록하고, EmbeddedReader 그룹을 생성하며, DemoUser를 이 그룹에 추가하여 대시보드에 대한 뷰어 권한을 그룹에 제공합니다.

    QSInitialSetupTempPolicyQSLambdaBasicExecutionRole에 연결되어 있는지 확인하십시오.

    1. Lambda를 시작하고 [함수 생성(Create function)] 버튼을 클릭합니다.

    139

    2. 다음을 선택합니다.
    [새로 작성(Author from scratch)] 선택
    [함수 이름(Function Name)]: QSEmbedSetup
    [런타임(Runtime)]: Python 3.8
    [실행 역할(Execution role)]: 기존 역할 사용드롭다운에서 QSLambdaBasicExecutionRole을 선택합니다. [함수 생성(Create function)]을 클릭합니다.

    140
    141

    3. 다음 python 코드를 Lambda 함수에 복사하고 [저장(Save)]을 클릭합니다.

     

    def lambda_handler(event, context):
        import json,re,boto3,os,botocore
        AAI = os.environ["AwsAccountId"]
        email = os.environ["Email"]
        dashboardId = os.environ["DashboardId"]
        roleArn = os.environ["RoleArn"]
        identityRegion = os.environ["QuickSightIdentityRegion"]
        dashboardRegion = os.environ["DashboardRegion"]
        group = 'EmbeddedReaderGrp'
        groupArn='arn:aws:quicksight:'+identityRegion+':'+AAI+':group/default/'+group
    
        qs = boto3.client('quicksight',region_name=identityRegion)
        qsd = boto3.client('quicksight',region_name=dashboardRegion)
    
        try:
            res = qs.create_group(GroupName=group,AwsAccountId=AAI,Namespace='default')
        except Exception as e:
            if (str(type(e)) == "<class 'botocore.errorfactory.ResourceExistsException'>"):
                print('GroupExists')
            else:
                raise e
    
        try:
            res = qs.register_user(IdentityType='IAM',Email=email,UserRole='READER',IamArn=roleArn,SessionName='DemoUser',Namespace='default',AwsAccountId=AAI)
        except Exception as e:
            if (str(type(e)) == "<class 'botocore.errorfactory.ResourceExistsException'>"):
                print('UserExists')
            else:
                raise e
    
        res = qs.create_group_membership(MemberName='QSER/DemoUser',GroupName=group,AwsAccountId=AAI,Namespace='default')
        res = qsd.update_dashboard_permissions(AwsAccountId=AAI,DashboardId=dashboardId,GrantPermissions=[{'Principal':groupArn,'Actions':['quicksight:DescribeDashboard','quicksight:ListDashboardVersions','quicksight:QueryDashboard']}])
    142

    4. [환경 변수(Environment variables)] 섹션으로 스크롤하고 [환경 변수 관리(Manage environment variables)]를 클릭합니다.

    143

    5. 다음 환경 변수를 추가합니다.
    AwsAccountId
    Email
    DashboardId - 메모장에 저장된 DashboardId
    (또는 대시보드 URL의 ID)
    RoleArn - 메모장에 저장된 QSER Role Arn
    QuickSightIdentityRegion - QuickSight 자격 증명이 설정된 리전
    DashboardRegion - 메모장에 저장된 DashboardRegion(또는 대시보드 URL의 리전)
    [저장(Save)] 버튼을 클릭합니다.

    144

    6. [기본 설정(Basic Settings)]으로 스크롤하고 [편집(Edit)] 버튼을 클릭합니다.

    145

    7. [제한 시간(Timeout)] 값을 2분으로 늘리고 [저장(Save)] 버튼을 클릭합니다.

    146

    8. [테스트 이벤트 선택(Select a test event)] 드롭다운에서 [테스트 이벤트 구성(Configure test events)]을 선택합니다.

    147

    9. 이벤트 이름을 Test로 입력하고 [생성(Create)] 버튼을 클릭합니다.

    148

    10. [테스트(Test)] 버튼을 클릭합니다.

    149

    11. IAM을 시작하고 왼쪽 패널에서 역할을 클릭한 다음 QSLambdaBasicExecutionRole을 검색하고 임시 정책을 삭제합니다.

    지금은 이 단계를 건너뛰고 다음 단계로 이동합니다. 지금 대시보드 임베딩을 시도하고 그 다음에 세션 임베딩을 시도하려는 경우 설정 Lambda 함수를 실행하기 전에 이 정책을 다시 역할에 추가해야 합니다.

    150

    12. [분리(Detach)] 버튼을 클릭합니다.

    151
  • 초기 설정 Lambda(세션 임베딩용)

    대시보드 임베딩을 시도하려는 경우 다음 섹션으로 이동
    QuickSight에 대한 초기 설정 API 호출을 실행할 Lambda 함수를 생성합니다. 이러한 API 호출은 DemoUser를 작성자로 QuickSight에 추가합니다. QSInitialSetupTempPolicyQSLambdaBasicExecutionRole에 연결되어 있는지 확인하십시오.

    1. Lambda를 시작하고 [함수 생성(Create function)] 버튼을 클릭합니다.

    155

    2. 다음을 선택합니다.
    [새로 작성(Author from scratch)] 선택
    [함수 이름(Function Name)]: QSEmbedSetup
    [런타임(Runtime)]: Python 3.8
    [실행 역할(Execution role)]: 기존 역할 사용 드롭다운에서 QSLambdaBasicExecutionRole을 선택합니다. [함수 생성(Create function)]을 클릭합니다.

    156
    157

    3. 다음 python 코드를 Lambda 함수에 복사하고 [저장(Save)]을 클릭합니다.
     

    def lambda_handler(event, context):
        import json,re,boto3,os,botocore
        AAI = os.environ["AwsAccountId"]
        email = os.environ["Email"]
        roleArn = os.environ["RoleArn"]
        identityRegion = os.environ["QuickSightIdentityRegion"]
    
        qs = boto3.client('quicksight',region_name=identityRegion)
    
        try:
            res = qs.register_user(IdentityType='IAM',Email=email,UserRole='AUTHOR',IamArn=roleArn,SessionName='DemoUser',Namespace='default',AwsAccountId=AAI)
        except Exception as e:
            if (str(type(e)) == "<class 'botocore.errorfactory.ResourceExistsException'>"):
                print('UserExists')
                res = qs.describe_user(Namespace='default',AwsAccountId=AAI, UserName='QSER/DemoUser')
                if (res['User']['Role'] == 'READER'):
                    print('Upgrading user')
                    qs.update_user(Namespace='default',AwsAccountId=AAI, UserName='QSER/DemoUser', Email=email, Role='AUTHOR')
            else:
                raise e
    158

    4. [환경 변수(Environment variables)] 섹션으로 스크롤하고 [환경 변수 관리(Manage environment variables)]를 클릭합니다.

    159

    5. 다음 환경 변수를 추가합니다.
    AwsAccountId
    Email
    RoleArn - 메모장에 저장된 QSER Role Arn
    QuickSightIdentityRegion - QuickSight 자격 증명이 설정된 리전
    [저장(Save)] 버튼을 클릭합니다.

    160

    6. [기본 설정(Basic Settings)]으로 스크롤하고 [편집(Edit)] 버튼을 클릭합니다.

    161

    7. [제한 시간(Timeout)] 값을 2분으로 늘리고 [저장(Save)] 버튼을 클릭합니다.

    162

    8. [테스트 이벤트 선택(Select a test event)] 드롭다운에서 [테스트 이벤트 구성(Configure test events)]을 선택합니다.

    163

    9. 이벤트 이름을 Test로 입력하고 [생성(Create)] 버튼을 클릭합니다.

    164

    10. 위로 스크롤하고 [테스트(Test)] 버튼을 클릭합니다.

    165

    11. IAM을 시작하고 왼쪽 패널에서 역할을 클릭한 다음 QSLambdaBasicExecutionRole을 검색하고 임시 정책을 삭제하여 제거합니다.

    지금은 이 단계를 건너뛰고 다음 단계로 이동합니다. 지금 대시보드 임베딩을 시도하고 그 다음에 세션 임베딩을 시도하려는 경우 설정 Lambda 함수를 실행하기 전에 이 정책을 다시 역할에 추가하거나 그 반대로 수행합니다.

    166

    12. [분리(Detach)] 버튼을 클릭합니다.

    167
  • 화이트리스트에 도메인 추가

    마지막 단계에서는 QuickSight에서 CloudFront 도메인을 화이트리스트에 올립니다.

    1. QuickSight를 시작하고 대시보드가 있는 리전으로 변경합니다.

    171

    2. 오른쪽 위에서 사람 아이콘을 클릭하고 드롭다운에서 [QuickSight 관리(Manage QuickSight)]를 선택합니다.

    172

    3. 왼쪽 패널에서 [도메인 및 임베딩(Domains and Embedding)]을 클릭합니다.

    173

    4. [도메인(Domain)]에 https://CloudFront Domain Name을 입력하고 [추가(Add)] 버튼을 클릭합니다.

    174

결론

모듈 6을 완료했습니다! 다음으로, 모듈 7에서는 애플리케이션을 시작합니다.

이 모듈이 유용했습니까?

애플리케이션 시작