Amazon QuickSight API を使用したアプリケーションの開発 - Amazon QuickSight

Amazon QuickSight API を使用したアプリケーションの開発

AWS SDK を使用して、使用しているプログラミング言語またはプラットフォーム用にカスタマイズされた API にアクセスすると、大部分のデプロイを管理できます。詳細については、AWS SDK を参照してください。

API オペレーションの詳細については、Amazon QuickSight API リファレンスを参照してください。

Amazon QuickSight API オペレーションを呼び出す前に、IAM ID にアタッチされたポリシーの quicksight:operation-name アクセス許可が必要です。例えば、list-users を呼び出すには、アクセス許可 quicksight:ListUsers が必要です。すべてのオペレーションに同じパターンが適用されます。

必要なアクセス許可が不明な場合は、呼び出しを試みることができます。クライアントにより、不足しているアクセス許可が何であるかが分かります。リソースフィールドのアスタリスク (*) は、明示的なリソースの指定ではなく、アクセス許可ポリシーに使用できます。ただし、各アクセス許可はできるだけ制限することをお勧めします。Amazon QuickSight Amazon リソースネーム (ARN) 識別子を使用して、ポリシーでリソースを指定したり除外したりすることで、ユーザーアクセスを制限できます。

詳細については、以下を参照してください。

ユーザーまたはグループの ARN を取得するには、関連するリソースの Describe オペレーションを使用します。一部のシナリオでは、IAM で条件を追加して、API へのアクセスをさらに制限することができます。例えば、User1Group1 に追加する際、主要なリソースは Group1 であるため、特定のグループへのアクセスを許可したり、拒否することができます。さらに、IAM Amazon QuickSight キー quicksight:UserName を使用して条件を追加し、特定のユーザーがグループに追加されるのを許可したり防止したりすることもできます。

次に、ポリシーの例を示します。つまり、このポリシーがアタッチされている発信者は、グループに追加するユーザー名が CreateGroupMembership でない限り、すべてのグループで user1 オペレーションを呼び出すことができます。

{ "Effect": "Allow", "Action": "quicksight:CreateGroupMembership", "Resource": "arn:aws:quicksight:us-east-1:aws-account-id:group/default/*", "Condition": { "StringNotEquals": { "quicksight:UserName": "user1" } } }
AWS CLI

以下の手順は、AWS CLI を介して Amazon QuickSight API オペレーションを操作する方法について説明しています。次の手順は Bash でテスト済みですが、他のコマンドライン環境でも同一または類似していると考えられます。

  1. 環境に AWS SDK をインストールします。これを行う方法についての指示は、AWS コマンドラインインターフェイスにあります。

  2. 次のコマンドとフォローアップ手順を使用して、AWS CLI の ID とリージョンを設定します。適切なアクセス許可を持つ、IAM ID またはロールの認証情報を使用します。

    aws configure
  3. 次のコマンドを実行して Amazon QuickSight SDK ヘルプを確認します。

    aws quicksight help
  4. API の使用方法の詳細な手順を取得するには、その名前を入力した後に、以下のようにヘルプを入力します。

    aws quicksight list-users help
  5. これで、Amazon QuickSight API オペレーションを呼び出すことができます。この例では、アカウント内の Amazon QuickSight ユーザーのリストが返されます。

    aws quicksight list-users --aws-account-id aws-account-id --namespace default --region us-east-1
Java SDK

