Amazon QuickSightの埋め込み手順
はじめに
クラスメソッドさんの記事を見ながらやったら思いの外ハマりにハマった話。
前提条件
- QuickSightのプランがエンタープライズであること
確認は、QuickSightの画面の右上の人のマークをクリック、「QuickSightの管理」をクリックすれば左上の画面に出てくる。
ハマった点
aws cliから挑んだところこんな感じのエラー
記事通りaws cliを使って試してみました。
arata.honda@hoge:$ aws quicksight get-dashboard-embed-url --aws-account-id [AWSプロジェクトアカウント] --dashboard-id [ダッシュボードID] --identity-type IAM --session-lifetime-in-minutes 15
An error occurred (AccessDeniedException) when calling the GetDashboardEmbedUrl operation: User: arn:aws:iam::[AWSプロジェクトアカウント]:user/honda is not authorized to perform: quicksight:GetDashboardEmbedUrl on resource: arn:aws:quicksight:ap-northeast-1:[AWSプロジェクトアカウント]:dashboard/[ダッシュボードID]
ちなみにダッシュボードIDは公開したダッシュボードのURLについてます。(下図黒塗り)
ポリシーアタッチで既にハマった
まぁAccessDeniedExeptionだから、ポリシーとかRoleなんだろうなと思い。公式を見ました。
https://aws.amazon.com/jp/blogs/news/embed-interactive-dashboards-in-your-application-with-amazon-quicksight/
みたところ上記エラーのポリシーを作ってロールでアタッチしているようでした。
なので、
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "quicksight:RegisterUser",
"Resource": "*",
"Effect": "Allow"
},
{
"Action": "quicksight:GetDashboardEmbedUrl",
"Resource": "arn:aws:quicksight:ap-northeast-1:[AWSプロジェクトアカウント]:dashboard/*",
"Effect": "Allow"
}
]
}
としてみました。変えたのはResourceのところで、
arn:aws:quicksight:ap-northeast-1:[AWSプロジェクトアカウント]:dashboard/*
ここは、どのダッシュボードでも埋め込みできるようにワイルドカードである"※"をつけております。また公式ドキュメントはus-eastにresionがなっているのでap-northeastにしています。
これを作ってまずcreate-policyしました。
arata.honda@hoge:~$ aws iam create-policy --policy-name quicksight-embed-policy(任意でつけた) --policy-document file://quicksight-policy.json
{
"Policy": {
"PolicyName": "quicksight-embed-policy",
"PolicyId": "英数字の羅列",
"Arn": "arn:aws:iam::[AWSプロジェクトアカウント]:policy/quicksight-embed-policy",
"Path": "/",
"DefaultVersionId": "v1",
"AttachmentCount": 0,
"PermissionsBoundaryUsageCount": 0,
"IsAttachable": true,
"CreateDate": "2019-10-24T03:02:50Z",
"UpdateDate": "2019-10-24T03:02:50Z"
}
}
この時 "file://quicksight-policy.json"の"file://"がないと
An error occurred (MalformedPolicyDocument) when calling the CreateRole operation: This policy contains invalid Json
怒られます。(ここで一回ハマりました。)
次に、公式通り、このポリシーを一時的に信頼するAssumeRolePolicyも作っておきました。
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::[AWSプロジェクトアカウント]:role/quicksight-embed-policy"
}
}
ここのResourceはさっきつくった"quicksight-policy"を書いておきましょう。(公式のコピペは絶対に動きません)
AssumeRolePolicyなので、それ用のコマンドをうつと怒られました。
aws iam create-role --role-name quicksight-embed-role --assume-role-policy-document file://quicksight-role-trust-policy.json
An error occurred (MalformedPolicyDocument) when calling the CreateRole operation: Has prohibited field Resource
ここをみるどうやらResourceは定義できないとのこと。
なので諦めて普通にポリシーとして登録しました。(偉い人がいれば教えて下さい)
ここでもハマりました。上と同様にアタッチすると普通に通りました。
aws iam create-policy --policy-name quicksight-embed-trust-policy --policy-document file://quicksight-role-trust-policy.json
{
"Policy": {
"PolicyName": "quicksight-embed-trust-policy",
"PolicyId": "英数字の羅列",
"Arn": "arn:aws:iam::[AWSプロジェクトアカウント]:policy/quicksight-embed-trust-policy",
"Path": "/",
"DefaultVersionId": "v1",
"AttachmentCount": 0,
"PermissionsBoundaryUsageCount": 0,
"IsAttachable": true,
"CreateDate": "2019-10-24T03:26:19Z",
"UpdateDate": "2019-10-24T03:26:19Z"
}
}
ユーザーおるやん編
作ったら次にawsコマンドをうっているユーザに2つのポリシーをアタッチしました。
2つのポリシーをアタッチして再度aws cliでgetEmbdedコマンドをうってみました。
arata.honda@hoge:~$ aws quicksight get-dashboard-embed-url --aws-account-id [AWSプロジェクトアカウト] --dashboard-id [ダッシュボードID] --identity-type IAM --session-lifetime-in-minutes 15
An error occurred (QuickSightUserNotFoundException) when calling the GetDashboardEmbedUrl operation: Could not find user information in QuickSight
訳:ユーザーおらんやで
ユーザーおるやんってずっとおもってまたハマりました。
実は、QuickSightのユーザーはエンタープライズになるとIAMでつくったユーザも管理できるようで、追加する必要がありました。
追加して、コマンドを打つと、
arata.honda@hoge:~$ aws quicksight get-dashboard-embed-url --aws-account-id [AWSプロジェクトアカウント] --dashboard-id [ダッシュボードID] --identity-type IAM --session-lifetime-in-minutes 15
{
"Status": 200,
"EmbedUrl": "https://ap-northeast-1.quicksight.aws.amazon.com/embed/cf1d3e05c8da41728eacd08653d58921/dashboards/[ダッシュボードID]?isauthcode=true&identityprovider=quicksight&code=英字の羅列",
"RequestId": "26ffa865-bbbc-47a8-8dc3-efedea981d47"
}
やっときました。
見れへんで編
このEmbedUrlをクリックして早速確認しました。
しらこい画面しやがって!!!!!!!キーーーーーーって癇癪起こしそうになってしばらくハマってました。
実はまだあって、公開したダッシュボードで共有しないとまだ見れないです。
「ダッシュボードの共有」を押し、
追加しましょう。
おわりに
公式もみるのは大事だし、基本的なことがあまりわかってないのがわかりました。(小並感
参考
Author And Source
この問題について(Amazon QuickSightの埋め込み手順), 我々は、より多くの情報をここで見つけました https://qiita.com/arata-honda/items/9abd0cc09b8a7897ef45著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .