Amazon QuickSight スイッチロール先のアカウントにあるダッシュボードをワンライナーのコマンドで開く方法

Amazon QuickSight スイッチロール先のアカウントにあるダッシュボードをワンライナーのコマンドで開く方法

やってみたらできました。
Clock Icon2024.06.09

この記事では、ワンライナーでスイッチロール先の AWS アカウントにある QuickSight のダッシュボードを開く手順を紹介します。

事前準備

QuickSight のダッシュボードをワンライナーで開くために必要なツールをまとめます。

awsume コマンド

CLI でマネージメントコンソールを開くために awsume を使用します。普段から利用しており、非常に便利です。

補足

今回は awsume コマンドを使用してマネージメントコンソールを開くため、フェデレーテッドサインインになります。

op コマンド

マネージメントコンソールへのサインイン時に MFA を設定しています。私は 1Password で管理しているため、CLI で処理します。こちらも awsume と併用して普段から利用しています。

QuickSight ダッシュボードを一発で開く

QuickSight のユーザー名確認

ユーザー名の/より後ろの値を控えておきます。

.aws/config ファイルの設定

プロファイル名はprofile </後半の値を入力>とします。プロファイル名は任意ですが、QuickSight に登録されているユーザー名の/より後ろの値と合わせないと別のユーザー扱いになります。編集権限を持つユーザーの場合は意味もなく新規作成しないよう注意してください、そこそこお金がかかります。

[default]
region = ap-northeast-1
output = json

[profile cm-sandbox] # プロファイル名を QuickSight の登録ユーザー名に合わせる必要がある
role_arn = arn:aws:iam::[スイッチロール先のアカウントID]:role/cm-ohmura.yasutaka
mfa_serial = arn:aws:iam::[スイッチロール元のアカウントID]:mfa/cm-ohmura.yasutaka
source_profile = default

ダッシュボードの URL 確認

お目当てのダッシュボードの URL をブラウザの URL バーからコピーします。

ダッシュボードを開くコマンド作成

以下の形式でコマンドを組み立てます。

awsume [プロファイル名] --mfa-token (op item get "[1passwordのMFA登録名]" --otp) -cs [QuickSightのダッシュボードURL]

実際にダッシュボードを開いたときの例

実際のコマンドは以下のようになります。

awsume cm-sandbox --mfa-token (op item get "AWS_Sandbox" --otp) -cs https://ap-northeast-1.quicksight.aws.amazon.com/sn/dashboards/dddddd-69f9-eeee-ad19-ffffffffff

上記コマンドを実行すると 1Password から指紋認証を一度求められます。

指紋認証を終えると、QuickSight のダッシュボード画面が開きます。

おまけ

コマンドが長くなるためエイリアスを設定しておくと便利です。私は fish ユーザーなので fish の設定例を載せておきます。

fish の場合は config.fish ファイルに書き込みます。

vi ~/.config/fish/config.fish

作成したワンライナーにエイリアスをつけます。

alias open-qs='awsume cm-sandbox --mfa-token (op item get "AWS_Sandbox" --otp) -cs https://ap-northeast-1.quicksight.aws.amazon.com/sn/dashboards/dddddd-69f9-eeee-ad19-ffffffffff'

保存します。

funcsave fish_config

よき、QuickSight ライフを。

おわりに

プロファイル名を QuickSight の登録ユーザー名と合わせないといけない点でハマったので、この記事にまとめました。QuickSight に新規作成するユーザーであれば特に問題なく設定できると思います。

この記事をシェアする

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.