以下の手順を使用して、Amazon QuickSight を操作する Java アプリケーションを設定します。

  1. 開始するには、IDE で Java プロジェクトを作成してください。

  2. 新しいプロジェクトに Amazon QuickSight SDK をインポートします (例: AWSQuickSightJavaClient-1.11.x.jar)。

  3. IDE が Amazon QuickSight SDK のインデックスを作成すると、以下のようにインポートラインを追加できるようになります。

    import com.amazonaws.services.quicksight.AmazonQuickSight;

    IDE がこれを有効と認識しない場合は、SDK をインポートしたことを確認してください。

  4. 他の AWS SDK と同様に、Amazon QuickSight SDK はその機能の多くを実行するための外部依存関係が必要です。同じプロジェクトにこれらをダウンロードしてインポートする必要があります。以下の依存関係は必須です。

  5. これで、Amazon QuickSight クライアントを作成する準備が整いました。クライアントと通信できるデフォルトのパブリックエンドポイントを使用するか、エンドポイントを明示的に参照することもできます。AWS 認証情報を提供する方法は複数あります。次の例で、直接的かつシンプルなアプローチを提供します。次のクライアントメソッドは、以下のすべての API コールに使用されます。

    private static AmazonQuickSight getClient() { final AWSCredentialsProvider credsProvider = new AWSCredentialsProvider() { @Override public AWSCredentials getCredentials() { // provide actual IAM access key and secret key here return new BasicAWSCredentials("access-key", "secret-key"); } @Override public void refresh() {} }; return AmazonQuickSightClientBuilder .standard() .withRegion(Regions.US_EAST_1.getName()) .withCredentials(credsProvider) .build(); }
  6. ここで、上記のクライアントを使用して Amazon QuickSight アカウントのすべてのユーザーを一覧表示できます。

    注記

    Amazon QuickSight をサブスクライブするために使用した AWS アカウント ID を入力する必要があります。これは、発信者 ID の AWS アカウント ID と一致している必要があります。クロスアカウント呼び出しは現在サポートされていません。さらに、必須パラメータ namespace は常にデフォルトに設定されている必要があります。

    getClient().listUsers(new ListUsersRequest() .withAwsAccountId("relevant_AWS_account_ID") .withNamespace("default")) .getUserList().forEach(user -> { System.out.println(user.getArn()); });
  7. 使用可能なすべての API オペレーションと使用するリクエストオブジェクトのリストを表示するには、IDE でクライアントオブジェクトを Ctrl + クリックして Amazon QuickSight インターフェイスを表示します。または、Amazon QuickSight JavaClient JAR ファイルにある com.amazonaws.services.quicksight パッケージの中から検索します。

JavaScript (Node.js) SDK

Node.js を使用して Amazon QuickSight を操作するには、以下の手順を使用します。

  1. 次のコマンドを使用して、ノード環境を設定します。

    • npm install aws-sdk

    • npm install aws4

    • npm install request

    • npm install url

  2. AWS SDK を使用して Node.js を設定し、認証情報を設定する方法については、「AWS SDK for JavaScript SDK v2 開発者ガイド」を参照してください。

  3. 次のコード例を使用して、設定をテストします。HTTPS が必要です。この例では、Amazon QuickSight オペレーションとともに URL リクエストパラメータが一覧表示され、アカウントの Amazon QuickSight ユーザーのリストが続きます。

    const AWS = require('aws-sdk'); const https = require('https'); var quicksight = new AWS.Service({ apiConfig: require('./quicksight-2018-04-01.min.json'), region: 'us-east-1', }); console.log(quicksight.config.apiConfig.operations); quicksight.listUsers({ // Enter your actual AWS account ID 'AwsAccountId': 'relevant_AWS_account_ID', 'Namespace': 'default', }, function(err, data) { console.log('---'); console.log('Errors: '); console.log(err); console.log('---'); console.log('Response: '); console.log(data); });
Python3 SDK

以下の手順に従って、Amazon QuickSight を操作するカスタム構築の botocore パッケージを作成します。

  1. 環境の AWS ディレクトリにあるファイルで、認証情報を作成します。Linux/Mac ベースの環境では、そのファイルは ~/.aws/credentials と呼ばれ、次のように表示されます。

    [default] aws_access_key_id = Your_IAM_access_key aws_secret_access_key = Your_IAM_secret_key
  2. フォルダ botocore-1.12.10 を解凍します。ディレクトリを botocore-1.12.10 に変更し、Python3 インタプリタ環境を入力します。

  3. レスポンスは、ディクショナリオブジェクトとして返されます。レスポンスにはそれぞれ、リクエスト ID とレスポンスステータスを含む ResponseMetadata エントリがあります。その他のエントリは、実行されるオペレーションのタイプに基づいています。

  4. 次の例は、最初に作成、削除、グループを一覧表示するサンプルアプリです。次に、Quicksight アカウント内のユーザーが一覧で示されます。

    import botocore.session default_namespace = 'default' account_id = 'relevant_AWS_Account' session = botocore.session.get_session() client = session.create_client("quicksight", region_name='us-east-1') print('Creating three groups: ') client.create_group(AwsAccountId = account_id, Namespace=default_namespace, GroupName='MyGroup1') client.create_group(AwsAccountId = account_id, Namespace=default_namespace, GroupName='MyGroup2') client.create_group(AwsAccountId = account_id, Namespace=default_namespace, GroupName='MyGroup3') print('Retrieving the groups and listing them: ') response = client.list_groups(AwsAccountId = account_id, Namespace=default_namespace) for group in response['GroupList']: print(group) print('Deleting our groups: ') client.delete_group(AwsAccountId = account_id, Namespace=default_namespace, GroupName='MyGroup1') client.delete_group(AwsAccountId = account_id, Namespace=default_namespace, GroupName='MyGroup2') client.delete_group(AwsAccountId = account_id, Namespace=default_namespace, GroupName='MyGroup3') response = client.list_users(AwsAccountId = account_id, Namespace=default_namespace) for user in response['UserList']: print(user)
.NET/C# SDK

C#.NET を使用して Amazon QuickSight を操作するには、以下の手順を使用します。この例は、Microsoft Visual for Mac で作成されます。ユーザーの IDE とプラットフォームに基づいて、指示が多少異なる場合があります。しかし、類似しています。

  1. nuget.zip ファイルを nuget と呼ばれるフォルダに解凍します。

  2. Visual Studio で新しい [Console app (コンソールアプリ)] プロジェクトを作成します。

  3. ソリューションの下から、[Dependencies (依存関係)] を見つけます。メニューを右クリックして [Add Packages (パッケージを追加)] を選択し、コンテキストを開きます。

  4. ソースリストで、[Configure Sources (ソースの設定)] を選択します。

  5. [Add (追加)] を選択し、ソースに QuickSightSDK という名前を付けます。nuget フォルダを参照して [Add Source (ソースの追加)] を選択します。

  6. [OK] を選択します。次に、QuickSightSDK が選択された状態で、3 つの Amazon QuickSight パッケージをすべて選択します。

    • AWSSDK.QuickSight

    • AWSSDK.Extensions.NETCore.Setup

    • AWSSDK.Extensions.CognitoAuthentication

  7. [Add Package (パッケージの追加)] をクリックします。

  8. 次のサンプルアプリを、コンソールアプリエディタにコピーして貼り付けます。

    using System; using Amazon.QuickSight.Model; using Amazon.QuickSight; namespace DotNetQuickSightSDKTest { class Program { private static readonly string AccessKey = "insert_your_access_key"; private static readonly string SecretAccessKey = "insert_your_secret_key"; private static readonly string AccountID = "AWS_account_ID"; private static readonly string Namespace = "default"; // leave this as default static void Main(string[] args) { var client = new AmazonQuickSightClient( AccessKey, SecretAccessKey, Amazon.RegionEndpoint.USEast1); var listUsersRequest = new ListUsersRequest { AwsAccountId = AccountID, Namespace = Namespace }; client.ListUsersAsync(listUsersRequest).Result.UserList.ForEach( user => Console.WriteLine(user.Arn) ); var listGroupsRequest = new ListGroupsRequest { AwsAccountId = AccountID, Namespace = Namespace }; client.ListGroupsAsync(listGroupsRequest).Result.GroupList.ForEach( group => Console.WriteLine(group.Arn) ); } } }