Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Étape 2 : Obtenir l'URL avec le code d'authentification en pièce jointe
Important
Amazon QuickSight dispose de nouvelles API pour intégrer des analyses : GenerateEmbedUrlForAnonymousUser
etGenerateEmbedUrlForRegisteredUser
.
Vous pouvez toujours utiliser les GetSessionEmbedUrl
API GetDashboardEmbedUrl
and pour intégrer les tableaux de bord et la QuickSight console, mais elles ne contiennent pas les dernières fonctionnalités d'intégration. Pour connaître la dernière expérience up-to-date d'intégration, consultezIntégrer des QuickSight outils d'analyse dans vos applications.
Dans la section suivante, vous découvrirez comment authentifier votre utilisateur et obtenir l'URL de la session de console intégrable sur votre serveur d'applications.
Lorsqu'un utilisateur accède à votre application, l'application assume le rôle IAM pour le compte de l'utilisateur. Il ajoute ensuite l'utilisateur à QuickSight, s'il n'existe pas déjà. Puis, elle transmet un identifiant comme ID de session de rôle unique.
L'exécution des étapes décrites garantit que chaque visualiseur de la session de console est configuré de manière unique. QuickSight Elle applique également les paramètres par utilisateur, tels que les valeurs dynamiques et de sécurité par défaut au niveau des lignes pour les paramètres.
Les exemples suivants effectuent l'authentification IAM pour le compte de l'utilisateur. Ce code s'exécute sur votre serveur d'applications.
- Java
-
import com.amazonaws.auth.AWSCredentials; import com.amazonaws.auth.BasicAWSCredentials; import com.amazonaws.auth.AWSCredentialsProvider; import com.amazonaws.regions.Regions; import com.amazonaws.services.quicksight.AmazonQuickSight; import com.amazonaws.services.quicksight.AmazonQuickSightClientBuilder; import com.amazonaws.services.quicksight.model.GetSessionEmbedUrlRequest; import com.amazonaws.services.quicksight.model.GetSessionEmbedUrlResult; /** * Class to call QuickSight AWS SDK to get url for session embedding. */ public class GetSessionEmbedUrlQSAuth { private final AmazonQuickSight quickSightClient; public GetSessionEmbedUrlQSAuth() { this.quickSightClient = AmazonQuickSightClientBuilder .standard() .withRegion(Regions.US_EAST_1.getName()) .withCredentials(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() {} } ) .build(); } public String getQuicksightEmbedUrl( final String accountId, // YOUR AWS ACCOUNT ID final String userArn // REGISTERED USER ARN TO USE FOR EMBEDDING. REFER TO GETEMBEDURL SECTION IN DEV PORTAL TO FIND OUT HOW TO GET USER ARN FOR A QUICKSIGHT USER ) throws Exception { GetSessionEmbedUrlRequest getSessionEmbedUrlRequest = new GetSessionEmbedUrlRequest() .withAwsAccountId(accountId) .withEntryPoint("/start") .withUserArn(userArn); GetSessionEmbedUrlResult sessionEmbedUrl = quickSightClient.getSessionEmbedUrl(getSessionEmbedUrlRequest); return sessionEmbedUrl.getEmbedUrl(); } }
- JavaScript
-
global.fetch = require('node-fetch'); const AWS = require('aws-sdk'); function getSessionEmbedURL( accountId, // YOUR AWS ACCOUNT ID userArn, // REGISTERED USER ARN TO USE FOR EMBEDDING. REFER TO GETEMBEDURL SECTION IN DEV PORTAL TO FIND OUT HOW TO GET USER ARN FOR A QUICKSIGHT USER getEmbedUrlCallback, // GETEMBEDURL SUCCESS CALLBACK METHOD errorCallback // GETEMBEDURL ERROR CALLBACK METHOD ) { const getSessionParams = { AwsAccountId: accountId, EntryPoint: "/start", UserArn: userArn, SessionLifetimeInMinutes: 600, }; const quicksightGetSession = new AWS.QuickSight({ region: process.env.AWS_REGION, }); quicksightGetSession.getSessionEmbedUrl(getSessionParams, function(err, data) { if (err) { console.log(err, err.stack); errorCallback(err); } else { const result = { "statusCode": 200, "headers": { "Access-Control-Allow-Origin": "*", // USE YOUR WEBSITE DOMAIN TO SECURE ACCESS TO GETEMBEDURL API "Access-Control-Allow-Headers": "Content-Type" }, "body": JSON.stringify(data), "isBase64Encoded": false } getEmbedUrlCallback(result); } }); }
- Python3
-
import json import boto3 from botocore.exceptions import ClientError import time # Create QuickSight and STS clients qs = boto3.client('quicksight',region_name='us-east-1') sts = boto3.client('sts') # Function to generate embedded URL # accountId: YOUR AWS ACCOUNT ID # userArn: REGISTERED USER ARN TO USE FOR EMBEDDING. REFER TO GETEMBEDURL SECTION IN DEV PORTAL TO FIND OUT HOW TO GET USER ARN FOR A QUICKSIGHT USER def getSessionEmbedURL(accountId, userArn): try: response = qs.get_session_embed_url( AwsAccountId = accountId, EntryPoint = "/start", UserArn = userArn, SessionLifetimeInMinutes = 600 ) return { 'statusCode': 200, 'headers': {"Access-Control-Allow-Origin": "*", "Access-Control-Allow-Headers": "Content-Type"}, 'body': json.dumps(response), 'isBase64Encoded': bool('false') } except ClientError as e: print(e) return "Error generating embeddedURL: " + str(e)
- Node.js
-
L'exemple suivant montre le JavaScript (Node.js) que vous pouvez utiliser sur le serveur d'applications pour obtenir l'URL de la session de console intégrée. Vous pouvez utiliser cette URL dans votre site web ou votre application pour afficher la session de console.
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', }); quicksight.GetSessionEmbedUrl({ 'AwsAccountId': '
111122223333
', 'EntryPoint': 'https://url-for-console-page-to-open
', 'SessionLifetimeInMinutes':600
, 'UserArn': 'USER_ARN
' }, function(err, data) { console.log('Errors: '); console.log(err); console.log('Response: '); console.log(data); });//The URL returned is over 900 characters. For this example, we've shortened the string for //readability and added ellipsis to indicate that it's incomplete. { Status: 200, EmbedUrl: 'https://dashboards.example.com/embed/620bef10822743fab329fb3751187d2d… RequestId: '7bee030e-f191-45c4-97fe-d9faf0e03713' }
- .NET/C#
-
L'exemple suivant montre le code .NET/C # que vous pouvez utiliser sur le serveur d'applications afin d'obtenir l'URL pour la session de console intégrée. Vous pouvez utiliser cette URL dans votre site web ou votre application pour afficher la console.
var client = new AmazonQuickSightClient( AccessKey, SecretAccessKey, sessionToken, Amazon.RegionEndpoint.USEast1); try { Console.WriteLine( client.GetSessionEmbedUrlAsync(new GetSessionEmbedUrlRequest { 'AwsAccountId': '
111122223333
', 'EntryPoint': 'https://url-for-console-page-to-open
', 'SessionLifetimeInMinutes': 600, 'UserArn': 'USER_ARN
' AwsAccountId =111122223333
, EntryPoint =https://url-for-console-page-to-open
, SessionLifetimeInMinutes =600
, UserArn = 'USER_ARN
' }).Result.EmbedUrl ); } catch (Exception ex) { Console.WriteLine(ex.Message); } - AWS CLI
-
Pour assumer le rôle, choisissez l'une des opérations d'API AWS Security Token Service (AWS STS) suivantes :
-
AssumeRole— Utilisez cette opération lorsque vous utilisez une identité IAM pour assumer le rôle.
-
AssumeRoleWithWebIdentity— Utilisez cette opération lorsque vous utilisez un fournisseur d'identité Web pour authentifier votre utilisateur.
-
AssumeRoleWithSaml— Utilisez cette opération lorsque vous utilisez le protocole SAML pour authentifier vos utilisateurs.
L'exemple suivant illustre la commande de l'interface de ligne de commande pour définir le rôle IAM. Les autorisations doivent être activées pour
quicksight:GetSessionEmbedUrl
. Si vous envisagez d'ajouter just-in-time des utilisateurs lors de leur première ouverture QuickSight, les autorisations doivent également être activées pour le rôlequicksight:RegisterUser
.aws sts assume-role \ --role-arn "
arn:aws:iam::111122223333:role/embedding_quicksight_dashboard_role
" \ --role-session-namejohn.doe@example.com
L'opération
assume-role
renvoie trois paramètres de sortie : la clé d'accès, la clé secrète et le jeton de session.Note
Si vous obtenez une erreur
ExpiredToken
lorsque vous appelez l'opérationAssumeRole
, ceci est probablement dû au fait que le précédentSESSION TOKEN
est encore dans les variables de l'environnement. Pour l'effacer, définissez les variables suivantes :-
AWS_ACCESS_KEY_ID
-
AWS_SECRET_ACCESS_KEY
-
AWS_SESSION_TOKEN
L'exemple suivant montre comment définir ces trois paramètres dans l'interface de ligne de commande. Si vous utilisez une machine Microsoft Windows, utilisez
set
au lieu deexport
.export AWS_ACCESS_KEY_ID = "
access_key_from_assume_role
" export AWS_SECRET_ACCESS_KEY = "secret_key_from_assume_role
" export AWS_SESSION_TOKEN = "session_token_from_assume_role
"L'exécution de ces commandes définit l'ID de session de rôle de l'utilisateur visitant votre site web sur
embedding_quicksight_console_session_role/john.doe@example.com
. L'ID de session de rôle se compose du nom de rôle issu durole-arn
et de la valeurrole-session-name
. L'utilisation de l'ID de session de rôle unique pour chaque utilisateur garantit que les autorisations appropriées sont définies pour chaque utilisateur. Ceci évite également toute limitation des accès des utilisateurs. La limitation est une fonctionnalité de sécurité qui empêche le même utilisateur d'accéder à partir de plusieurs QuickSight emplacements.L'ID de session de rôle devient également le nom d'utilisateur dans QuickSight. Vous pouvez utiliser ce modèle pour configurer vos utilisateurs à l' QuickSight avance ou pour les configurer la première fois qu'ils accèdent à une session de console.
L'exemple suivant montre la commande de l'interface de ligne de commande que vous pouvez utiliser pour provisionner un utilisateur. Pour plus d'informations sur RegisterUserDescribeUser, et d'autres opérations d' QuickSight API, consultez la référence des QuickSight API.
aws quicksight register-user \ --aws-account-id
111122223333
\ --namespacedefault
\ --identity-typeIAM
\ --iam-arn "arn:aws:iam::111122223333:role/embedding_quicksight_dashboard_role
" \ --user-roleREADER
\ --user-namejhnd
\ --session-name "john.doe@example.com
" \ --emailjohn.doe@example.com
\ --regionus-east-1
\ --custom-permissions-nameTeamA1
Si l'utilisateur est authentifié via Microsoft AD, vous n'avez pas besoin d'utiliser
RegisterUser
pour le configurer. Ils devraient plutôt être automatiquement abonnés lors de leur premier accès QuickSight. Pour les utilisateurs Microsoft AD, vous pouvez utiliserDescribeUser
pour obtenir l'ARN de l'utilisateur.La première fois qu'un utilisateur accède QuickSight, vous pouvez également l'ajouter au groupe approprié. L'exemple suivant montre la commande de l'interface de ligne de commande pour ajouter un utilisateur à un groupe.
aws quicksight create-group-membership \ --aws-account-id=
111122223333
\ --namespace=default
\ --group-name=financeusers
\ --member-name="embedding_quicksight_dashboard_role/john.doe@example.com
"Vous avez désormais un utilisateur de votre application qui est également un utilisateur de QuickSight et qui a accès à la session de QuickSight console.
Enfin, pour obtenir une URL signée pour la session de console, appelez
get-session-embed-url
à partir du serveur d'applications. Cela renvoie l'URL de session de console intégrable. L'exemple suivant indique comment obtenir l'URL d'une session de console intégrée à l'aide d'un appel côté serveur pour les utilisateurs authentifiés à l'aide de AWS Managed Microsoft AD ou de l'authentification unique (IAM Identity Center).aws quicksight get-dashboard-embed-url \ --aws-account-id
111122223333
\ --entry-pointthe-url-for--the-console-session
\ --session-lifetime-in-minutes600
\ --user-arn arn:aws:quicksight:us-east-1
:111122223333
:user/default/embedding_quicksight_dashboard_role
/embeddingsessionPour de plus amples informations sur l'utilisation de cette opération, veuillez consulter GetSessionEmbedUrl. Vous pouvez utiliser cette opération et d'autres opérations d'API dans votre propre code.
-