組み込み分析のチュートリアル

(Amazon QuickSight を利用)

モジュール 6: QuickSight ユーザーおよびドメインをセットアップする

このモジュールでは、デモユーザーを登録し、埋め込み閲覧者グループを作成し、このグループにデモユーザーを追加します。

はじめに

このモジュールでは、デモユーザーを作成して登録し、組み込み閲覧者グループを作成してこのグループにデモユーザーを追加し、組み込みダッシュボードや組み込みセッションにアクセスできるようにします。

学習内容

  • ダッシュボードを組み込むための Lambda の初期セットアップを作成して実行する - QuickSight ユーザー、グループ、アクセス許可を作成します。
  • セッションを組み込むための Lambda の初期セットアップを作成して実行する - QuickSight ユーザー、グループ、アクセス許可を作成します。
  • ホワイトリストのドメイン - QuickSight ページの組み込みを許可します。

 所要時間

15 分

 使用するサービス

実装

  • Lambda の初期セットアップを作成して実行する (ダッシュボード組み込み用)

    セッションの組み込みを試している場合は、次のセクションをスキップします。
    Lambda 関数を作成して QuickSight に対して初期セットアップ API コールを実行します。これらの API コールを実行すると、デモユーザーが QuickSight に登録され、組み込み閲覧者グループが作成され、このグループにデモユーザーが追加されるため、ダッシュボードを閲覧するためのアクセスが可能になります。

    QSInitialSetupTempPolicyQSLambdaBasicExecutionRole にアタッチされていることを確認します。

    1.Lambda を起動して、[Create function (関数の作成)] をクリックします。

    139

    2.次の項目を選択します。
    [Author from scratch (一から作成)] を選択します。
    関数名: 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
    E メール
    DashboardId
    - メモ帳に保存されているダッシュボード (またはダッシュボード URL から取得する) DashboardId です。
    RoleArn - メモ帳に保存されている QSER ロールのARN です。
    QuickSightIdentityRegion - QuickSight の ID がセットアップされているリージョンです。
    DashboardRegion - メモ帳に保存されている (またはダッシュボード URL から取得する) DashboardRegion です。
    [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 コールを実行すると、デモユーザーが QuickSight に作成者として登録されます。QSInitialSetupTempPolicyQSLambdaBasicExecutionRole にアタッチされていることを確認します。

    1.Lambda を起動して、[Create function (関数の作成)] をクリックします。

    155

    2.次の項目を選択します。
    [Author from scratch (一から作成)] を選択します。
    関数名: 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
    E メール
    RoleArn - メモ帳に保存されている QSER ロールのARN です。
    QuickSightIdentityRegion - QuickSight の ID がセットアップされているリージョンです。
    [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.上にスクロールして [テスト] をクリックします。

    165

    11.IAM を起動し、左側のパネルからロールをクリックし、QSLambdaBasicExecutionRole を検索して一時ポリシーを削除します。

    (ここではこのステップと次のステップをスキップしてください。現在ダッシュボードの組み込みを試していて、その後にセッションの組み込みを試す場合、またはその逆の場合も、Lambda 関数のセットアップを実行する前に、このポリシーを必ずロールに追加してください。)

    166

    12.[Detach (デタッチ)] をクリックします。

    167
  • ホワイトリストのドメイン

    最後のステップでは、QuickSight で CloudFront のドメインをホワイトリストに追加します。

    1.QuickSight を起動し、リージョンをダッシュボードがあるリージョンに変更します。

    171

    2.画面の右上の個人アイコンをクリックして、ドロップダウンから [Manage QuickSight (QuickSight の管理)] を選択します。

    172

    3.左側のパネルから [Domains and Embedding (ドメインと組み込み)] をクリックします。

    173

    4.ドメインに https://CloudFront ドメイン名 を入力し、[Add (追加)] をクリックします。

    174

まとめ

モジュール 6 を無事に修了しました! 次に、モジュール 7 でアプリケーションを起動しましょう。

このモジュールは役に立ちましたか?

アプリケーションを起動する