內嵌式分析教學

搭配 Amazon QuickSight

單元七:QuickSight 使用者與網域設定

在本模組中,我們將註冊示範使用者,建立內嵌式讀者群組,並將示範使用者新增至此群組。

簡介

在本模組中,我們將建立並註冊示範使用者,建立內嵌式讀者群組,並將示範使用者新增至此群組,以便他們可以存取內嵌式儀表板或工作階段。

您將學習的內容

  • 針對儀表板嵌入建立並執行初始設定 Lambda - 建立 QuickSight 使用者、群組和權限。
  • 針對工作階段嵌入建立並執行初始設定 Lambda - 建立 QuickSight 使用者、群組和權限。
  • 白名單網域- 允許內嵌 QuickSight 頁面。

 完成時間

15 分鐘

 使用的服務

實作

  • 建立和執行初始設定 Lambda (針對儀表板嵌入)

    如果您正在嘗試工作階段嵌入,請跳至下一部分
    我們將建立 Lambda 函數,以針對 QuickSight 執行一些初始設定 API 叫用。這些 API 叫用將 DemoUser 註冊到 QuickSight,建立 EmbeddedReader 群組,新增 DemoUser 至此群組,並為此群組提供儀表板的檢視者存取。

    確保 QSInitialSetupTempPolicy 已附加至 QSLambdaBasicExecutionRole。

    1.啟動 Lambda 並按一下 Create function (建立函數) 按鈕。

    139

    2.做出以下選擇。
    選取從頭編寫
    函數名稱:QSEmbedSetup
    執行時間:Python 3.8
    執行角色:使用現有角色 從下列清單中選取 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.向下捲動到環境變數部分並按一下 Manage environment variables (管理環境變數)。

    143

    5.新增下列環境變數。
    AwsAccountId
    電子郵件
    DashboardId - DashboardId
    已儲存在您的記事本。(或從儀表板 URL)
    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 (針對工作階段嵌入)

    如果您正在嘗試儀表板嵌入,請跳至下一部分
    我們將建立 Lambda 函數,以針對 QuickSight 執行一些初始設定 API 叫用。這些 API 叫用會將 DemoUser 當作作者註冊至 QuickSight。確保 QSInitialSetupTempPolicy 已附加至 QSLambdaBasicExecutionRole。

    1.啟動 Lambda 並按一下 Create function (建立函數) 按鈕。

    155

    2.做出以下選擇。
    選取從頭編寫
    函數名稱:QSEmbedSetup
    執行時間:Python 3.8
    執行角色:使用現有角色 從下列清單中選取 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.向下捲動到環境變數部分並按一下 Manage environment variables (管理環境變數)。

    159

    5.新增下列環境變數。
    AwsAccountId
    電子郵件
    RoleArn - QSER Role Arn 已儲存在您的記事本。
    QuickSightIdentityRegion - 區域 設定 QuickSight 身分的位置。
    按一下 Save (儲存) 按鈕0。

    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

    172

    3.從左側面板按一下 Domains and Embedding (網域和嵌入)。

    173

    4.在網域中輸入 https://CloudFront Domain Name 並按一下 Add (新增) 按鈕。

    174

結論

您已成功完成單元六! 下一步,讓我們在單元七中啟動應用程式。

這個單元對您是否有幫助?

啟動應用程式