Entwickeln von Anwendungen mit der Amazon QuickSight-API
Sie können auch die meisten Aspekte Ihrer Bereitstellung verwalten, indem Sie die AWS-SDKs verwenden, um auf eine API zuzugreifen, die an die von Ihnen verwendete Programmiersprache oder -plattform angepasst ist. Weitere Informationen finden Sie unter AWS-SDKs. 
Weitere Informationen zu den API-Operationen finden Sie unter der Amazon QuickSight-API-Referenz. 
Bevor Sie die Amazon QuickSight–APIOperationen aufrufen können, benötigen Sie die quicksight:operation-name-Berechtigung in einer Richtlinie, die an die IAM-Identität angehängt ist. Um beispielsweise list-users aufzurufen, benötigen Sie die Berechtigung quicksight:ListUsers. Dieses Muster gilt für alle Operationen.
Wenn Sie sich nicht sicher sind, welche Berechtigungen erforderlich sind, können Sie versuchen, einen Anruf zu tätigen. Der Kunde teilt Ihnen dann mit, welche Erlaubnis fehlt. Sie können ein Sternchen (*) im Feld Ressource Ihrer Berechtigungsrichtlinie verwenden, anstatt explizite Ressourcen anzugeben. Wir empfehlen jedoch, dass Sie die einzelnen Berechtigungen möglichst einschränken. Sie können den Benutzerzugriff beschränken, indem Sie Ressourcen in der Richtlinie unter Verwendung des Amazon QuickSight–Amazon Resource Name (ARN) angeben oder ausschließen. 
Weitere Informationen finden Sie hier:
Verwenden Sie zum Abrufen eines Benutzers oder einer Gruppe die Operation Describe für die jeweilige Ressource. Sie können auch Bedingungen in IAM hinzufügen, um den Zugriff auf eine API in bestimmten Szenarien weiter zu beschränken. Wenn Sie beispielsweise User1 in Group1 einfügen, ist Group1 die Hauptressource. So können Sie den Zugriff auf bestimmte Gruppen erlauben oder verbieten. Sie können aber auch eine Bedingung hinzufügen, indem Sie mit dem IAM-Amazon QuickSight-Schlüssel quicksight:UserName das Hinzufügen bestimmter Benutzer zu dieser Gruppe erlauben oder verhindern. 
Es folgt eine Beispielrichtlinie. Dies bedeutet, dass ein Aufrufer, an den diese Richtlinie angehängt ist, die Operation CreateGroupMembership für jede Gruppe aufrufen kann, sofern der der Gruppe hinzugefügte Benutzername nicht user1 lautet. 
{
    "Effect": "Allow",
    "Action": "quicksight:CreateGroupMembership",
    "Resource": "arn:aws:quicksight:us-east-1:aws-account-id:group/default/*",
    "Condition": {
        "StringNotEquals": {
            "quicksight:UserName": "user1"
        }
    }
}
	    - AWS CLI
 - 
	        	
Im folgenden Verfahren wird erläutert, wie Sie mit Amazon QuickSight-API-Operationen über die AWS-CLI interagieren. Die folgenden Anweisungen wurden in Bash getestet, sollten jedoch für andere Befehlszeilenumgebungen identisch oder zumindest ähnlich sein.
		- 
				
Installieren Sie das AWS-SDK in der Umgebung. Anweisungen hierzu finden Sie unter AWS-Befehlszeilenschnittstelle.
			 - 
				
Richten Sie die AWS-CLI-Identität und -Region mit dem folgenden Befehl und den folgenden Anweisungen ein. Verwenden Sie die Anmeldeinformationen für eine IAM-Identität oder -Rolle, die über die erforderlichen Berechtigungen verfügt. 
				aws configure
			 - 
				
Die Hilfe zum Amazon QuickSight-SDK können Sie mit dem folgenden Befehl aufrufen: 
				aws quicksight help
			 - 
				
Detaillierte Anweisungen zur Verwendung einer API können Sie anzeigen, indem Sie den Namen der API eingeben, gefolgt von „help“: 
				aws quicksight list-users help
			 - 
				
Jetzt können Sie eine Amazon QuickSight-API-Operation aufrufen. Dieses Beispiel gibt eine Liste von Amazon QuickSight-Benutzern im Konto zurück. 
				aws quicksight list-users --aws-account-id aws-account-id --namespace default --region us-east-1
			 
       
	         
	    
	    
	    - Java SDK
 - 
	        	
Gehen Sie wie folgt vor, um eine Java-App einzurichten, die mit Amazon QuickSight interagiert. 
				- 
						
Erstellen Sie zunächst ein Java-Projekt in der IDE.
					 - 
						
Importieren Sie das Amazon QuickSight-SDK in das neue Projekt, zum Beispiel: AWSQuickSightJavaClient-1.11.x.jar
					 - 
						
Sobald die IDE das Amazon QuickSight-SDK indiziert, sollten Sie folgendermaßen eine Importzeile hinzufügen können: 
						import com.amazonaws.services.quicksight.AmazonQuickSight;
						Wenn die IDE dieses nicht als gültig erkennt, müssen Sie verifizieren, dass das SDK importiert wurde.
					 - 
						
Wie andere AWS-SDKs benötigt das Amazon QuickSight-SDK zur Ausführung vieler enthaltener Funktionen externe Abhängigkeiten. Sie müssen diese herunterladen und in dasselbe Projekt importieren. Die folgenden Anhängigkeiten sind erforderlich:
						
					 - 
						
