嵌入式分析教程

与 Amazon QuickSight 配合使用

模块 6:QuickSight 用户和域设置

在此模块中,我们将注册一个演示用户、创建一个嵌入式读者组,并将注册的演示用户添加到该组中。

简介

在此模块中,我们将创建并注册一个演示用户、创建一个嵌入式读者组,并将创建的演示用户添加到该组中,以便他们可以访问嵌入式控制面板或会话

您将学到的内容

  • 创建并执行适用于控制面板嵌入的初始设置 Lambda – 创建 QuickSight 用户、组和权限。
  • 创建并执行适用于会话嵌入的初始设置 Lambda – 创建 QuickSight 用户、组和权限。
  • 白名单域 – 允许嵌入 QuickSight 页面。

 完成时间

15 分钟

 使用的服务

实施

  • 创建并执行初始设置 Lambda(适用于控制面板嵌入)

    如果您要尝试进行会话嵌入,请跳至下一部分
    我们将创建一个 Lambda 函数,针对 QuickSight 运行一些初始设置 API 调用。这些 API 调用在 QuickSight 中注册 DemoUser 、创建一个 EmbeddedReader 组、将 DemoUser 添加到该组中,并为该组的控制面板提供浏览者访问权限。

    确保已将 QSInitialSetupTempPolicy 附加到 QSLambdaBasicExecutionRole

    1.启动 Lambda,然后单击创建函数按钮。

    139

    2.做出以下选择。
    选择从头开始创作
    函数名称:QSEmbedSetup
    运行时:Python 3.8
    执行角色:使用现有角色从下拉列表中选择QSLambdaBasicExecutionRole。单击创建函数

    140
    141

    3.将以下 Python 代码复制到 Lambda 函数中,然后单击保存

     

    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.向下滚动到“环境变量”部分,然后单击管理环境变量

    143

    5.添加以下环境变量。
    AwsAccountId
    Email
    DashboardId –
    保存在记事本中的 DashboardId。(或通过控制面板 URL 获取)
    RoleArn – 保存在记事本中的 QSER 角色 Arn。
    QuickSightIdentityRegion – 设置 QuickSight 身份的区域。
    DashboardRegion – 保存在记事本中的 DashboardRegion。(或通过控制面板 URL 获取)
    单击保存按钮。

    144

    6.向下滚动到基本设置,然后单击编辑按钮。

    145

    7.将超时值增加到 2 分钟,然后单击保存按钮

    146

    8.在选择测试事件下拉列表中,选择配置测试事件

    147

    9.输入测试事件名称,然后单击创建按钮。

    148

    10.单击测试按钮。

    149

    11.启动 IAM,单击左侧面板中的角色,搜索 QSLambdaBasicExecutionRole,并删除临时策略。

    (请先跳过此步骤和下一步/如果您目前正尝试进行控制面板嵌入,并希望在此之后尝试会话嵌入,请将此策略添加回角色,然后再运行设置 Lambda 函数。)

    150

    12.单击分离按钮。

    151
  • 初始设置 Lambda(适用于会话嵌入)

    如果您正在尝试进行控制面板嵌入,请跳至下一部分
    我们将创建一个 Lambda 函数,针对 QuickSight 运行一些初始设置 API 调用。这些 API 调用会在 QuickSight 中注册 DemoUser,作为Author。确保已将 QSInitialSetupTempPolicy 附加到 QSLambdaBasicExecutionRole

    1.启动 Lambda,然后单击创建函数按钮。

    155

    2.做出以下选择。
    选择从头开始创作
    函数名称:QSEmbedSetup
    运行时:Python 3.8
    执行角色:使用现有角色从下拉菜单中选择 QSLambdaBasicExecutionRole。单击创建函数

    156
    157

    3.将以下 Python 代码复制到 Lambda 函数中,然后单击保存
     

    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.向下滚动到“环境变量”部分,并单击管理环境变量

    159

    5.添加以下环境变量。
    AwsAccountId
    Email
    RoleArn – 保存在记事本中的 QSER 角色 Arn
    QuickSightIdentityRegion – 设置 QuickSight 身份的区域。
    单击保存按钮。

    160

    6.向下滚动到基本设置,然后单击编辑按钮。

    161

    7.将超时值增加到 2 分钟,然后单击保存按钮

    162

    8.在选择测试事件下拉列表中,选择配置测试事件

    163

    9.输入测试事件名称,然后单击创建按钮。

    164

    10.向上滚动并单击测试按钮。

    165

    11.启动 IAM,单击左侧面板中的角色,搜索 QSLambdaBasicExecutionRole并删除临时策略。

    (请先跳过此步骤和下一步/如果您目前正尝试进行控制面板嵌入,并希望在此之后尝试会话嵌入,请将此策略添加回角色,然后再运行设置 lambda 函数或者反之亦然)

    166

    12.单击分离按钮。

    167
  • 白名单域

    最后一步,在 QuickSight 中将 CloudFront 域列入白名单

    1.启动 QuickSight 并将区域更改为您控制面板所在的区域。

    171

    2.单击右上角的人形图标,然后从下拉列表中选择管理 QuickSight

    172

    3.从左侧面板中单击域和嵌入

    173

    4.在“域”中输入 https://CloudFront 域名,然后单击添加按钮。

    174

结论

您已成功完成模块 6 的学习! 接下来,让我们在模块 7 中学习启动应用程序。

此模块有帮助吗?

启动应用程序