組み込み分析のチュートリアル
(Amazon QuickSight を利用)
モジュール 6: QuickSight ユーザーおよびドメインをセットアップする
このモジュールでは、デモユーザーを登録し、埋め込み閲覧者グループを作成し、このグループにデモユーザーを追加します。
はじめに
このモジュールでは、デモユーザーを作成して登録し、組み込み閲覧者グループを作成してこのグループにデモユーザーを追加し、組み込みダッシュボードや組み込みセッションにアクセスできるようにします。
学習内容
- ダッシュボードを組み込むための Lambda の初期セットアップを作成して実行する - QuickSight ユーザー、グループ、アクセス許可を作成します。
- セッションを組み込むための Lambda の初期セットアップを作成して実行する - QuickSight ユーザー、グループ、アクセス許可を作成します。
- ホワイトリストのドメイン - QuickSight ページの組み込みを許可します。
所要時間
15 分
使用するサービス
実装
-
Lambda の初期セットアップを作成して実行する (ダッシュボード組み込み用)
セッションの組み込みを試している場合は、次のセクションをスキップします。
Lambda 関数を作成して QuickSight に対して初期セットアップ API コールを実行します。これらの API コールを実行すると、デモユーザーが QuickSight に登録され、組み込み閲覧者グループが作成され、このグループにデモユーザーが追加されるため、ダッシュボードを閲覧するためのアクセスが可能になります。
QSInitialSetupTempPolicy が QSLambdaBasicExecutionRole にアタッチされていることを確認します。1.Lambda を起動して、[Create function (関数の作成)] をクリックします。
2.次の項目を選択します。
[Author from scratch (一から作成)] を選択します。
関数名: QSEmbedSetup
ランタイム: Python 3.8
実行ロール: 既存のロールを使用し、ドロップダウンから [QSLambdaBasicExecutionRole] を選択します。[Create function (関数の作成)] をクリックします。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']}])
4.環境変数セクションまで下にスクロールし、[Manage environment variables (環境変数を管理)] をクリックします。
5.次の環境変数を追加します。
AwsAccountId
E メール
DashboardId - メモ帳に保存されているダッシュボード (またはダッシュボード URL から取得する) DashboardId です。
RoleArn - メモ帳に保存されている QSER ロールのARN です。
QuickSightIdentityRegion - QuickSight の ID がセットアップされているリージョンです。
DashboardRegion - メモ帳に保存されている (またはダッシュボード URL から取得する) DashboardRegion です。
[Save (保存)] をクリックします。6.[Basic Settings (基本設定)] まで下にスクロールし、[Edit (編集)] をクリックします。
7.[Timeout (タイムアウト)] の値を 2 分に増やし、[Save (保存)] をクリックします。
8.[Select a test event (テストイベントの選択)] ドロップダウンから、[Configure test events (テストイベントの設定)] を選択します。
9.イベント名に Test と入力し、[Create (作成)] をクリックします。
10.[Test (テスト)] をクリックします。
11.IAM を起動し、左側のパネルからロールをクリックし、QSLambdaBasicExecutionRole を検索して一時ポリシーを削除します。
(ここではこのステップと次のステップをスキップしてください。現在ダッシュボードの組み込みを試していて、その後にセッションの組み込みを試す場合は、Lambda 関数のセットアップを実行する前に、このポリシーを必ずロールに追加してください。)12.[Detach (デタッチ)] をクリックします。
-
Lambda の初期セットアップ (セッション組み込み用)
ダッシュボードの組み込みを試している場合は、次のセクションに進みます。
Lambda 関数を作成して QuickSight に対して初期セットアップ API コールを実行します。これらの API コールを実行すると、デモユーザーが QuickSight に作成者として登録されます。QSInitialSetupTempPolicy が QSLambdaBasicExecutionRole にアタッチされていることを確認します。1.Lambda を起動して、[Create function (関数の作成)] をクリックします。
2.次の項目を選択します。
[Author from scratch (一から作成)] を選択します。
関数名: QSEmbedSetup
ランタイム: Python 3.8
実行ロール: 既存のロールを使用し、ドロップダウンから [QSLambdaBasicExecutionRole] を選択します。[Create function (関数を作成)] をクリックします。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
4.環境変数セクションまで下にスクロールし、[Manage environment variables (環境変数を管理)] をクリックします。
5.次の環境変数を追加します。
AwsAccountId
E メール
RoleArn - メモ帳に保存されている QSER ロールのARN です。
QuickSightIdentityRegion - QuickSight の ID がセットアップされているリージョンです。
[Save (保存)] をクリックします。6.[Basic Settings (基本設定)] まで下にスクロールし、[Edit (編集)] をクリックします。
7.[Timeout (タイムアウト)] の値を 2 分に増やし、[Save (保存)] をクリックします。
8.[Select a test event (テストイベントの選択)] ドロップダウンから、[Configure test events (テストイベントの設定)] を選択します。
9.イベント名に Test と入力し、[Create (作成)] をクリックします。
10.上にスクロールして [テスト] をクリックします。
11.IAM を起動し、左側のパネルからロールをクリックし、QSLambdaBasicExecutionRole を検索して一時ポリシーを削除します。
(ここではこのステップと次のステップをスキップしてください。現在ダッシュボードの組み込みを試していて、その後にセッションの組み込みを試す場合、またはその逆の場合も、Lambda 関数のセットアップを実行する前に、このポリシーを必ずロールに追加してください。)12.[Detach (デタッチ)] をクリックします。
-
ホワイトリストのドメイン
最後のステップでは、QuickSight で CloudFront のドメインをホワイトリストに追加します。
1.QuickSight を起動し、リージョンをダッシュボードがあるリージョンに変更します。
2.画面の右上の個人アイコンをクリックして、ドロップダウンから [Manage QuickSight (QuickSight の管理)] を選択します。
3.左側のパネルから [Domains and Embedding (ドメインと組み込み)] をクリックします。
4.ドメインに https://CloudFront ドメイン名 を入力し、[Add (追加)] をクリックします。