Jetzt können Sie einen Amazon QuickSight-Client erstellen. Sie können einen öffentlichen Standardendpunkt verwenden, mit dem der Client kommunizieren kann. Alternativ können Sie explizit auf den Endpunkt verweisen. Sie haben mehrere Möglichkeiten, die AWS-Anmeldeinformationen zu übergeben. Das folgende Beispiel basiert auf einem direkten und einfachen Ansatz. Die folgende Client-Methode wird verwendet, um alle folgenden API-Aufrufe durchzuführen:
						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();
	}
					 - 
						
Jetzt können wir den Client oben verwenden, um alle Benutzer im Amazon QuickSight-Konto aufzulisten. 
						Sie müssen die AWS-Konto-ID bereitstellen, die Sie zum Abonnieren von Amazon QuickSight verwendet haben. Diese muss der AWS-Konto-ID des Aufrufers entsprechen. Kontoübergreifende Aufrufe werden derzeit nicht unterstützt. Der erforderliche Parameter namespace sollte immer auf default gesetzt werden. 
 
						getClient().listUsers(new ListUsersRequest()
        .withAwsAccountId("relevant_AWS_account_ID")
        .withNamespace("default"))
        .getUserList().forEach(user -> {
            System.out.println(user.getArn());
        });
					 - 
						
Eine Liste aller möglichen API-Operationen und der von ihnen verwendeten Anforderungsobjekte wird dargestellt, wenn Sie bei gedrückter Taste STRG in der IDE auf das Client-Objekt klicken, um die Amazon QuickSight-Schnittstelle anzuzeigen. Alternativ finden Sie sie im Paket com.amazonaws.services.quicksight in der Amazon QuickSight-JavaClient-JAR-Datei.
					 
       
	         
	    
	    
	    - JavaScript (Node.js) SDK
 -  
	        	
Verwenden Sie das folgende Verfahren, um mittels Node.js mit Amazon QuickSight zu interagieren. 
				- 
						
Richten Sie die Knotenumgebung mit den folgenden Befehlen ein:
						
							 
							 
							 
							 
						- 
								
npm install aws-sdk
							 - 
								
npm install aws4 
							 - 
								
npm install request
							 - 
								
npm install url
							 
 
					 - 
						
Weitere Informationen zum Konfigurieren des Node.js mit AWS-SDK und Festlegen Ihrer Anmeldeinformationen siehe--> AWS SDK für JavaScript-Entwicklerhandbuch für SDK v2. 
					 - 
						
Verwenden Sie das folgende Code-Beispiel zum Testen der Konfiguration. HTTPS ist erforderlich. Das Beispiel zeigt eine vollständige Liste der Amazon QuickSight-Operationen zusammen mit den URL-Anforderungsparametern, gefolgt von einer Liste der Amazon QuickSight-Benutzer in einem Konto.
						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
 - 
	        	
Mit den folgenden Schritten können Sie ein benutzerdefiniertes botocore-Paket für die Interaktion mit Amazon QuickSight erstellen. 
				- 
						
Erstellen Sie eine Datei mit Anmeldeinformationen im AWS-Verzeichnis für die Umgebung. In einer Linux/Mac-basierten Umgebung heißt die Datei ~ /.aws/credentials und sieht wie folgt aus:
						[default]
aws_access_key_id = Your_IAM_access_key
aws_secret_access_key = Your_IAM_secret_key
					 - 
						
Entpacken Sie den Ordner botocore-1.12.10. Ändern Sie das Verzeichnis in botocore-1.12.10 und rufen Sie die Python3-Interpreter-Umgebung auf.
					 - 
						
Antworten werden als Dictionary-Objekt zurückgegeben. Sie haben jeweils einen ResponseMetadata-Eintrag mit Anforderungs-ID und Antwortstatus. Andere Einträge basieren auf dem Typ der auszuführenden Operation.
					 - 
						
Das folgende Beispiel ist eine Beispielanwendung, die zunächst Gruppen erstellt, löscht und auflistet. Anschließend werden Benutzer in einem Quicksight-Konto aufgelistet:
						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
 -     
	        	
Verwenden Sie das folgende Verfahren, um mittels C#.NET mit Amazon QuickSight zu interagieren. Dieses Beispiel wurde mit Microsoft Visual für Mac erstellt. Die Anweisungen können in Abhängigkeit von IDE und Plattform geringfügig abweichen. Sie sollten jedoch ähnlich sein.
				
				- 
						
Extrahieren Sie die Datei nuget.zip in einen Ordner namens nuget.
					 - 
						
Erstellen Sie ein neues Konsolenanwendung-Projekt in Visual Studio.
					 - 
						
Suchen Sie in der Lösung die App Abhängigkeiten, öffnen Sie dann das Kontextmenü und wählen Sie Pakete hinzufügen.
					 - 
						
Wählen Sie in der Liste der Quellen Quellen konfigurieren.
					 - 
						
Wählen Sie Hinzufügen und weisen Sie der Quelle den Namen QuickSightSDK zu. Navigieren Sie zum Ordner nuget und wählen Sie Quelle hinzufügen.
					 - 
						
Wählen Sie OK aus. Wählen Sie dann alle drei Amazon QuickSight-Pakete, während QuickSightSDK ausgewählt ist:
						
					 - 
						
Klicken Sie auf Paket hinzufügen. 
					 - 
						
Kopieren Sie die folgende Beispielanwendung und fügen Sie sie in den Konsolen-Anwendungseditor ein.
						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)
            );
        }
    }
}