

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.

# Analyses intégrées pour Amazon Quick Sight
<a name="embedded-analytics"></a>

**Important**  
Amazon Quick Sight propose de nouvelles opérations d'API pour intégrer des analyses : `GenerateEmbedUrlForAnonymousUser` et`GenerateEmbedUrlForRegisteredUser`.  
Vous pouvez toujours utiliser les opérations d'`GetSessionEmbedUrl`API `GetDashboardEmbedUrl` et d'API pour intégrer des tableaux de bord et la console Amazon Quick Sight, mais elles ne contiennent pas les dernières fonctionnalités d'intégration. Pour plus d’informations sur l’utilisation des anciennes opérations d’API, consultez la rubrique [Intégration des analyses à l'aide des opérations d'API GetDashboardEmbedURL et GetSessionEmbedURL](embedded-analytics-deprecated.md).


|  | 
| --- |
|  S’applique à : édition Enterprise  | 


|  | 
| --- |
|    Public cible : développeurs Amazon Quick  | 

Grâce aux outils d'analyse intégrés d'Amazon Quick Sight, vous pouvez intégrer de manière fluide des expériences basées sur les données dans vos applications logicielles. Vous pouvez personnaliser les composants intégrés afin qu’ils correspondent à votre marque. Cette fonctionnalité met la puissance d'Amazon Quick Sight à la disposition de vos utilisateurs finaux, où ils peuvent analyser les données et interagir avec elles sans jamais quitter l'application. L’amélioration de l’expérience utilisateur en réduisant la complexité cognitive offre aux utilisateurs de meilleures opportunités de compréhension et d’efficacité. 

Amazon Quick Sight prend en charge l'intégration des éléments suivants : 
+ Console Amazon Quick Sight (expérience de création complète pour les utilisateurs enregistrés)
+ Tableaux de bord et visuels Amazon Quick Sight (pour les utilisateurs enregistrés, les utilisateurs anonymes, les utilisateurs finaux publics)
+ Barre de recherche Amazon Quick Sight Q (pour les utilisateurs enregistrés et les utilisateurs anonymes)

Avec une console Amazon Quick Sight intégrée, vous intégrez l'expérience Amazon Quick Sight complète. Cela permet d'utiliser les outils de création Amazon Quick Sight dans le cadre de votre application, plutôt que dans le contexte du site Web AWS Management Console ou d'un site Web autonome. Les utilisateurs d'une console Amazon Quick Sight intégrée doivent être enregistrés en tant qu'auteurs ou administrateurs Amazon Quick Sight dans votre Compte AWS. Ils doivent également y être authentifiés Compte AWS, en utilisant l'une des méthodes d'authentification prises en charge par Amazon Quick Sight. 

Avec un tableau de bord ou un visuel Amazon Quick Sight intégré, les lecteurs bénéficient des mêmes fonctionnalités et de la même interactivité que dans un tableau de bord ou un visuel publié. Pour utiliser l’intégration d’un tableau de bord ou d’une représentation visuelle, les lecteurs (utilisateurs) peuvent inclure l’un des éléments suivants :
+ Les utilisateurs d'Amazon Quick Sight se sont authentifiés dans votre compte Compte AWS par n'importe quelle méthode prise en charge par Amazon Quick Sight.
+ Les visiteurs non authentifiés d’un site web ou d’une application : cette option nécessite des packs de session ayant une tarification de la capacité. Pour plus d'informations sur les types d'abonnement, consultez [la section Comprendre les abonnements et les rôles d'Amazon Quick Sight](https://docs.aws.amazon.com/quicksight/latest/user/user-types.html#subscription-role-mapping).
+ Plusieurs utilisateurs finaux consultant un affichage sur des moniteurs ou des grands écrans grâce à un accès par programme.

Si votre application réside également dans AWS, elle n'a pas besoin de résider sur le même emplacement Compte AWS que l'abonnement Amazon Quick Sight. Toutefois, l'application doit être en mesure d'assumer le rôle Gestion des identités et des accès AWS (IAM) que vous utilisez pour les appels d'API. 

Avant de pouvoir intégrer du contenu, assurez-vous que vous utilisez l'édition Amazon Quick Sight Enterprise dans l' Compte AWS endroit où vous prévoyez d'utiliser l'intégration. 

L'intégration d'Amazon Quick Sight est disponible dans toutes les versions prises en charge Régions AWS. 

**Topics**
+ [

# Intégrer les analyses Amazon Quick Sight dans vos applications
](embedding-overview.md)
+ [

# Intégration de ressources Amazon Quick Sight personnalisées dans votre application
](customize-and-personalize-embedded-analytics.md)
+ [

# Intégrer les visuels et les tableaux de bord d'Amazon Quick Sight à l'aide d'un code d'intégration en un clic
](1-click-embedding.md)
+ [

# Intégration avec Amazon Quick Sight APIs
](embedded-analytics-api.md)

# Intégrer les analyses Amazon Quick Sight dans vos applications
<a name="embedding-overview"></a>


|  | 
| --- |
|  S’applique à : édition Enterprise  | 

Pour intégrer des analyses, vous pouvez exécuter l'API d'intégration Amazon Quick Sight afin de générer le code intégré. Pour les tableaux de bord, vous pouvez également copier un code intégré lorsque vous partagez le tableau de bord dans Amazon Quick Sight. Chaque option est décrite ci-dessous.

## Intégration en un clic pour les utilisateurs enregistrés
<a name="embedding-overview-1-click"></a>

Lorsque vous partagez un tableau de bord avec des utilisateurs enregistrés dans votre compte, vous pouvez copier un code d’intégration pour le tableau de bord et le coller dans le code HTML de votre application interne. 

L'intégration d'entreprise en un clic est idéale lorsque vous souhaitez intégrer un tableau de bord Amazon Quick Sight dans une application interne auprès de laquelle les utilisateurs doivent s'authentifier. Lorsque vous copiez le code d’intégration, vous obtenez un code d’intégration statique qui ne change pas.

Pour de plus amples informations, veuillez consulter [Intégration de visuels et de tableaux de bord Amazon Quick Sight pour les utilisateurs enregistrés à l'aide d'un code d'intégration en un clic](embedded-analytics-1-click.md).

## Intégration avec Amazon Quick Sight APIs
<a name="embedding-overview-api"></a>

L'intégration avec l'API Amazon Quick Sight est idéale lorsque vous souhaitez intégrer l'expérience Amazon Quick Sight dans une application interne auprès de laquelle les utilisateurs doivent s'authentifier, ou dans une application externe accessible à tous. Lorsque vous utilisez les opérations de l’API d’intégration pour générer un code d’intégration, vous obtenez un code à usage unique.

Pour de plus amples informations, veuillez consulter [Intégration avec Amazon Quick Sight APIs](embedded-analytics-api.md).

# Intégration de ressources Amazon Quick Sight personnalisées dans votre application
<a name="customize-and-personalize-embedded-analytics"></a>

Vous pouvez utiliser les outils d'analyse intégrés d'Amazon Quick Sight pour intégrer des ressources Amazon Quick Sight personnalisées dans votre application, adaptées aux besoins de votre entreprise. Pour les tableaux de bord et les visuels intégrés, les auteurs d'Amazon Quick Sight peuvent ajouter des filtres et des hiérarchies auxquels les lecteurs peuvent accéder lorsqu'ils naviguent dans le tableau de bord ou le visuel. Les développeurs Amazon Quick Sight peuvent également utiliser Amazon Quick Sight SDKs pour renforcer les intégrations entre leurs applications SaaS et leurs ressources intégrées Amazon Quick Sight afin d'ajouter des actions de rappel de points de données aux éléments visuels d'un tableau de bord lors de l'exécution.

Pour plus d'informations sur Amazon Quick Sight SDKs, consultez le bouton `amazon-quicksight-embedding-sdk` activé [GitHub](https://github.com/awslabs/amazon-quicksight-embedding-sdk)ou le [NPM](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk).

Vous trouverez ci-dessous des descriptions expliquant comment utiliser Amazon Quick Sight SDKs pour personnaliser vos analyses intégrées Amazon Quick Sight.

**Topics**
+ [

# Ajout d'actions de rappel intégrées lors de l'exécution dans Amazon Quick Sight
](embedding-custom-actions-callback.md)
+ [

# Filtrage des données au moment de l'exécution pour les tableaux de bord et visuels intégrés à Amazon Quick Sight
](embedding-runtime-filtering.md)
+ [

# Personnalisez l'apparence des tableaux de bord et visuels intégrés d'Amazon Quick Sight
](embedding-runtime-theming.md)
+ [

# Utilisation du SDK d'intégration Amazon Quick Sight pour activer des liens partageables vers des vues de tableau de bord intégrées
](embedded-view-sharing.md)

# Ajout d'actions de rappel intégrées lors de l'exécution dans Amazon Quick Sight
<a name="embedding-custom-actions-callback"></a>

Utilisez des actions de rappel de points de données intégrées pour renforcer les intégrations entre votre application SaaS (logiciel en tant que service) et vos tableaux de bord et visuels intégrés Amazon Quick Sight. Les développeurs peuvent enregistrer des points de données à rappeler avec le SDK d'intégration Amazon Quick Sight. Lorsque vous enregistrez une action de rappel pour une représentation visuelle, les lecteurs peuvent sélectionner un point de données sur la représentation visuelle pour recevoir un rappel fournissant des données spécifiques au point de données sélectionné. Ces informations peuvent être utilisées pour signaler des enregistrements clés, compiler des données brutes spécifiques au point de données, capturer des enregistrements et compiler des données pour les processus backend.

Les rappels intégrés ne sont pas pris en charge pour le contenu visuel personnalisé, les zones de texte ou les informations.

Avant de commencer à enregistrer des points de données pour le rappel, mettez à jour le kit SDK d’intégration vers la version 2.3.0. Pour plus d'informations sur l'utilisation du SDK Amazon Quick Sight Embedding, consultez le [amazon-quicksight-embedding-sdk](https://github.com/awslabs/amazon-quicksight-embedding-sdk) GitHub

Un rappel de point de données peut être enregistré pour un ou plusieurs visuels lors de l'exécution via le SDK Amazon Quick Sight. Vous pouvez également enregistrer un rappel de point de données pour toute interaction prise en charge par la structure de l'[VisualCustomAction](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_VisualCustomAction.html)API. Cela permet au rappel du point de données de démarrer lorsque l’utilisateur sélectionne le point de données sur la représentation visuelle ou lorsque le point de données est sélectionné dans le menu contextuel du point de données. L’exemple suivant enregistre un rappel de point de données lancé par le lecteur lorsqu’il sélectionne un point de données sur la représentation visuelle.

```
/const MY_GET_EMBED_URL_ENDPOINT =
  "https://my.api.endpoint.domain/MyGetEmbedUrlApi"; // Sample URL

// The dashboard id to embed
const MY_DASHBOARD_ID = "my-dashboard"; // Sample ID

// The container element in your page that will have the embedded dashboard
const MY_DASHBOARD_CONTAINER = "#experience-container"; // Sample ID

// SOME HELPERS

const ActionTrigger = {
  DATA_POINT_CLICK: "DATA_POINT_CLICK",
  DATA_POINT_MENU: "DATA_POINT_MENU",
};

const ActionStatus = {
  ENABLED: "ENABLED",
  DISABLED: "DISABLED",
};

// This function makes a request to your endpoint to obtain an embed url for a given dashboard id
// The example implementation below assumes the endpoint takes dashboardId as request data
// and returns an object with EmbedUrl property
const myGetEmbedUrl = async (dashboardId) => {
  const apiOptions = {
    dashboardId,
  };
  const apiUrl = new URL(MY_GET_EMBED_URL_ENDPOINT);
  apiUrl.search = new URLSearchParams(apiOptions).toString();
  const apiResponse = await fetch(apiUrl.toString());
  const apiResponseData = await apiResponse.json();
  return apiResponseData.EmbedUrl;
};

// This function constructs a custom action object
const myConstructCustomActionModel = (
  customActionId,
  actionName,
  actionTrigger,
  actionStatus
) => {
  return {
    Name: actionName,
    CustomActionId: customActionId,
    Status: actionStatus,
    Trigger: actionTrigger,
    ActionOperations: [
      {
        CallbackOperation: {
          EmbeddingMessage: {},
        },
      },
    ],
  };
};

// This function adds a custom action on the first visual of first sheet of the embedded dashboard
const myAddVisualActionOnFirstVisualOfFirstSheet = async (
  embeddedDashboard
) => {
  // 1. List the sheets on the dashboard
  const { SheetId } = (await embeddedDashboard.getSheets())[0];
  // If you'd like to add action on the current sheet instead, you can use getSelectedSheetId method
  // const SheetId = await embeddedDashboard.getSelectedSheetId();

  // 2. List the visuals on the specified sheet
  const { VisualId } = (await embeddedDashboard.getSheetVisuals(SheetId))[0];

  // 3. Add the custom action to the visual
  try {
    const customActionId = "custom_action_id"; // Sample ID
    const actionName = "Flag record"; // Sample name
    const actionTrigger = ActionTrigger.DATA_POINT_CLICK; // or ActionTrigger.DATA_POINT_MENU
    const actionStatus = ActionStatus.ENABLED;
    const myCustomAction = myConstructCustomActionModel(
      customActionId,
      actionName,
      actionTrigger,
      actionStatus
    );
    const response = await embeddedDashboard.addVisualActions(
      SheetId,
      VisualId,
      [myCustomAction]
    );
    if (!response.success) {
      console.log("Adding visual action failed", response.errorCode);
    }
  } catch (error) {
    console.log("Adding visual action failed", error);
  }
};

const parseDatapoint = (visualId, datapoint) => {
  datapoint.Columns.forEach((Column, index) => {
    // FIELD | METRIC
    const columnType = Object.keys(Column)[0];

    // STRING | DATE | INTEGER | DECIMAL
    const valueType = Object.keys(Column[columnType])[0];
    const { Column: columnMetadata } = Column[columnType][valueType];

    const value = datapoint.RawValues[index][valueType];
    const formattedValue = datapoint.FormattedValues[index];

    console.log(
      `Column: ${columnMetadata.ColumnName} has a raw value of ${value}
           and formatted value of ${formattedValue.Value} for visual: ${visualId}`
    );
  });
};

// This function is used to start a custom workflow after the end user selects a datapoint
const myCustomDatapointCallbackWorkflow = (callbackData) => {
  const { VisualId, Datapoints } = callbackData;

  parseDatapoint(VisualId, Datapoints);
};

// EMBEDDING THE DASHBOARD

const main = async () => {
  // 1. Get embed url
  let url;
  try {
    url = await myGetEmbedUrl(MY_DASHBOARD_ID);
  } catch (error) {
    console.log("Obtaining an embed url failed");
  }

  if (!url) {
    return;
  }

  // 2. Create embedding context
  const embeddingContext = await createEmbeddingContext();

  // 3. Embed the dashboard
  const embeddedDashboard = await embeddingContext.embedDashboard(
    {
      url,
      container: MY_DASHBOARD_CONTAINER,
      width: "1200px",
      height: "300px",
      resizeHeightOnSizeChangedEvent: true,
    },
    {
      onMessage: async (messageEvent) => {
        const { eventName, message } = messageEvent;
        switch (eventName) {
          case "CONTENT_LOADED": {
            await myAddVisualActionOnFirstVisualOfFirstSheet(embeddedDashboard);
            break;
          }
          case "CALLBACK_OPERATION_INVOKED": {
            myCustomDatapointCallbackWorkflow(message);
            break;
          }
        }
      },
    }
  );
};

main().catch(console.error);
```

Vous pouvez également configurer l’exemple précédent pour lancer le rappel du point de données lorsque l’utilisateur ouvre le menu contextuel. Pour faire cela à l’aide de l’exemple précédent, définissez la valeur de `actionTrigger` sur `ActionTrigger.DATA_POINT_MENU`.

Une fois qu’un rappel de point de données est enregistré, il est appliqué à la plupart des points de données sur la ou les représentations visuelles spécifiées. Les rappels ne s’appliquent pas aux totaux ou aux sous-totaux des représentations visuelles. Lorsqu'un lecteur interagit avec un point de données, un `CALLBACK_OPERATION_INVOKED` message est envoyé au SDK d'intégration Amazon Quick Sight. Ce message est capturé par le gestionnaire `onMessage`. Le message contient des valeurs brutes et afficher des valeurs pour la ligne complète de données associée au point de données sélectionné. Il contient également les métadonnées de colonne pour toutes les colonnes de la représentation visuelle dans laquelle le point de données est contenu. Voici un exemple de message `CALLBACK_OPERATION_INVOKED`.

```
{
   CustomActionId: "custom_action_id",
   DashboardId: "dashboard_id",
   SheetId: "sheet_id",
   VisualId: "visual_id",
   DataPoints: [
        {
            RawValues: [
                    {
                        String: "Texas" // 1st raw value in row
                    },
                    {
                        Integer: 1000 // 2nd raw value in row
                    }
            ],
            FormattedValues: [
                    {Value: "Texas"}, // 1st formatted value in row
                    {Value: "1,000"} // 2nd formatted value in row
            ],
            Columns: [
                    { // 1st column metadata
                        Dimension: {
                            String: {
                                Column: {
                                    ColumnName: "State",
                                    DatsetIdentifier: "..."
                                }
                            }
                        }
                    },
                    { // 2nd column metadata
                        Measure: {
                            Integer: {
                                Column: {
                                    ColumnName: "Cancelled",
                                    DatsetIdentifier: "..."
                                },
                                AggregationFunction: {
                                    SimpleNumericalAggregation: "SUM"
                                }
                            }
                        }
                    }
            ]
        }
   ]
}
```

# Filtrage des données au moment de l'exécution pour les tableaux de bord et visuels intégrés à Amazon Quick Sight
<a name="embedding-runtime-filtering"></a>

Vous pouvez utiliser des méthodes de filtrage dans le SDK d'intégration d'Amazon Quick Sight pour tirer parti de la puissance des filtres Amazon Quick Sight au sein de votre application logicielle en tant que service (SaaS) lors de l'exécution. Les filtres d'exécution permettent aux propriétaires d'entreprise d'intégrer leur application à leurs tableaux de bord et visuels Amazon Quick Sight intégrés. Pour ce faire, créez des contrôles de filtre personnalisés dans votre application et appliquez des préréglages de filtre en fonction des données de votre application. Les développeurs peuvent ensuite personnaliser les configurations de filtre pour les utilisateurs finaux lors de l’exécution.

Les développeurs peuvent créer, interroger, mettre à jour et supprimer des filtres Amazon Quick Sight sur un tableau de bord intégré ou un visuel depuis leur application grâce au SDK d'intégration Amazon Quick Sight. Créez des objets de filtre Amazon Quick Sight dans votre application à l'aide du modèle de [FilterGroup](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_FilterGroup.html)données et appliquez-les aux tableaux de bord et aux visuels intégrés à l'aide des méthodes de filtrage. Pour plus d'informations sur l'utilisation du SDK Amazon Quick Sight Embedding, consultez le [amazon-quicksight-embedding-sdk](https://github.com/awslabs/amazon-quicksight-embedding-sdk) GitHub

**Conditions préalables**

Avant de commencer, assurez-vous d'utiliser le SDK Amazon Quick Sight Embedding version 2.5.0 ou ultérieure.

## Terminologie et concepts
<a name="runtime-filtering-terminology"></a>

La terminologie suivante peut être utile lorsque vous utilisez un filtrage d’exécution intégré.
+ *FilterGroup (Groupe de filtres)* : groupe de filtres individuels. Les filtres situés à l’intérieur d’un `FilterGroup` sont couplés en OR les uns avec les autres. Les filtres contenus dans a [FilterGroup](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_FilterGroup.html)sont appliqués aux mêmes feuilles ou visuels.
+ *Filtre* : filtre unique. Le filtre peut être de type catégorie, numérique ou datetime. Pour plus d’informations sur les filtres, consultez [Filtres](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_Filter.html).

## Configuration
<a name="runtime-filtering-setup"></a>

Avant de commencer, assurez-vous d’avoir préparé les éléments et informations suivants.
+ L’ID de la feuille à laquelle vous souhaitez étendre la portée `FilterGroup`. Cela peut être obtenu à l’aide de la méthode `getSheets` du SDK d’intégration.
+ Le jeu de données et l’identifiant de colonne de le jeu de données que vous souhaitez filtrer. Cela peut être obtenu par le biais de l'opération [DescribeDashboardDefinition](https://docs.aws.amazon.com/APIReference/API_DescribeDashboardDefinition.html)API.

  Selon le type de colonne que vous utilisez, les types de filtres pouvant être ajoutés à une ressource incorporée peuvent être soumis à des restrictions. Pour plus d’informations sur les restrictions de filtres, consultez [Filtres](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_Filter.html).
+ ID visuel du visuel auquel vous souhaitez étendre le champ d’application `FilterGroup`, le cas échéant. Cela peut être obtenu en utilisant la méthode `getSheetVisuals` du SDK d’intégration.

  Outre la méthode `getSheetVisuals`, le `FilterGroup` que vous ajoutez ne peut être étendu qu’à la feuille actuellement sélectionnée.

Pour utiliser cette fonctionnalité, vous devez déjà avoir intégré un tableau de bord ou un visuel à votre application via le SDK Amazon Quick Sight Embedding. Pour plus d'informations sur l'utilisation du SDK Amazon Quick Sight Embedding, consultez le [amazon-quicksight-embedding-sdk](https://github.com/awslabs/amazon-quicksight-embedding-sdk) GitHub

## Interface de méthode SDK
<a name="runtime-filtering-sdk-interface"></a>

**Méthodes getter d’intégration du tableau de bord**

Le tableau suivant décrit les différentes méthodes d’accès incorporant des tableaux de bord que les développeurs peuvent utiliser.


| Method | Description | 
| --- | --- | 
|  `getFilterGroupsForSheet(sheetId: string) `  |  Renvoie tout FilterGroups ce qui est actuellement limité à la feuille fournie dans le paramètre.  | 
|  `getFilterGroupsForVisual(sheetId: string, visualId: string)`  |  Renvoie tout `FilterGroups` ce qui est limité au visuel fourni dans le paramètre.  | 

Si la feuille fournie dans le paramètre n’est pas la feuille actuellement sélectionnée du tableau de bord intégré, les méthodes ci-dessus renvoient une erreur.

**Méthodes getter d’intégration visuelle**

Le tableau suivant décrit les différentes méthodes getter d’intégration visuelle que les développeurs peuvent utiliser.


| Method | Description | 
| --- | --- | 
|  `getFilterGroups()`  |  Renvoie tout `FilterGroups` actuellement limité au visuel intégré.  | 

**Méthodes Setter**

Le tableau suivant décrit les différentes méthodes de réglage que les développeurs peuvent utiliser pour le tableau de bord ou l’intégration visuelle.


| Method | Description | 
| --- | --- | 
|  `addFilterGroups(filterGroups: FilterGroup[])`  |  Ajoute et applique le contenu fourni **FilterGroups**au tableau de bord ou au visuel intégré. Un `ResponseMessage` qui indique si l’ajout a été effectué avec succès est renvoyé.  | 
|  `updateFilterGroups(filterGroups: FilterGroup[])`  |  Met à jour `FilterGroups` sur l’expérience intégrée qui contient la même chose `FilterGroupId` que `FilterGroup` celle fournie dans le paramètre. Un `ResponseMessage` qui indique si la mise à jour a réussi est renvoyée.  | 
|  `removeFilterGroups(filterGroupsOrIds: FilterGroup[] \| string[])`  |  Supprime le contenu fourni FilterGroups du tableau de bord et renvoie un `ResponseMessage` indiquant si la tentative de suppression est réussie.  | 

Le `FilterGroup` contenu fourni doit être limité à la feuille incorporée ou au visuel actuellement sélectionné.

# Personnalisez l'apparence des tableaux de bord et visuels intégrés d'Amazon Quick Sight
<a name="embedding-runtime-theming"></a>

Vous pouvez utiliser le SDK d'intégration Amazon Quick Sight (version 2.5.0 et supérieure) pour modifier le thème de vos tableaux de bord et visuels Amazon Quick Sight intégrés lors de l'exécution. La thématisation du runtime facilite l'intégration de votre application SaaS (Software as a service) à vos actifs intégrés Amazon Quick Sight. Le thème d'exécution vous permet de synchroniser le thème de votre contenu intégré avec les thèmes de l'application parent dans laquelle vos ressources Amazon Quick Sight sont intégrées. Vous pouvez également utiliser les thèmes d’exécution pour ajouter des options de personnalisation pour les lecteurs. Les modifications de thème peuvent être appliquées aux ressources intégrées lors de l’initialisation ou pendant toute la durée de vie de votre tableau de bord ou visuel intégré.

Pour plus d’informations sur les thèmes, consultez [Utilisation de thèmes dans Amazon Quick Sight](themes-in-quicksight.md). Pour plus d'informations sur l'utilisation du SDK Amazon Quick Sight Embedding, consultez le [amazon-quicksight-embedding-sdk](https://github.com/awslabs/amazon-quicksight-embedding-sdk) GitHub

**Conditions préalables**

Avant de démarrer, assurez-vous de répondre aux conditions préalables suivantes :
+ Vous utilisez le SDK Amazon Quick Sight Embedding version 2.5.0 ou ultérieure.
+ Autorisations pour accéder au thème avec lequel vous souhaitez travailler. Pour accorder des autorisations à un thème dans Amazon Quick Sight, effectuez un appel d'`UpdateThemePermissions`API ou utilisez l'icône **Partager** située à côté du thème dans l'éditeur d'analyse de la console Amazon Quick Sight.

## Terminologie et concepts
<a name="runtime-theming-terminology"></a>

La terminologie suivante peut être utile lorsque vous utilisez des thèmes d’exécution intégrés.
+ *Thème* : un ensemble de paramètres que vous pouvez appliquer à plusieurs analyses et tableaux de bord qui modifient la présentation du contenu.
+ *ThemeConfiguration*— Objet de configuration contenant toutes les propriétés d'affichage d'un thème.
+ *Remplacer le thème* : objet `ThemeConfiguration` appliqué au thème actif pour remplacer certains ou tous les aspects de la façon dont le contenu est affiché.
+ *ARN du thème* : nom de ressource Amazon (ARN) identifiant un thème Amazon Quick Sight. Voici un exemple d’ARN de thème personnalisé.

  `arn:aws:quicksight:region:account-id:theme/theme-id`

  Les thèmes de démarrage fournis par Amazon Quick Sight ne comportent pas de région dans leur ARN thématique. Voici un exemple d’ARN de thème de démarrage.

  `arn:aws:quicksight::aws:theme/CLASSIC`

## Configuration
<a name="runtime-theming-setup"></a>

Assurez-vous de disposer des informations suivantes pour commencer à utiliser les thèmes d’exécution.
+ Thème ARNs des thèmes que vous souhaitez utiliser. Vous pouvez choisir un thème existant ou en créer un nouveau. Pour obtenir une liste de tous les thèmes ARNs et thèmes de votre compte Amazon Quick Sight, appelez l'opération [ListThemes](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ListThemes.html)API. Pour plus d'informations sur les thèmes Amazon Quick Sight prédéfinis, consultez[Définition d'un thème par défaut pour les analyses Amazon Quick avec Amazon Quick APIs](customizing-quicksight-default-theme.md).
+ Si vous utilisez l’intégration d’utilisateurs enregistrés, assurez-vous que l’utilisateur a accès aux thèmes que vous souhaitez utiliser.

  Si vous utilisez l'intégration d'utilisateurs anonymes, transmettez une liste de thèmes ARNs au `AuthorizedResourceArns` paramètre de l'`GenerateEmbedUrlForAnonymousUser`API. Les utilisateurs anonymes ont accès à n’importe quel thème répertorié dans le paramètre `AuthorizedResourceArns`.

## Interface de méthode SDK
<a name="runtime-theming-sdk-interface"></a>

**Méthodes Setter**

Le tableau suivant décrit les différentes méthodes de réglage que les développeurs peuvent utiliser pour la thématisation de l’exécution.


| Method | Description | 
| --- | --- | 
|  `setTheme(themeArn: string)`  |  Remplace le thème actif d’un tableau de bord ou d’un visuel par un autre thème. S’il est appliqué, le remplacement du thème est supprimé. Une erreur est renvoyée si vous n’avez pas accès au thème ou si le thème n’existe pas.  | 
|  `setThemeOverride(themeOverride: ThemeConfiguration)`  |  Définit une dynamique `ThemeConfiguration` pour remplacer le thème actif actuel. Cela remplace le remplacement du thème défini précédemment. Toutes les valeurs qui ne sont pas fournies dans le nouveau thème `ThemeConfiguration` sont par défaut celles du thème actuellement actif. Une erreur est renvoyée si le message `ThemeConfiguration` que vous avez fourni n’est pas valide.  | 

## Initialisation du contenu intégré avec un thème
<a name="runtime-theming-sdk-initialize"></a>

Pour initialiser un tableau de bord ou un visuel intégré avec un thème autre que celui par défaut, définissez un objet `themeOptions` sur les paramètres `DashboardContentOptions` ou `VisualContentOptions`, puis définissez la propriété `themeArn` sur `themeOptions` de l’ARN du thème souhaité.

L’exemple suivant initialise un tableau de bord intégré avec le thème `MIDNIGHT`.

```
import { createEmbeddingContext } from 'amazon-quicksight-embedding-sdk';

const embeddingContext = await createEmbeddingContext();

const {
    embedDashboard,
} = embeddingContext;

const frameOptions = {
    url: '<YOUR_EMBED_URL>',
    container: '#experience-container',
};
const contentOptions = {
    themeOptions: {
        themeArn: "arn:aws:quicksight::aws:theme/MIDNIGHT"
    }
};

// Embedding a dashboard experience
const embeddedDashboardExperience = await embedDashboard(frameOptions, contentOptions);
```

## Initialisation du contenu intégré avec un remplacement de thème
<a name="runtime-theming-runtime-initialize-override"></a>

Les développeurs peuvent utiliser des remplacements de thème pour définir le thème d’un tableau de bord intégré ou d’un visuel lors de l’exécution. Cela permet au tableau de bord ou au visuel d'hériter d'un thème d'une application tierce sans qu'il soit nécessaire de préconfigurer un thème dans Amazon Quick Sight. Pour initialiser un tableau de bord ou un visuel intégré avec un remplacement de thème, définissez la propriété `themeOverride` dans `themeOptions` les paramètres `DashboardContentOptions` ou`VisualContentOptions`. L’exemple suivant remplace la police du thème d’un tableau de bord par la police par défaut par `Amazon Ember`.

```
import { createEmbeddingContext } from 'amazon-quicksight-embedding-sdk';

const embeddingContext = await createEmbeddingContext();

const {
    embedDashboard,
} = embeddingContext;

const frameOptions = {
    url: '<YOUR_EMBED_URL>',
    container: '#experience-container',
};
const contentOptions = {
    themeOptions: {
        "themeOverride":{"Typography":{"FontFamilies":[{"FontFamily":"Comic Neue"}]}}
    }
};

// Embedding a dashboard experience
const embeddedDashboardExperience = await embedDashboard(frameOptions, contentOptions);
```

## Initialisation du contenu intégré avec des thèmes préchargés
<a name="runtime-theming-runtime-initialize-preloaded"></a>

Les développeurs peuvent configurer un ensemble de thèmes de tableau de bord à précharger lors de l’initialisation. Cela est particulièrement utile pour passer rapidement d’une vue à l’autre, par exemple en mode sombre et en mode clair. Un tableau de bord ou un visuel intégré peut être initialisé avec jusqu’à 5 thèmes préchargés. Pour utiliser des thèmes préchargés, définissez la propriété `preloadThemes` dans un tableau `DashboardContentOptions` ou `VisualContentOptions` allant jusqu’à 5 `themeArns`. L’exemple suivant précharge les thèmes `Midnight` et `Rainier` Starter dans un tableau de bord.

```
import { createEmbeddingContext } from 'amazon-quicksight-embedding-sdk';

const embeddingContext = await createEmbeddingContext();

const {
    embedDashboard,
} = embeddingContext;

const frameOptions = {
    url: '<YOUR_EMBED_URL>',
    container: '#experience-container',
};
const contentOptions = {
    themeOptions: {
        "preloadThemes": ["arn:aws:quicksight::aws:theme/RAINIER", "arn:aws:quicksight::aws:theme/MIDNIGHT"]
    }
};

// Embedding a dashboard experience
const embeddedDashboardExperience = await embedDashboard(frameOptions, contentOptions);
```

# Utilisation du SDK d'intégration Amazon Quick Sight pour activer des liens partageables vers des vues de tableau de bord intégrées
<a name="embedded-view-sharing"></a>

Les développeurs Amazon Quick Sight peuvent utiliser le SDK d'intégration Amazon Quick Sight (version 2.8.0 et supérieure) pour permettre aux lecteurs de tableaux de bord intégrés de recevoir et de distribuer des liens partageables vers leur vue d'un tableau de bord intégré. Les développeurs peuvent utiliser l'intégration du tableau de bord ou de la console pour générer un lien partageable vers la page de leur application avec la référence Amazon Quick Sight encapsulée à l'aide du SDK d'intégration Amazon Quick Sight. Les lecteurs d'Amazon Quick Sight peuvent ensuite envoyer ce lien partageable à leurs pairs. Lorsque leur homologue accède au lien partagé, il est redirigé vers la page de l'application qui contient le tableau de bord Amazon Quick Sight intégré. Les développeurs peuvent également générer et enregistrer des liens partageables vers des vues de tableau de bord qui peuvent être utilisés comme favoris pour les lecteurs anonymes d'Amazon Quick Sight lors de l'intégration anonyme.

**Conditions préalables**

Avant de commencer, assurez-vous que vous utilisez le SDK Amazon Quick Sight Embedding version 2.8.0 ou supérieure

**Topics**
+ [

# Activation de la configuration des `SharedView` fonctionnalités pour les analyses intégrées d'Amazon Quick Sight
](embedded-view-sharing-set-up.md)
+ [

# Création d'une vue partagée avec l'`createSharedView`API Amazon Quick Sight
](embedded-view-sharing-sdk-create.md)
+ [

# Utilisation d'une vue Amazon Quick Sight partagée
](embedded-view-sharing-sdk-consume.md)

# Activation de la configuration des `SharedView` fonctionnalités pour les analyses intégrées d'Amazon Quick Sight
<a name="embedded-view-sharing-set-up"></a>

Lorsque vous créez une instance intégrée avec l'API Amazon Quick Sight, définissez la valeur de `SharedView` dans la `FeatureConfigurations` charge utile sur`true`, comme indiqué dans l'exemple ci-dessous. `SharedView`remplace les `StatePersistence` configurations pour les utilisateurs enregistrés qui accèdent aux tableaux de bord intégrés. Si un utilisateur du tableau de bord a désactivé `StatePersistence` et activé `SharedView`, son état sera conservé.

```
const generateNewEmbedUrl = async () => {
    const generateUrlPayload = {
        experienceConfiguration: {
            QuickSightConsole: {
            FeatureConfigurations: {
                "SharedView": { 
                    "Enabled": true
                 },
            },
        },
    }
    const result: GenerateEmbedUrlResult = await generateEmbedUrlForRegisteredUser(generateUrlPayload);
    return result.url;
};
```

# Création d'une vue partagée avec l'`createSharedView`API Amazon Quick Sight
<a name="embedded-view-sharing-sdk-create"></a>

Après avoir mis à jour le SDK d’intégration vers la version 2.8.0 ou supérieure, utilisez l’API `createSharedView` pour créer une nouvelle vue partagée. Enregistrez le `sharedViewId` et le `dashboardId` renvoyé par l’opération. L’exemple ci-dessous crée une nouvelle vue partagée.

```
const response = await embeddingFrame.createSharedView();
const sharedViewId = response.message.sharedViewId;
const dashboardId = response.message.dashboardId;
```

`createSharedView` ne peut être appelé que lorsqu’un utilisateur consulte un tableau de bord. Pour créer une vue partagée spécifique à la console, assurez-vous que les utilisateurs se trouvent sur la page du tableau de bord avant d’activer l’action `createSharedView`. Vous pouvez le faire avec l’événement `PAGE_NAVIGATION`, illustré dans l’exemple ci-dessous.

```
const contentOptions = {
    onMessage: async (messageEvent, metadata) => {
    switch (messageEvent.eventName) {
            case 'CONTENT_LOADED': {
                console.log("Do something when the embedded experience is fully loaded.");
                break;
            }
            case 'ERROR_OCCURRED': {
                console.log("Do something when the embedded experience fails loading.");
                break;
            }
            case 'PAGE_NAVIGATION': {
                setPageType(messageEvent.message.pageType); 
                if (messageEvent.message.pageType === 'DASHBOARD') {
                    setShareEnabled(true);
                    } else {
                    setShareEnabled(false);
                }
                break;
            }
        }
    }
};
```

# Utilisation d'une vue Amazon Quick Sight partagée
<a name="embedded-view-sharing-sdk-consume"></a>

Après avoir créé une nouvelle vue partagée, utilisez le SDK d’intégration pour rendre la vue partagée utilisable par les autres utilisateurs. Les exemples ci-dessous configurent une vue partagée des consommables pour un tableau de bord intégré dans Amazon Quick Sight.

------
#### [ With an appended URL ]

Ajoutez-la `sharedViewId` à l’URL d’intégration, sous ` /views/{viewId}`, et exposez cette URL à vos utilisateurs. Les utilisateurs peuvent utiliser cette URL pour accéder à cette vue partagée.

```
const response = await dashboardFrame.createSharedView();
const newEmbedUrl = await generateNewEmbedUrl();
const formattedUrl = new URL(newEmbedUrl);
formattedUrl.pathname = formattedUrl.pathname.concat('/views/' + response.message.sharedViewId);
const baseUrl = formattedUrl.href;
alert("Click to view this QuickSight shared view", baseUrl);
```

------
#### [ With the contentOptions SDK ]

Passez un `viewId` à un `contentOptions` pour ouvrir l’expérience avec le `viewId` donné.

```
const contentOptions = {
    toolbarOptions: {
        ...
    },
    viewId: sharedViewId,
};

const embeddedDashboard = await embeddingContext.embedDashboard(
    {container: containerRef.current},
    contentOptions
);
```

------
#### [ With the InitialPath property ]

```
const shareView = async() => {
    const returnValue = await consoleFrame.createSharedView();
    const {dashboardId, sharedViewId} = returnValue.message;
    const newEmbedUrl = await generateNewEmbedUrl(`/dashboards/${dashboardId}/views/${sharedViewId}`);
    setShareUrl(newEmbedUrl);
};

const generateNewEmbedUrl = async (initialPath) => {
    const generateUrlPayload = {
        experienceConfiguration: {
            QuickSightConsole: {
            InitialPath: initialPath,
            FeatureConfigurations: {
                "SharedView": { 
                    "Enabled": true
                 },
            },
        },
    }
    const result: GenerateEmbedUrlResult = await generateEmbedUrlForRegisteredUser(generateUrlPayload);
    return result.url;
};
```

------

# Intégrer les visuels et les tableaux de bord d'Amazon Quick Sight à l'aide d'un code d'intégration en un clic
<a name="1-click-embedding"></a>

Vous pouvez intégrer une représentation visuelle ou un tableau de bord dans votre application à l’aide d’un code d’intégration. Vous obtenez ce code lorsque vous partagez le tableau de bord ou depuis le menu **visuel Intégrer** d'Amazon Quick Sight. 

Vous pouvez intégrer une représentation visuelle ou un tableau de bord dans votre application interne pour vos utilisateurs enregistrés. Vous pouvez également activer le partage public dans la console Amazon Quick Sight. Ainsi, tout le monde sur Internet peut accéder à une représentation visuelle ou à un tableau de bord partagé et intégré dans une application publique, un wiki ou un portail.

Vous trouverez ci-dessous des descriptions expliquant comment intégrer des représentations visuelles et des tableaux de bord à l’aide du code d’intégration 1-Click de la représentation visuelle ou du tableau de bord.

**Topics**
+ [

# Intégration de visuels et de tableaux de bord Amazon Quick Sight pour les utilisateurs enregistrés à l'aide d'un code d'intégration en un clic
](embedded-analytics-1-click.md)
+ [

# Intégration de visuels et de tableaux de bord Amazon Quick Sight pour les utilisateurs anonymes à l'aide d'un code intégré en un clic
](embedded-analytics-1-click-public.md)

# Intégration de visuels et de tableaux de bord Amazon Quick Sight pour les utilisateurs enregistrés à l'aide d'un code d'intégration en un clic
<a name="embedded-analytics-1-click"></a>


|  | 
| --- |
|  S’applique à : édition Enterprise  | 

Vous pouvez intégrer un visuel ou un tableau de bord dans votre application interne pour les utilisateurs enregistrés de votre compte Amazon Quick Sight. Pour ce faire, utilisez le code intégré que vous obtenez lorsque vous partagez le tableau de bord ou depuis le menu **visuel Intégrer** d'Amazon Quick Sight. Il n'est pas nécessaire d'exécuter l'API d'intégration Amazon Quick Sight pour générer le code d'intégration. Vous pouvez copier le code intégré depuis Amazon Quick Sight et le coller dans le code HTML de votre application interne.

Lorsque les utilisateurs et les groupes (ou tous les utilisateurs de votre compte Amazon Quick Sight) qui ont accès au tableau de bord que vous souhaitez intégrer ou qui contient le visuel que vous souhaitez intégrer accèdent à votre application interne, ils sont invités à se connecter au compte Amazon Quick Sight avec leurs informations d'identification. Une fois authentifiés, ils peuvent accéder à la représentation visuelle ou au tableau de bord sur leur page interne. Si l’authentification unique est activée, les utilisateurs ne sont pas invités à se reconnecter.

Vous trouverez ci-dessous des descriptions expliquant comment intégrer une représentation visuelle ou un tableau de bord à l’aide du code d’intégration de la représentation visuelle ou du tableau de bord.

## Avant de commencer
<a name="embedded-analytics-1-click-prerequisites"></a>

Avant de commencer, assurez-vous que :
+ Les paramètres de votre navigateur Internet contiennent l’un des éléments suivants pour permettre la communication entre la fenêtre contextuelle et l’iframe :
  + Prise en charge native pour l’API Mozilla Broadcast Channel. Pour plus d’informations, consultez [Broadcast Channel API](https://developer.mozilla.org/en-US/docs/Web/API/Broadcast_Channel_API) (français non garanti) dans la documentation Mozilla.
  + Prise en charge d’IndexedDB.
  + LocalStorage soutien.
+ Le paramètre « Bloquer tous les cookies » de votre navigateur Internet est désactivé.

## Étape 1 : Accorder l’accès au tableau de bord
<a name="embedded-analystics-1-click-share"></a>

Pour que les utilisateurs puissent accéder à votre tableau de bord intégré, accordez-leur l’accès pour le consulter. Vous pouvez autoriser des utilisateurs individuels et des groupes à accéder à un tableau de bord, ou vous pouvez accorder l’accès à tous les membres de votre compte. Les autorisations visuelles sont déterminées au niveau du tableau de bord. Pour autoriser l’accès aux représentations visuelles intégrées, accordez l’accès au tableau de bord auquel appartient la représentation visuelle. Pour de plus amples informations, veuillez consulter [Octroi de l’un accès à un tableau de bord](share-a-dashboard.md).

## Étape 2 : Placer le domaine dans lequel vous souhaitez intégrer la représentation visuelle ou le tableau de bord dans votre liste d’autorisation
<a name="embedded-analytics-1-click-allow-list"></a>

Pour intégrer des visuels et des tableaux de bord dans votre application interne, assurez-vous que le domaine dans lequel vous souhaitez intégrer est autorisé dans votre compte Amazon Quick Sight. Pour de plus amples informations, veuillez consulter [Liste d’autorisation des domaines statiques](manage-domains.md#embedding-static).

## Étape 3 : Obtenir le code d’intégration
<a name="embedded-analytics-1-click-code"></a>

Utilisez la procédure suivante pour obtenir le code d’intégration de la représentation visuelle ou du tableau de bord.

**Pour obtenir le code d’intégration du tableau de bord**

1. Ouvrez le tableau de bord publié dans Amazon Quick Sight et choisissez **Partager** en haut à droite. Choisissez ensuite **Partager le tableau de bord**.

1. Sur la page **Partager le tableau de bord** qui s’ouvre, cliquez sur **Copier le code d’intégration** en haut à gauche.

   Le code d’intégration est copié dans votre presse-papiers et est similaire à ce qui suit. `quicksightdomain`Dans cet exemple, il s'agit de l'URL que vous utilisez pour accéder à votre compte Amazon Quick Sight.

   ```
   <iframe
           width="960"
           height="720"
           src="https://quicksightdomain/sn/embed/share/accounts/accountid/dashboards/dashboardid?directory_alias=account_directory_alias">
       </iframe>
   ```

**Pour obtenir le code d’intégration d’une représentation visuelle**

1. Ouvrez le tableau de bord publié dans Amazon Quick Sight et choisissez le visuel que vous souhaitez intégrer. Ouvrez ensuite le menu des représentations visuelles dans le coin supérieur droit de la représentation visuelle, puis cliquez sur **Intégrer la représentation visuelle**.

1. Dans le volet **Intégrer la représentation visuelle** qui s’ouvre, cliquez sur **Copier le code**.

   Le code d’intégration est copié dans votre presse-papiers et est similaire à ce qui suit. `quicksightdomain`Dans cet exemple, il s'agit de l'URL que vous utilisez pour accéder à votre compte Amazon Quick Sight.

   ```
   <iframe
           width="600"
           height="400"
           src="https://quicksightdomain/sn/embed/share/accounts/111122223333/dashboards/DASHBOARDID/sheets/SHEETID>/visuals/VISUALID">
       </iframe>
   ```

## Étape 4 : Coller le code dans la page HTML de votre application interne
<a name="embedded-analytics-1-click-html"></a>

Utilisez la procédure suivante pour coller le code d’intégration dans la page HTML de votre application interne

**Pour coller le code dans la page HTML de votre application interne**
+ Ouvrez le code HTML d’une page dans laquelle vous souhaitez intégrer le tableau de bord et collez-y le code d’intégration.

  L’exemple suivant montre à quoi ressemblera un tableau de bord intégré. `quicksightdomain`Dans cet exemple, il s'agit de l'URL que vous utilisez pour accéder à votre compte Amazon Quick Sight.

  ```
  <!DOCTYPE html>
      <html>
      <body>
  
      <h2>Example.com - Employee Portal</h2>
      <h3>Current shipment stats</h3>
          <iframe
          width="960"
          height="720"
          src="https://quicksightdomain/sn/embed/share/accounts/accountid/dashboards/dashboardid?directory_alias=account_directory_alias">
      </iframe>
  
      </body>
      </html>
  ```

  L’exemple suivant montre à quoi ressemblera une représentation visuelle intégrée. `quicksightdomain`Dans cet exemple, il s'agit de l'URL que vous utilisez pour accéder à votre compte Amazon Quick Sight.

  ```
  <!DOCTYPE html>
      <html>
      <body>
  
      <h2>Example.com - Employee Portal</h2>
      <h3>Current shipment stats</h3>
          <iframe
          width="600"
          height="400"
          src="https://quicksightdomain/sn/embed/share/accounts/111122223333/dashboards/DASHBOARDID/sheets/SHEETID>/visuals/VISUALID?directory_alias=account_directory_alias">
      </iframe>
  
      </body>
      </html>
  ```

Par exemple, supposons que vous souhaitez intégrer votre représentation visuelle ou votre tableau de bord dans une page Google Sites interne. Vous pouvez ouvrir la page sur Google Sites et coller le code d’intégration dans un widget d’intégration.

Si vous souhaitez intégrer votre visuel ou votre tableau de bord dans un SharePoint site Microsoft interne, vous pouvez créer une nouvelle page, puis coller le code intégré dans un composant WebPart intégré.

# Intégration de visuels et de tableaux de bord Amazon Quick Sight pour les utilisateurs anonymes à l'aide d'un code intégré en un clic
<a name="embedded-analytics-1-click-public"></a>


|  | 
| --- |
|  S’applique à : édition Enterprise  | 

Vous pouvez intégrer un visuel ou un tableau de bord dans des sites publics à l'aide du code intégré que vous obtenez lorsque vous partagez le visuel ou le tableau de bord dans Amazon Quick Sight. Vous pouvez également activer le partage public à l'aide de la console Amazon Quick Sight et accorder automatiquement l'accès à un visuel ou à un tableau de bord partagé à toute personne connectée à Internet. 

Vous trouverez ci-dessous des instructions pour activer le partage public d’une représentation visuelle ou d’un tableau de bord ainsi que pour intégrer la représentation visuelle ou le tableau de bord pour que tout le monde puisse le voir sur Internet. Dans les deux cas, vous pouvez le faire en utilisant le code d’intégration 1-Click.

## Avant de commencer
<a name="embedded-analytics-1-click-prerequisites"></a>

Avant de commencer, assurez-vous que :
+ Les paramètres de votre navigateur Internet contiennent l’un des éléments suivants pour permettre la communication entre la fenêtre contextuelle et l’iframe, utilisé par le partage :
  + Prise en charge native pour l’API Mozilla Broadcast Channel. Pour plus d’informations, consultez [Broadcast Channel API](https://developer.mozilla.org/en-US/docs/Web/API/Broadcast_Channel_API) (français non garanti) dans la documentation Mozilla.
  + Prise en charge d’IndexedDB.
  + LocalStorage soutien.
+ Le paramètre « Bloquer tous les cookies » de votre navigateur Internet est désactivé.

## Étape 1 : Activer l’accès public pour le tableau de bord
<a name="embedded-analytics-1-click-step-1"></a>

Pour que quiconque sur Internet puisse accéder à l’intégration de votre représentation visuelle ou de votre tableau de bord, activez d’abord l’accès public au tableau de bord. Les autorisations visuelles sont déterminées au niveau du tableau de bord. Pour autoriser l’accès aux représentations visuelles intégrées, accordez l’accès au tableau de bord auquel appartient la représentation visuelle. Pour de plus amples informations, veuillez consulter [Permettre à toute personne connectée à Internet d'accéder à un tableau de bord Amazon Quick Sight](share-a-dashboard-grant-access-anyone.md).

## Étape 2 : Placer le domaine dans lequel vous souhaitez intégrer la représentation visuelle ou le tableau de bord dans votre liste d’autorisation
<a name="embedded-analytics-1-click-step-2"></a>

Pour intégrer des visuels et des tableaux de bord dans une application, un wiki ou un portail public, assurez-vous que le domaine dans lequel vous les intégrez figure dans la liste d'autorisation de votre compte Amazon Quick Sight. 

## Étape 3 : Obtenir le code d’intégration
<a name="embedded-analytics-1-click-step-3"></a>

Utilisez la procédure suivante pour obtenir le code d’intégration de la représentation visuelle ou du tableau de bord.

**Pour obtenir le code d’intégration du tableau de bord**

1. Ouvrez le tableau de bord publié dans Amazon Quick Sight et choisissez **Partager** en haut à droite. Choisissez ensuite **Partager le tableau de bord**.

1. Sur la page **Partager le tableau de bord** qui s’ouvre, cliquez sur **Copier le code d’intégration** en haut à gauche.

   Le code d’intégration est copié dans votre presse-papiers et est similaire à ce qui suit. `quicksightdomain`Dans cet exemple, il s'agit de l'URL que vous utilisez pour accéder à votre compte Amazon Quick Sight.

   ```
   <iframe
           width="960"
           height="720"
           src="https://quicksightdomain/sn/
               embed/share/accounts/accountid/dashboards/dashboardid">
       </iframe>
   ```

**Pour obtenir le code d’intégration d’une représentation visuelle**

1. Ouvrez le tableau de bord publié dans Amazon Quick Sight et choisissez le visuel que vous souhaitez intégrer. Ouvrez ensuite le menu des représentations visuelles dans le coin supérieur droit de la représentation visuelle, puis cliquez sur **Intégrer la représentation visuelle**.

1. Dans le volet **Intégrer la représentation visuelle** qui s’ouvre, cliquez sur **Copier le code**.

   Le code d’intégration est copié dans votre presse-papiers et est similaire à ce qui suit. `quicksightdomain`Dans cet exemple, il s'agit de l'URL que vous utilisez pour accéder à votre compte Amazon Quick Sight.

   ```
   <iframe
           width="600"
           height="400"
           src="https://quicksightdomain/sn/embed/share/accounts/111122223333/dashboards/DASHBOARDID/sheets/SHEETID>/visuals/VISUALID">
       </iframe>
   ```

## Étape 4 : Coller le code d’intégration dans une page HTML, une page wiki ou un portail
<a name="embedded-analytics-1-click-step-4"></a>

Utilisez la procédure suivante pour coller le code d’intégration dans une page HTML, une page wiki ou un portail.

**Pour coller le code d’intégration**
+ Ouvrez le code HTML de l’emplacement où vous souhaitez intégrer la représentation visuelle ou le tableau de bord, puis collez-y le code d’intégration.

  L’exemple suivant montre à quoi ressemblera un tableau de bord intégré. `quicksightdomain`Dans cet exemple, il s'agit de l'URL que vous utilisez pour accéder à votre compte Amazon Quick Sight.

  ```
  <!DOCTYPE html>
      <html>
      <body>
  
      <h2>Example.com - Employee Portal</h2>
      <h3>Current shipment stats</h3>
          <iframe
          width="960"
          height="720"
          src="https://quicksightdomain/sn/
              embed/share/accounts/accountid/dashboards/dashboardid">
      </iframe>
  
      </body>
      </html>
  ```

  L’exemple suivant montre à quoi ressemblera une représentation visuelle intégrée. `quicksightdomain`Dans cet exemple, il s'agit de l'URL que vous utilisez pour accéder à votre compte Amazon Quick Sight.

  ```
  <!DOCTYPE html>
      <html>
      <body>
  
      <h2>Example.com - Employee Portal</h2>
      <h3>Current shipment stats</h3>
          <iframe
          width="600"
          height="400"
          src="https://quicksightdomain/sn/embed/share/accounts/111122223333/dashboards/DASHBOARDID/sheets/SHEETID>/visuals/VISUALID">
      </iframe>
  
      </body>
      </html>
  ```

Si vos applications orientées vers le public sont créées sur Google Sites, ouvrez la page sur Google Sites, puis collez le code d’intégration à l’aide du widget d’intégration.

Assurez-vous que les domaines suivants d'Amazon Quick Sight figurent sur votre liste d'autorisation lorsque vous les intégrez dans Google Sites :
+ `https://googleusercontent.com` (active les sous-domaines)
+ `https://www.gstatic.com`
+ `https://sites.google.com`

Une fois que vous avez intégré la représentation visuelle ou le tableau de bord dans votre application, quiconque pouvant accéder à votre application peut accéder à l’intégration de la représentation visuelle ou du tableau de bord. Pour mettre à jour un tableau de bord partagé avec le public, consultez la rubrique [Mise à jour d’un tableau de bord partagé publiquement](share-a-dashboard-grant-access-anyone-update.md). Pour désactiver le partage public, consultez la rubrique [Désactivation des paramètres de partage public](share-a-dashboard-grant-access-anyone-no-share.md). 

Lorsque vous désactivez le partage public, personne sur Internet ne peut accéder à un ou plusieurs tableaux de bord que vous avez intégrés à une application publique ou partagés à l’aide d’un lien. La prochaine fois qu’une personne essayera de consulter un tel tableau de bord sur Internet, elle recevra un message indiquant qu’il n’a pas accès à ce tableau de bord.

# Intégration avec Amazon Quick Sight APIs
<a name="embedded-analytics-api"></a>


|  | 
| --- |
|  S’applique à : édition Enterprise  | 


|  | 
| --- |
|    Public cible : développeurs Amazon Quick  | 

Le processus d'intégration des analyses à l'aide d'Amazon Quick Sight APIs ne comporte que quelques étapes. 

Avant de commencer, assurez-vous de d’avoir mis en place les éléments suivants :
+ Configurez les autorisations IAM requises pour l'identité de l'appelant utilisée par votre application qui utilisera le AWS SDK pour effectuer des appels d'API. Par exemple, accordez l’autorisation à l’action `quicksight:GenerateEmbedUrlForAnonymousUser` ou `quicksight:GenerateEmbedUrlForRegisteredUser`.
+ Pour intégrer une application destinée aux utilisateurs enregistrés, partagez au préalable les ressources Amazon Quick Sight avec eux. Pour les nouveaux utilisateurs authentifiés, vous devez savoir comment accorder l’accès aux ressources. Pour ce faire, vous pouvez notamment ajouter tous les actifs dans un dossier Amazon Quick Sight. Si vous préférez utiliser l'API Amazon Quick Sight, utilisez les opérations `UpdateDashboardPermissions` d'API `DescribeDashboardPermissions` et. Pour plus d'informations, consultez [DescribeDashboardPermissions](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_DescribeDashboardPermissions.html)ou consultez [UpdateDashboardPermissions](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_UpdateDashboardPermissions.html)le *Amazon Quick API Reference*. Si vous souhaitez partager le tableau de bord avec tous les utilisateurs d’un espace de noms ou d’un groupe, vous pouvez partager le tableau de bord avec `namespace` ou `group`.
+ Si vous intégrez des tableaux de bord, assurez-vous de disposer de l’ID des tableaux de bord que vous souhaitez intégrer. L’ID du tableau de bord est le code figurant dans l’URL du tableau de bord. Vous pouvez également l’obtenir à partir de l’URL du tableau de bord.
+ Un administrateur Amazon Quick Sight doit activer explicitement les domaines dans lesquels vous prévoyez d'intégrer vos analyses Amazon Quick Sight. Vous pouvez le faire en utilisant le menu **Manage Amazon Quick Sight**, **Domains and Embedding** depuis le menu du profil, ou vous pouvez utiliser le `AllowedDomains` paramètre d'un appel d'`GenerateEmbedUrlForRegisteredUser`API `GenerateEmbedUrlForAnonymousUser` ou d'API.

  Cette option n'est visible que par les administrateurs d'Amazon Quick Sight. Vous pouvez également ajouter des sous-domaines dans le cadre d’un domaine. Pour de plus amples informations, veuillez consulter [Autoriser la mise en vente de domaines lors de l'exécution avec l'API Amazon Quick](manage-domains.md#embedding-run-time).

  Tous les domaines figurant sur votre liste d’autorisation statique (par exemple, développement, phase intermédiaire et production) doivent être explicitement autorisés, et ils doivent utiliser HTTPS. Vous pouvez ajouter jusqu’à 100 domaines à la liste d’autorisation. Vous pouvez ajouter des domaines lors de l'exécution grâce aux opérations de l'API Amazon Quick Sight.

Une fois toutes les conditions requises remplies, l'intégration d'Amazon Quick Sight implique les étapes suivantes, qui sont expliquées plus en détail ultérieurement : 

1. Pour l’authentification, utilisez votre serveur d’applications pour authentifier l’utilisateur. Après l'authentification sur votre serveur, générez l'URL du tableau de bord intégré à l'aide du AWS SDK dont vous avez besoin.

1. Dans votre portail Web ou votre application, intégrez Amazon Quick Sight à l'aide de l'URL générée. Pour simplifier ce processus, vous pouvez utiliser le SDK Amazon Quick Sight Embedding, disponible sur [NPMJS](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk) et. [GitHub](https://github.com/awslabs/amazon-quicksight-embedding-sdk) Ce JavaScript SDK personnalisé est conçu pour vous aider à intégrer efficacement Amazon Quick Sight dans les pages de votre application, à définir les valeurs par défaut, à connecter les commandes, à obtenir des rappels et à gérer les erreurs. 

Vous pouvez utiliser les journaux AWS CloudTrail d'audit pour obtenir des informations sur le nombre de tableaux de bord intégrés, les utilisateurs d'une expérience intégrée et les taux d'accès.

**Topics**
+ [

# Intégration des tableaux de bord Amazon Quick Sight à l'API Amazon Quick Sight
](embedding-dashboards.md)
+ [

# Intégrer les visuels d'Amazon Quick Sight à Amazon Quick Sight APIs
](embedding-visuals.md)
+ [

# Intégration de toutes les fonctionnalités de la console Amazon Quick Sight pour les utilisateurs enregistrés
](embedded-analytics-full-console-for-authenticated-users.md)
+ [

# Intégration d'Amazon Q dans l'expérience générative de questions-réponses Amazon Quick Sight
](embedding-gen-bi.md)
+ [

# Intégration de la barre de recherche Amazon Quick Sight Q (classique)
](embedding-quicksight-q.md)
+ [

# Intégration des analyses à l'aide des opérations d'API GetDashboardEmbedURL et GetSessionEmbedURL
](embedded-analytics-deprecated.md)

# Intégration des tableaux de bord Amazon Quick Sight à l'API Amazon Quick Sight
<a name="embedding-dashboards"></a>

Consultez les rubriques suivantes pour en savoir plus sur l'intégration de tableaux de bord à l'API Amazon Quick Sight.

**Topics**
+ [

# Intégration de tableaux de bord Amazon Quick Sight pour les utilisateurs enregistrés
](embedded-analytics-dashboards-for-authenticated-users.md)
+ [

# Intégration de tableaux de bord Amazon Quick Sight pour les utilisateurs anonymes (non enregistrés)
](embedded-analytics-dashboards-for-everyone.md)
+ [

# Activation des résumés exécutifs dans les tableaux de bord intégrés
](embedded-analytics-genbi-executive-summaries-dashboard.md)

# Intégration de tableaux de bord Amazon Quick Sight pour les utilisateurs enregistrés
<a name="embedded-analytics-dashboards-for-authenticated-users"></a>

**Important**  
Amazon Quick Sight propose de nouvelles opérations d'API pour intégrer des analyses : `GenerateEmbedUrlForAnonymousUser` et`GenerateEmbedUrlForRegisteredUser`.  
Vous pouvez toujours utiliser les opérations d'`GetSessionEmbedUrl`API `GetDashboardEmbedUrl` et d'API pour intégrer des tableaux de bord et la console Amazon Quick Sight, mais elles ne contiennent pas les dernières fonctionnalités d'intégration. Pour plus d'informations sur l'intégration à l'aide des anciennes opérations d'API, consultez la section [Intégration d'analyses à l'aide des opérations d'GetSessionEmbedURLAPI GetDashboardEmbedURL et](https://docs.aws.amazon.com/quicksight/latest/user/embedded-analytics-deprecated.html).


|  | 
| --- |
|  S’applique à : édition Enterprise  | 


|  | 
| --- |
|    Public cible : développeurs Amazon Quick  | 

Dans les sections suivantes, vous trouverez des informations détaillées sur la façon de configurer des tableaux de bord Amazon Quick Sight intégrés pour les utilisateurs enregistrés d'Amazon Quick Sight.

**Topics**
+ [

## Étape 1 : Configurer des autorisations
](#embedded-dashboards-for-authenticated-users-step-1)
+ [

## Étape 2 : Générer l’URL avec le code d’authentification en pièce jointe
](#embedded-dashboards-for-authenticated-users-step-2)
+ [

## Étape 3 : Intégrer l’URL du tableau de bord
](#embedded-dashboards-for-authenticated-users-step-3)

## Étape 1 : Configurer des autorisations
<a name="embedded-dashboards-for-authenticated-users-step-1"></a>

Dans la section suivante, vous apprendrez à configurer les autorisations pour l’application backend ou le serveur web. Cette tâche requiert un accès d’administration à IAM.

Chaque utilisateur qui accède à un tableau de bord assume un rôle qui lui permet d'accéder à Amazon Quick Sight et d'accéder au tableau de bord. Pour que cela soit possible, créez un rôle IAM dans votre Compte AWS. Associez une politique IAM au rôle afin de fournir des autorisations à n’importe quel utilisateur qui assume ce rôle. Le rôle IAM doit fournir des autorisations pour récupérer l'intégration URLs pour un groupe d'utilisateurs spécifique. À l’aide du caractère générique *\$1*, vous pouvez accorder l’autorisation de générer une URL pour tous les utilisateurs d’un espace de noms spécifique, ou pour un sous-ensemble d’utilisateurs dans des espaces de noms spécifiques. Pour cela, ajoutez `quicksight:GenerateEmbedUrlForRegisteredUser`.

Vous pouvez créer une condition dans votre politique IAM qui limite les domaines que les développeurs peuvent répertorier dans le paramètre `AllowedDomains` d’une opération d’API `GenerateEmbedUrlForRegisteredUser`. Le paramètre `AllowedDomains` est un paramètre facultatif. En tant que développeur, il vous donne la possibilité de remplacer les domaines statiques configurés dans le menu **Manage Amazon Quick Sight**. Vous pouvez plutôt répertorier jusqu’à trois domaines ou sous-domaines qui peuvent accéder à l’URL générée. Cette URL est ensuite intégrée au site web que vous créez. Seuls les domaines répertoriés dans le paramètre peuvent accéder à la représentation visuelle intégrée. Sans cette condition, vous pouvez répertorier n’importe quel domaine sur Internet dans le paramètre `AllowedDomains`. 

Pour limiter les domaines que les développeurs peuvent utiliser avec ce paramètre, ajoutez une condition `AllowedEmbeddingDomains` à votre politique IAM. Pour plus d'informations sur le `AllowedDomains` paramètre, consultez le [GenerateEmbedUrlForRegisteredUser](https://docs.aws.amazon.com//quicksight/latest/APIReference/API_GenerateEmbedUrlForRegisteredUser.html)manuel *Amazon Quick Sight API Reference*.

**Bonnes pratiques de sécurité pour les opérateurs de conditions IAM**  
Les opérateurs de conditions IAM mal configurés peuvent autoriser un accès non autorisé à vos ressources Quick intégrées par le biais de variations d'URL. Lorsque vous utilisez la clé de `quicksight:AllowedEmbeddingDomains` condition dans vos politiques IAM, utilisez des opérateurs de condition qui autorisent des domaines spécifiques ou refusent tous les domaines qui ne sont pas spécifiquement autorisés. Pour plus d'informations sur les opérateurs de condition IAM, voir [Éléments de politique IAM JSON : opérateurs de condition](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html) dans le guide de l'utilisateur IAM.  
De nombreuses variantes d'URL peuvent pointer vers la même ressource. Par exemple, les fichiers suivants ont URLs tous le même contenu :  
`https://example.com`
`https://example.com/`
`https://Example.com`
Si votre politique utilise des opérateurs qui ne tiennent pas compte de ces variations d'URL, un attaquant peut contourner vos restrictions en fournissant des variantes d'URL équivalentes.  
Vous devez vérifier que votre politique IAM utilise des opérateurs de condition appropriés pour empêcher le contournement des vulnérabilités et garantir que seuls les domaines auxquels vous souhaitez accéder peuvent accéder à vos ressources intégrées.

L’exemple de stratégie suivant fournit ces autorisations.

En outre, si vous créez pour la première fois des utilisateurs qui seront des lecteurs d'Amazon Quick Sight, assurez-vous d'ajouter l'`quicksight:RegisterUser`autorisation dans la politique.

L'exemple de politique suivant autorise les nouveaux utilisateurs qui souhaitent lire Amazon Quick Sight à récupérer une URL d'intégration.

Enfin, l’identité IAM de votre application doit avoir une politique d’approbation qui lui est associée afin d’autoriser l’accès au rôle que vous venez de créer. Cela signifie que lorsqu'un utilisateur accède à votre application, celle-ci peut assumer le rôle en son nom et configurer l'utilisateur dans Amazon Quick Sight. Voici un exemple de politique d’approbation. 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowLambdaFunctionsToAssumeThisRole",
            "Effect": "Allow",
            "Principal": {
                "Service": "lambda.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        },
        {
            "Sid": "AllowEC2InstancesToAssumeThisRole",
            "Effect": "Allow",
            "Principal": {
                "Service": "ec2.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

------

Pour plus d’informations sur les stratégies d’approbation pour OpenId Connect ou l’authentification SAML, consultez les sections suivantes du *Guide de l’utilisateur IAM : *
+ [Création d’un rôle pour la fédération d’identité web ou OpenID Connect Federation (Console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_oidc.html)
+ [Création d’un rôle pour la fédération SAML 2.0 (Console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_saml.html)

## Étape 2 : Générer l’URL avec le code d’authentification en pièce jointe
<a name="embedded-dashboards-for-authenticated-users-step-2"></a>

Dans la section suivante, vous découvrirez comment authentifier votre utilisateur et obtenir l’URL de tableau de bord intégrable sur votre serveur d’applications. Si vous prévoyez d'intégrer des tableaux de bord pour les types d'identité IAM ou Amazon Quick Sight, partagez-les avec les utilisateurs.

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 à Amazon Quick Sight, s'il n'existe pas déjà. Puis, elle transmet un identifiant comme ID de session de rôle unique. 

L'exécution de ces étapes garantit que chaque utilisateur du tableau de bord est configuré de manière unique dans Amazon Quick Sight. 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
<a name="embedded-dashboards-for-authenticated-users-java"></a>

```
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.GenerateEmbedUrlForRegisteredUserRequest;
    import com.amazonaws.services.quicksight.model.GenerateEmbedUrlForRegisteredUserResult;
    import com.amazonaws.services.quicksight.model.RegisteredUserEmbeddingExperienceConfiguration;
    import com.amazonaws.services.quicksight.model.RegisteredUserDashboardEmbeddingConfiguration;

    /**
    * Class to call QuickSight AWS SDK to get url for dashboard embedding.
    */
    public class GetQuicksightEmbedUrlRegisteredUserDashboardEmbedding {

        private final AmazonQuickSight quickSightClient;

        public GetQuicksightEmbedUrlRegisteredUserDashboardEmbedding() {
            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, // AWS Account ID
                final String dashboardId, // Dashboard ID to embed
                final List<String> allowedDomains, // Runtime allowed domain for embedding
                final String userArn // Registered user arn to use for embedding. Refer to Get Embed Url section in developer portal to find out how to get user arn for a QuickSight user.
        ) throws Exception {
            final RegisteredUserEmbeddingExperienceConfiguration experienceConfiguration = new RegisteredUserEmbeddingExperienceConfiguration()
                    .withDashboard(new RegisteredUserDashboardEmbeddingConfiguration().withInitialDashboardId(dashboardId));
            final GenerateEmbedUrlForRegisteredUserRequest generateEmbedUrlForRegisteredUserRequest = new GenerateEmbedUrlForRegisteredUserRequest();
            generateEmbedUrlForRegisteredUserRequest.setAwsAccountId(accountId);
            generateEmbedUrlForRegisteredUserRequest.setUserArn(userArn);
            generateEmbedUrlForRegisteredUserRequest.setAllowedDomains(allowedDomains);
            generateEmbedUrlForRegisteredUserRequest.setExperienceConfiguration(experienceConfiguration);

            final GenerateEmbedUrlForRegisteredUserResult generateEmbedUrlForRegisteredUserResult = quickSightClient.generateEmbedUrlForRegisteredUser(generateEmbedUrlForRegisteredUserRequest);

            return generateEmbedUrlForRegisteredUserResult.getEmbedUrl();
        }
    }
```

### JavaScript
<a name="embedded-dashboards-for-authenticated-users-js"></a>

```
global.fetch = require('node-fetch');
    const AWS = require('aws-sdk');

    function generateEmbedUrlForRegisteredUser(
        accountId,
        dashboardId,
        openIdToken, // Cognito-based token
        userArn, // registered user arn
        roleArn, // IAM user role to use for embedding
        sessionName, // Session name for the roleArn assume role
        allowedDomains, // Runtime allowed domain for embedding
        getEmbedUrlCallback, // GetEmbedUrl success callback method
        errorCallback // GetEmbedUrl error callback method
        ) {
        const stsClient = new AWS.STS();
        let stsParams = {
            RoleSessionName: sessionName,
            WebIdentityToken: openIdToken,
            RoleArn: roleArn
        }

        stsClient.assumeRoleWithWebIdentity(stsParams, function(err, data) {
            if (err) {
                console.log('Error assuming role');
                console.log(err, err.stack);
                errorCallback(err);
            } else {
                const getDashboardParams = {
                    "AwsAccountId": accountId,
                    "ExperienceConfiguration": {
                        "Dashboard": {
                            "InitialDashboardId": dashboardId
                        }
                    },
                    "UserArn": userArn,
                    "AllowedDomains": allowedDomains,
                    "SessionLifetimeInMinutes": 600
                };

                const quicksightClient = new AWS.QuickSight({
                    region: process.env.AWS_REGION,
                    credentials: {
                        accessKeyId: data.Credentials.AccessKeyId,
                        secretAccessKey: data.Credentials.SecretAccessKey,
                        sessionToken: data.Credentials.SessionToken,
                        expiration: data.Credentials.Expiration
                    }
                });

                quicksightClient.generateEmbedUrlForRegisteredUser(getDashboardParams, 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
<a name="embedded-dashboards-for-authenticated-users-py"></a>

```
import json
import boto3
from botocore.exceptions import ClientError

sts = boto3.client('sts')

# Function to generate embedded URL  
# accountId: AWS account ID
# dashboardId: Dashboard ID to embed
# userArn: arn of registered user
# allowedDomains: Runtime allowed domain for embedding
# roleArn: IAM user role to use for embedding
# sessionName: session name for the roleArn assume role
def getEmbeddingURL(accountId, dashboardId, userArn, allowedDomains, roleArn, sessionName):
    try:
        assumedRole = sts.assume_role(
            RoleArn = roleArn,
            RoleSessionName = sessionName,
        )
    except ClientError as e:
        return "Error assuming role: " + str(e)
    else: 
        assumedRoleSession = boto3.Session(
            aws_access_key_id = assumedRole['Credentials']['AccessKeyId'],
            aws_secret_access_key = assumedRole['Credentials']['SecretAccessKey'],
            aws_session_token = assumedRole['Credentials']['SessionToken'],
        )
        try:
            quicksightClient = assumedRoleSession.client('quicksight', region_name='us-west-2')
            response = quicksightClient.generate_embed_url_for_registered_user(
                AwsAccountId=accountId,
                ExperienceConfiguration = {
                    "Dashboard": {
                        "InitialDashboardId": dashboardId
                    }
                },
                UserArn = userArn,
                AllowedDomains = allowedDomains,
                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:
            return "Error generating embedding url: " + str(e)
```

### Node.js
<a name="embedded-dashboards-for-authenticated-users-node"></a>

L'exemple suivant montre le JavaScript (Node.js) que vous pouvez utiliser sur le serveur d'applications pour générer l'URL du tableau de bord intégré. Vous pouvez utiliser cette URL dans votre site Web ou votre application pour afficher le tableau de bord. 

**Example**  

```
const AWS = require('aws-sdk');
    const https = require('https');

    var quicksightClient = new AWS.Service({
        apiConfig: require('./quicksight-2018-04-01.min.json'),
        region: 'us-east-1',
    });

    quicksightClient.generateEmbedUrlForRegisteredUser({
        'AwsAccountId': '111122223333',
        'ExperienceConfiguration': { 
            'Dashboard': {
                'InitialDashboardId': '1c1fe111-e2d2-3b30-44ef-a0e111111cde'
            }
        },
        'UserArn': 'REGISTERED_USER_ARN',
        'AllowedDomains': allowedDomains,
        'SessionLifetimeInMinutes': 100
    }, function(err, data) {
        console.log('Errors: ');
        console.log(err);
        console.log('Response: ');
        console.log(data);
    });
```

**Example**  

```
//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://quicksightdomain/embed/12345/dashboards/67890...'
            RequestId: '7bee030e-f191-45c4-97fe-d9faf0e03713' 
        }
```

### .NET/C\$1
<a name="embedded-dashboards-for-authenticated-users-cs"></a>

L’exemple suivant montre le code .NET/C \$1 que vous pouvez utiliser sur le serveur d’applications afin de générer l’URL pour le tableau de bord intégré. Vous pouvez utiliser cette URL dans votre site Web ou votre application pour afficher le tableau de bord. 

**Example**  

```
using System;
    using Amazon.QuickSight;
    using Amazon.QuickSight.Model;

    namespace GenerateDashboardEmbedUrlForRegisteredUser
    {
        class Program
        {
            static void Main(string[] args)
            {
                var quicksightClient = new AmazonQuickSightClient(
                    AccessKey,
                    SecretAccessKey,
                    SessionToken,
                    Amazon.RegionEndpoint.USEast1);
                try
                {
                    RegisteredUserDashboardEmbeddingConfiguration registeredUserDashboardEmbeddingConfiguration
                        = new RegisteredUserDashboardEmbeddingConfiguration
                        {
                            InitialDashboardId = "dashboardId"
                        };
                    RegisteredUserEmbeddingExperienceConfiguration registeredUserEmbeddingExperienceConfiguration
                        = new RegisteredUserEmbeddingExperienceConfiguration
                        {
                            Dashboard = registeredUserDashboardEmbeddingConfiguration
                        };
                        
                    Console.WriteLine(
                        quicksightClient.GenerateEmbedUrlForRegisteredUserAsync(new GenerateEmbedUrlForRegisteredUserRequest
                        {
                            AwsAccountId = "111122223333",
                            ExperienceConfiguration = registeredUserEmbeddingExperienceConfiguration,
                            UserArn = "REGISTERED_USER_ARN",
                            AllowedDomains = allowedDomains,
                            SessionLifetimeInMinutes = 100
                        }).Result.EmbedUrl
                    );
                } catch (Exception ex) {
                    Console.WriteLine(ex.Message);
                }
            }
        }
    }
```

### AWS CLI
<a name="embedded-dashboards-for-authenticated-users-cli"></a>

Pour assumer ce rôle, choisissez l'une des opérations d'API AWS Security Token Service (AWS STS) suivantes :
+ [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)— Utilisez cette opération lorsque vous utilisez une identité IAM pour assumer le rôle.
+ [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html)— Utilisez cette opération lorsque vous utilisez un fournisseur d'identité Web pour authentifier votre utilisateur. 
+ [AssumeRoleWithSaml](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html)— 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:GenerateEmbedUrlForRegisteredUser`. Si vous envisagez d'ajouter des utilisateurs lorsqu'ils ouvrent un just-in-time tableau de bord pour la première fois, les autorisations doivent également être activées pour le rôle`quicksight:RegisterUser`.

```
aws sts assume-role \
        --role-arn "arn:aws:iam::111122223333:role/embedding_quicksight_dashboard_role" \
        --role-session-name john.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ération `AssumeRole`, ceci est probablement dû au fait que le précédent `SESSION TOKEN` est encore dans les variables de l’environnement. Pour l’effacer, définissez les variables suivantes :  
*AWS\$1ACCESS\$1KEY\$1ID* 
*AWS\$1SECRET\$1CLÉ D'ACCÈS* 
*AWS\$1SESSION\$1JETON* 

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 de `export`.

```
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_dashboard_role/john.doe@example.com`. L’ID de session de rôle se compose du nom de rôle issu du `role-arn` et de la valeur `role-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. Le *throttling* est une fonctionnalité de sécurité qui empêche le même utilisateur d'accéder à Amazon Quick Sight depuis plusieurs sites. 

L'ID de session du rôle devient également le nom d'utilisateur dans Amazon Quick Sight. Vous pouvez utiliser ce modèle pour configurer vos utilisateurs dans Amazon Quick Sight à l'avance, ou pour les configurer la première fois qu'ils accèdent au tableau de bord. 

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 [RegisterUser[DescribeUser](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_DescribeUser.html)](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_RegisterUser.html), et sur les autres opérations de l'API Amazon Quick Sight, consultez le manuel [Amazon Quick Sight API Reference](https://docs.aws.amazon.com/quicksight/latest/APIReference/Welcome.html).

```
aws quicksight register-user \
        --aws-account-id 111122223333 \
        --namespace default \
        --identity-type IAM \
        --iam-arn "arn:aws:iam::111122223333:role/embedding_quicksight_dashboard_role" \
        --user-role READER \
        --user-name jhnd \
        --session-name "john.doe@example.com" \
        --email john.doe@example.com \
        --region us-east-1 \
        --custom-permissions-name TeamA1
```

Si votre 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 la première fois qu'ils accèdent à Amazon Quick Sight. Pour les utilisateurs Microsoft AD, vous pouvez utiliser `DescribeUser` pour obtenir l’ARN de l’utilisateur.

La première fois qu'un utilisateur accède à Amazon Quick Sight, vous pouvez également ajouter cet utilisateur au groupe avec lequel le tableau de bord est partagé. 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 d'Amazon Quick Sight et qui a accès au tableau de bord. 

Enfin, pour obtenir une URL signée pour le tableau de bord, appelez `generate-embed-url-for-registered-user` à partir du serveur d’applications. Ceci renvoie l’URL du tableau de bord intégrable. L'exemple suivant montre comment générer l'URL d'un tableau de bord intégré à l'aide d'un appel côté serveur pour les utilisateurs authentifiés par le biais de l'authentification unique (IAM AWS Managed Microsoft AD Identity Center).

```
aws quicksight generate-embed-url-for-registered-user \
        --aws-account-id 111122223333 \
        --session-lifetime-in-minutes 600 \
        --user-arn arn:aws:quicksight:us-east-1:111122223333:user/default/embedding_quicksight_visual_role/embeddingsession \
        --allowed-domains '["domain1","domain2"]' \
        --experience-configuration Dashboard={InitialDashboardId=1a1ac2b2-3fc3-4b44-5e5d-c6db6778df89}
```

Pour plus d’informations sur l’utilisation de cette opération, consultez [https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForRegisteredUser.html](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForRegisteredUser.html). Vous pouvez utiliser cette opération et d’autres opérations d’API dans votre propre code.

## Étape 3 : Intégrer l’URL du tableau de bord
<a name="embedded-dashboards-for-authenticated-users-step-3"></a>

Dans la section suivante, vous découvrirez comment utiliser le [SDK Amazon Quick Sight Embedding](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk) (JavaScript) pour intégrer l'URL du tableau de bord de l'étape 3 à votre site Web ou à la page de votre application. Le kit SDK vous permet d’effectuer les opérations suivantes : 
+ Insérer le tableau de bord sur une page HTML.
+ Transmettre les paramètres au tableau de bord.
+ Gérer les états d’erreurs avec des messages personnalisés pour votre application.

Appelez l’opération d’API `GenerateEmbedUrlForRegisteredUser` pour générer l’URL que vous pouvez intégrer dans votre application. Cette URL est valable pendant 5 minutes et la session qui en résulte est valide jusqu’à 10 heures. L’opération d’API fournit l’URL avec un `auth_code` qui permet une session à connexion unique. 

Voici un exemple de réponse de `generate-embed-url-for-registered-user`.

```
//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://quicksightdomain/embed/12345/dashboards/67890..",
        "RequestId": "7bee030e-f191-45c4-97fe-d9faf0e03713"
    }
```

Intégrez ce tableau de bord à votre page Web à l'aide du [SDK Amazon Quick Sight Embedding](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk) ou en ajoutant cette URL dans un iframe. Si vous définissez une hauteur et une largeur fixes (en pixels), Amazon Quick Sight les utilise et ne modifie pas votre visuel lorsque votre fenêtre est redimensionnée. Si vous définissez un pourcentage relatif de hauteur et de largeur, Amazon Quick Sight fournit une mise en page réactive qui est modifiée en fonction de l'évolution de la taille de votre fenêtre. En utilisant le SDK Amazon Quick Sight Embedding, vous pouvez également contrôler les paramètres du tableau de bord et recevoir des rappels en termes de fin de chargement de page et d'erreurs. 

Le domaine qui hébergera les tableaux de bord intégrés doit figurer sur la *liste d’autorisation*, la liste des domaines approuvés pour votre abonnement Quick . Cette exigence protège vos données en empêchant les domaines non approuvés d’héberger des tableaux de bord intégrés. Pour plus d'informations sur l'ajout de domaines pour les tableaux de bord intégrés, consultez [Autoriser la mise en vente de domaines lors de l'exécution avec l'API Amazon Quick Sight](https://docs.aws.amazon.com/quicksight/latest/user/embedding-run-time.html).

L’exemple suivant montre comment utiliser l’URL générée. Ce code est généré sur votre serveur d’applications.

### SDK 2.0
<a name="embedded-dashboards-for-authenticated-users-sdkv2"></a>

```
<!DOCTYPE html>
<html>

    <head>
        <title>Dashboard Embedding Example</title>
        <script src="https://unpkg.com/amazon-quicksight-embedding-sdk@2.0.0/dist/quicksight-embedding-js-sdk.min.js"></script>
        <script type="text/javascript">
            const embedDashboard = async() => {
                const {
                    createEmbeddingContext,
                } = QuickSightEmbedding;

                const embeddingContext = await createEmbeddingContext({
                    onChange: (changeEvent, metadata) => {
                        console.log('Context received a change', changeEvent, metadata);
                    },
                });

                const frameOptions = {
                    url: '<YOUR_EMBED_URL>',
                    container: '#experience-container',
                    height: "700px",
                    width: "1000px",
                    onChange: (changeEvent, metadata) => {
                        switch (changeEvent.eventName) {
                            case 'FRAME_MOUNTED': {
                                console.log("Do something when the experience frame is mounted.");
                                break;
                            }
                            case 'FRAME_LOADED': {
                                console.log("Do something when the experience frame is loaded.");
                                break;
                            }
                        }
                    },
                };

                const contentOptions = {
                    parameters: [
                        {
                            Name: 'country',
                            Values: [
                                'United States'
                            ],
                        },
                        {
                            Name: 'states',
                            Values: [
                                'California',
                                'Washington'
                            ]
                        }
                    ],
                    locale: "en-US",
                    sheetOptions: {
                        initialSheetId: '<YOUR_SHEETID>',
                        singleSheet: false,                        
                        emitSizeChangedEventOnSheetChange: false,
                    },
                    toolbarOptions: {
                        export: false,
                        undoRedo: false,
                        reset: false
                    },
                    attributionOptions: {
                        overlayContent: false,
                    },
                    onMessage: async (messageEvent, experienceMetadata) => {
                        switch (messageEvent.eventName) {
                            case 'CONTENT_LOADED': {
                                console.log("All visuals are loaded. The title of the document:", messageEvent.message.title);
                                break;
                            }
                            case 'ERROR_OCCURRED': {
                                console.log("Error occurred while rendering the experience. Error code:", messageEvent.message.errorCode);
                                break;
                            }
                            case 'PARAMETERS_CHANGED': {
                                console.log("Parameters changed. Changed parameters:", messageEvent.message.changedParameters);
                                break;
                            }
                            case 'SELECTED_SHEET_CHANGED': {
                                console.log("Selected sheet changed. Selected sheet:", messageEvent.message.selectedSheet);
                                break;
                            }
                            case 'SIZE_CHANGED': {
                                console.log("Size changed. New dimensions:", messageEvent.message);
                                break;
                            }
                            case 'MODAL_OPENED': {
                                window.scrollTo({
                                    top: 0 // iframe top position
                                });
                                break;
                            }
                        }
                    },
                };
                const embeddedDashboardExperience = await embeddingContext.embedDashboard(frameOptions, contentOptions);

                const selectCountryElement = document.getElementById('country');
                selectCountryElement.addEventListener('change', (event) => {
                    embeddedDashboardExperience.setParameters([
                        {
                            Name: 'country',
                            Values: event.target.value
                        }
                    ]);
                });
            };
        </script>
    </head>

    <body onload="embedDashboard()">
        <span>
            <label for="country">Country</label>
            <select id="country" name="country">
                <option value="United States">United States</option>
                <option value="Mexico">Mexico</option>
                <option value="Canada">Canada</option>
            </select>
        </span>
        <div id="experience-container"></div>
    </body>

</html>
```

### SDK 1.0
<a name="embedded-dashboards-for-authenticated-users-sdkv1"></a>

```
<!DOCTYPE html>
<html>

    <head>
        <title>Basic Embed</title>
        <script src="https://unpkg.com/amazon-quicksight-embedding-sdk@1.0.15/dist/quicksight-embedding-js-sdk.min.js"></script>
        <script type="text/javascript">
            var dashboard
            function onDashboardLoad(payload) {
                console.log("Do something when the dashboard is fully loaded.");
            }

            function onError(payload) {
                console.log("Do something when the dashboard fails loading");
            }

            function embedDashboard() {
                var containerDiv = document.getElementById("embeddingContainer");
                var options = {
                    // replace this dummy url with the one generated via embedding API
                    url: "https://us-east-1.quicksight.aws.amazon.com/sn/dashboards/dashboardId?isauthcode=true&identityprovider=quicksight&code=authcode",
                    container: containerDiv,
                    parameters: {
                        country: "United States"
                    },
                    scrolling: "no",
                    height: "700px",
                    width: "1000px",
                    locale: "en-US",
                    footerPaddingEnabled: true
                };
                dashboard = QuickSightEmbedding.embedDashboard(options);
                dashboard.on("error", onError);
                dashboard.on("load", onDashboardLoad);
            }

            function onCountryChange(obj) {
                dashboard.setParameters({country: obj.value});
            }
        </script>
    </head>

    <body onload="embedDashboard()">
        <span>
            <label for="country">Country</label>
            <select id="country" name="country" onchange="onCountryChange(this)">
                <option value="United States">United States</option>
                <option value="Mexico">Mexico</option>
                <option value="Canada">Canada</option>
            </select>
        </span>
        <div id="embeddingContainer"></div>
    </body>

</html>
```

Pour que cet exemple fonctionne, assurez-vous d'utiliser le SDK Amazon Quick Sight Embedding pour charger le tableau de bord intégré sur votre site Web à l'aide de. JavaScript Pour obtenir votre copie, effectuez l’une des actions suivantes :
+ Téléchargez le SDK d'[intégration Amazon Quick Sight](https://github.com/awslabs/amazon-quicksight-embedding-sdk#step-3-create-the-quicksight-session-object) depuis. GitHub Ce référentiel est géré par un groupe de développeurs Amazon Quick Sight.
+ Téléchargez la dernière version du SDK d'intégration sur. [https://www.npmjs.com/package/amazon-quicksight-embedding-sdk](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk)
+ Si vous utilisez `npm` for JavaScript dependencies, téléchargez-le et installez-le en exécutant la commande suivante.

  ```
  npm install amazon-quicksight-embedding-sdk
  ```

# Intégration de tableaux de bord Amazon Quick Sight pour les utilisateurs anonymes (non enregistrés)
<a name="embedded-analytics-dashboards-for-everyone"></a>

**Important**  
Amazon Quick Sight propose de nouvelles opérations d'API pour intégrer des analyses : `GenerateEmbedUrlForAnonymousUser` et`GenerateEmbedUrlForRegisteredUser`.  
Vous pouvez toujours utiliser les opérations d'`GetSessionEmbedUrl`API `GetDashboardEmbedUrl` et d'API pour intégrer des tableaux de bord et la console Amazon Quick Sight, mais elles ne contiennent pas les dernières fonctionnalités d'intégration. Pour plus d'informations sur l'intégration à l'aide des anciennes opérations d'API, consultez la section [Intégration d'analyses à l'aide des opérations d'GetSessionEmbedURLAPI GetDashboardEmbedURL et](https://docs.aws.amazon.com/quicksight/latest/user/embedded-analytics-deprecated.html).


|  | 
| --- |
|  S’applique à : édition Enterprise  | 


|  | 
| --- |
|    Public cible : développeurs Amazon Quick  | 

Dans les sections suivantes, vous trouverez des informations détaillées sur la façon de configurer des tableaux de bord Amazon Quick Sight intégrés pour les utilisateurs anonymes (non enregistrés).

**Topics**
+ [

## Étape 1 : Configurer des autorisations
](#embedded-analytics-dashboards-with-anonymous-users-step-1)
+ [

## Étape 2 : Générer l’URL avec le code d’authentification en pièce jointe
](#embedded-analytics-dashboards-with-anonymous-users-step-2)
+ [

## Étape 3 : Intégrer l’URL du tableau de bord
](#embedded-analytics-dashboards-with-anonymous-users-step-3)

## Étape 1 : Configurer des autorisations
<a name="embedded-analytics-dashboards-with-anonymous-users-step-1"></a>


|  | 
| --- |
|  S’applique à : édition Enterprise  | 


|  | 
| --- |
|    Public cible : développeurs Amazon Quick  | 

Dans la section suivante, vous apprendrez à configurer les autorisations pour l’application backend ou le serveur web. Cette tâche requiert un accès d’administration à IAM.

Chaque utilisateur qui accède à un tableau de bord assume un rôle qui lui permet d'accéder à Amazon Quick Sight et d'accéder au tableau de bord. Pour que cela soit possible, créez un rôle IAM dans votre Compte AWS. Associez une politique IAM au rôle afin de fournir des autorisations à n’importe quel utilisateur qui assume ce rôle.

Vous pouvez créer une condition dans votre politique IAM qui limite les domaines que les développeurs peuvent répertorier dans le paramètre `AllowedDomains` d’une opération d’API `GenerateEmbedUrlForAnonymousUser`. Le paramètre `AllowedDomains` est un paramètre facultatif. En tant que développeur, il vous donne la possibilité de remplacer les domaines statiques configurés dans le menu **Manage Amazon Quick Sight**. Vous pouvez plutôt répertorier jusqu’à trois domaines ou sous-domaines qui peuvent accéder à une URL générée. Cette URL est ensuite intégrée au site web que vous créez. Seuls les domaines répertoriés dans le paramètre peuvent accéder au tableau de bord intégré. Sans cette condition, vous pouvez répertorier n’importe quel domaine sur Internet dans le paramètre `AllowedDomains`. 

Pour limiter les domaines que les développeurs peuvent utiliser avec ce paramètre, ajoutez une condition `AllowedEmbeddingDomains` à votre politique IAM. Pour plus d'informations sur le `AllowedDomains` paramètre, consultez le [GenerateEmbedUrlForAnonymousUser](https://docs.aws.amazon.com//quicksight/latest/APIReference/API_GenerateEmbedUrlForAnonymousUser.html)manuel *Amazon Quick Sight API Reference*.

**Bonnes pratiques de sécurité pour les opérateurs de conditions IAM**  
Les opérateurs de conditions IAM mal configurés peuvent autoriser un accès non autorisé à vos ressources Quick intégrées par le biais de variations d'URL. Lorsque vous utilisez la clé de `quicksight:AllowedEmbeddingDomains` condition dans vos politiques IAM, utilisez des opérateurs de condition qui autorisent des domaines spécifiques ou refusent tous les domaines qui ne sont pas spécifiquement autorisés. Pour plus d'informations sur les opérateurs de condition IAM, voir [Éléments de politique IAM JSON : opérateurs de condition](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html) dans le guide de l'utilisateur IAM.  
De nombreuses variantes d'URL peuvent pointer vers la même ressource. Par exemple, les fichiers suivants ont URLs tous le même contenu :  
`https://example.com`
`https://example.com/`
`https://Example.com`
Si votre politique utilise des opérateurs qui ne tiennent pas compte de ces variations d'URL, un attaquant peut contourner vos restrictions en fournissant des variantes d'URL équivalentes.  
Vous devez vérifier que votre politique IAM utilise des opérateurs de condition appropriés pour empêcher le contournement des vulnérabilités et garantir que seuls les domaines auxquels vous souhaitez accéder peuvent accéder à vos ressources intégrées.

L’exemple de politique suivant fournit ces autorisations à utiliser avec `GenerateEmbedUrlForAnonymousUser`. Pour que cette approche fonctionne, vous avez également besoin d’un pack de session ou d’une tarification de capacité de session pour votre Compte AWS. Sinon, lorsqu’un utilisateur tente d’accéder au tableau de bord, l’erreur `UnsupportedPricingPlanException` est renvoyée. 

L’identité IAM de votre application doit avoir une politique d’approbation qui lui est associée afin d’autoriser l’accès au rôle que vous venez de créer. Cela signifie que lorsqu’un utilisateur accède à votre application, votre application peut assumer le rôle pour le compte de l’utilisateur afin d’ouvrir le tableau de bord. Voici un exemple de politique d’approbation.

------
#### [ JSON ]

****  

```
{
"Version":"2012-10-17",		 	 	 
"Statement": [
    {
        "Sid": "AllowLambdaFunctionsToAssumeThisRole",
        "Effect": "Allow",
        "Principal": {
            "Service": "lambda.amazonaws.com"
        },
        "Action": "sts:AssumeRole"
    },
    {
        "Sid": "AllowEC2InstancesToAssumeThisRole",
        "Effect": "Allow",
        "Principal": {
            "Service": "ec2.amazonaws.com"
        },
        "Action": "sts:AssumeRole"
    }
]
}
```

------

Pour plus d’informations sur les politiques d’approbation, consultez la rubrique [Informations d’identification de sécurité temporaires](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html) dans le *Guide de l’utilisateur IAM*.

## Étape 2 : Générer l’URL avec le code d’authentification en pièce jointe
<a name="embedded-analytics-dashboards-with-anonymous-users-step-2"></a>


|  | 
| --- |
|  S’applique à : édition Enterprise  | 


|  | 
| --- |
|    Public cible : développeurs Amazon Quick  | 

Dans la section suivante, vous découvrirez comment authentifier un visiteur anonyme et obtenir l’URL de tableau de bord 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 à Amazon Quick Sight, s'il n'existe pas déjà. Puis, elle transmet un identifiant comme ID de session de rôle unique. 

Les exemples suivants effectuent l’authentification IAM pour le compte de l’utilisateur. Elle transmet un identifiant comme ID de session de rôle unique. Ce code s’exécute sur votre serveur d’applications.

### Java
<a name="embedded-analytics-dashboards-with-anonymous-users-java"></a>

```
import java.util.List;
    import com.amazonaws.auth.AWSCredentials;
    import com.amazonaws.auth.AWSCredentialsProvider;
    import com.amazonaws.auth.BasicAWSCredentials;
    import com.amazonaws.regions.Regions;
    import com.amazonaws.services.quicksight.AmazonQuickSight;
    import com.amazonaws.services.quicksight.AmazonQuickSightClientBuilder;
    import com.amazonaws.services.quicksight.model.RegisteredUserDashboardEmbeddingConfiguration;
    import com.amazonaws.services.quicksight.model.AnonymousUserEmbeddingExperienceConfiguration;
    import com.amazonaws.services.quicksight.model.GenerateEmbedUrlForAnonymousUserRequest;
    import com.amazonaws.services.quicksight.model.GenerateEmbedUrlForAnonymousUserResult;
    import com.amazonaws.services.quicksight.model.SessionTag;


    /**
    * Class to call QuickSight AWS SDK to generate embed url for anonymous user.
    */
    public class GenerateEmbedUrlForAnonymousUserExample {

        private final AmazonQuickSight quickSightClient;

        public GenerateEmbedUrlForAnonymousUserExample() {
            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 GenerateEmbedUrlForAnonymousUser(
            final String accountId, // YOUR AWS ACCOUNT ID
            final String initialDashboardId, // DASHBOARD ID TO WHICH THE CONSTRUCTED URL POINTS.
            final String namespace, // ANONYMOUS EMBEDDING REQUIRES SPECIFYING A VALID NAMESPACE FOR WHICH YOU WANT THE EMBEDDING URL
            final List<String> authorizedResourceArns, // DASHBOARD ARN LIST TO EMBED
            final List<String> allowedDomains, // RUNTIME ALLOWED DOMAINS FOR EMBEDDING
            final List<SessionTag> sessionTags // SESSION TAGS USED FOR ROW-LEVEL SECURITY
        ) throws Exception {
            AnonymousUserEmbeddingExperienceConfiguration experienceConfiguration = new AnonymousUserEmbeddingExperienceConfiguration();
            AnonymousUserDashboardEmbeddingConfiguration dashboardConfiguration = new AnonymousUserDashboardEmbeddingConfiguration();
            dashboardConfiguration.setInitialDashboardId(initialDashboardId);
            experienceConfiguration.setDashboard(dashboardConfiguration);

            GenerateEmbedUrlForAnonymousUserRequest generateEmbedUrlForAnonymousUserRequest = new GenerateEmbedUrlForAnonymousUserRequest()
                .withAwsAccountId(accountId)
                .withNamespace(namespace)
                .withAuthorizedResourceArns(authorizedResourceArns)
                .withExperienceConfiguration(experienceConfiguration)
                .withSessionTags(sessionTags)
                .withSessionLifetimeInMinutes(600L); // OPTIONAL: VALUE CAN BE [15-600]. DEFAULT: 600
                .withAllowedDomains(allowedDomains);

            GenerateEmbedUrlForAnonymousUserResult dashboardEmbedUrl = quickSightClient.generateEmbedUrlForAnonymousUser(generateEmbedUrlForAnonymousUserRequest);

            return dashboardEmbedUrl.getEmbedUrl();
        }

    }
```

### JavaScript
<a name="embedded-analytics-dashboards-with-anonymous-users-js"></a>

```
global.fetch = require('node-fetch');
const AWS = require('aws-sdk');

function generateEmbedUrlForAnonymousUser(
accountId, // YOUR AWS ACCOUNT ID
initialDashboardId, // DASHBOARD ID TO WHICH THE CONSTRUCTED URL POINTS
quicksightNamespace, // VALID NAMESPACE WHERE YOU WANT TO DO NOAUTH EMBEDDING
authorizedResourceArns, // DASHBOARD ARN LIST TO EMBED
allowedDomains, // RUNTIME ALLOWED DOMAINS FOR EMBEDDING
sessionTags, // SESSION TAGS USED FOR ROW-LEVEL SECURITY
generateEmbedUrlForAnonymousUserCallback, // GENERATEEMBEDURLFORANONYMOUSUSER SUCCESS CALLBACK METHOD
errorCallback // GENERATEEMBEDURLFORANONYMOUSUSER ERROR CALLBACK METHOD
) {
const experienceConfiguration = {
    "DashboardVisual": {
        "InitialDashboardVisualId": {
            "DashboardId": "dashboard_id",
            "SheetId": "sheet_id",
            "VisualId": "visual_id"
        }
    }
};

const generateEmbedUrlForAnonymousUserParams = {
    "AwsAccountId": accountId,
    "Namespace": quicksightNamespace,
    "AuthorizedResourceArns": authorizedResourceArns,
    "AllowedDomains": allowedDomains,
    "ExperienceConfiguration": experienceConfiguration,
    "SessionTags": sessionTags,
    "SessionLifetimeInMinutes": 600
};

const quicksightClient = new AWS.QuickSight({
    region: process.env.AWS_REGION,
    credentials: {
        accessKeyId: AccessKeyId,
        secretAccessKey: SecretAccessKey,
        sessionToken: SessionToken,
        expiration: Expiration
    }
});

quicksightClient.generateEmbedUrlForAnonymousUser(generateEmbedUrlForAnonymousUserParams, 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 THIS API
                "Access-Control-Allow-Headers": "Content-Type"
            },
            "body": JSON.stringify(data),
            "isBase64Encoded": false
        }
        generateEmbedUrlForAnonymousUserCallback(result);
    }
});
}
```

### Python3
<a name="embedded-analytics-dashboards-with-anonymous-users-py"></a>

```
import json
import boto3
from botocore.exceptions import ClientError
import time

# Create QuickSight and STS clients
quicksightClient = boto3.client('quicksight',region_name='us-west-2')
sts = boto3.client('sts')

# Function to generate embedded URL for anonymous user
# accountId: YOUR AWS ACCOUNT ID
# quicksightNamespace: VALID NAMESPACE WHERE YOU WANT TO DO NOAUTH EMBEDDING
# authorizedResourceArns: DASHBOARD ARN LIST TO EMBED
# allowedDomains: RUNTIME ALLOWED DOMAINS FOR EMBEDDING
# dashboardId: DASHBOARD ID TO WHICH THE CONSTRUCTED URL POINTS
# sessionTags: SESSION TAGS USED FOR ROW-LEVEL SECURITY
def generateEmbedUrlForAnonymousUser(accountId, quicksightNamespace, authorizedResourceArns, allowedDomains, dashboardId, sessionTags):
try:
    response = quicksightClient.generate_embed_url_for_anonymous_user(
        AwsAccountId = accountId,
        Namespace = quicksightNamespace,
        AuthorizedResourceArns = authorizedResourceArns,
        AllowedDomains = allowedDomains,
            ExperienceConfiguration = {
                "Dashboard": {
                    "InitialDashboardId": dashboardId
                }
            },
        SessionTags = sessionTags,
        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
<a name="embedded-analytics-dashboards-with-anonymous-users-node"></a>

L'exemple suivant montre le JavaScript (Node.js) que vous pouvez utiliser sur le serveur d'applications pour générer l'URL du tableau de bord intégré. Vous pouvez utiliser cette URL dans votre site Web ou votre application pour afficher le tableau de bord. 

**Example**  

```
const AWS = require('aws-sdk');
    const https = require('https');

    var quicksightClient = new AWS.Service({
        apiConfig: require('./quicksight-2018-04-01.min.json'),
        region: 'us-east-1',
    });

    quicksightClient.generateEmbedUrlForAnonymousUser({
        'AwsAccountId': '111122223333',
        'Namespace' : 'default',
        'AuthorizedResourceArns': authorizedResourceArns,
        'AllowedDomains': allowedDomains,
        'ExperienceConfiguration': experienceConfiguration,
        'SessionTags': sessionTags,
        'SessionLifetimeInMinutes': 600

    }, function(err, data) {
        console.log('Errors: ');
        console.log(err);
        console.log('Response: ');
        console.log(data);
    });
```

**Example**  

```
//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://quicksightdomain/embed/12345/dashboards/67890..',
            RequestId: '7bee030e-f191-45c4-97fe-d9faf0e03713' 
        }
```

### .NET/C\$1
<a name="embedded-analytics-dashboards-with-anonymous-users-cs"></a>

L’exemple suivant montre le code .NET/C \$1 que vous pouvez utiliser sur le serveur d’applications afin de générer l’URL pour le tableau de bord intégré. Vous pouvez utiliser cette URL dans votre site Web ou votre application pour afficher le tableau de bord. 

**Example**  

```
using System;
    using Amazon.QuickSight;
    using Amazon.QuickSight.Model;

    var quicksightClient = new AmazonQuickSightClient(
        AccessKey,
        SecretAccessKey,
        sessionToken,
        Amazon.RegionEndpoint.USEast1);
        
    try
    {
        Console.WriteLine(
            quicksightClient.GenerateEmbedUrlForAnonymousUserAsync(new GenerateEmbedUrlForAnonymousUserRequest
            {
                AwsAccountId = "111122223333",
                Namespace = default,
                AuthorizedResourceArns = authorizedResourceArns,
                AllowedDomains = allowedDomains,
                ExperienceConfiguration = experienceConfiguration,
                SessionTags = sessionTags,
                SessionLifetimeInMinutes = 600,
            }).Result.EmbedUrl
        );
    } catch (Exception ex) {
        Console.WriteLine(ex.Message);
    }
```

### AWS CLI
<a name="embedded-analytics-dashboards-with-anonymous-users-cli"></a>

Pour assumer ce rôle, choisissez l'une des opérations d'API AWS Security Token Service (AWS STS) suivantes :
+ [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)— Utilisez cette opération lorsque vous utilisez une identité IAM pour assumer le rôle.
+ [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html)— Utilisez cette opération lorsque vous utilisez un fournisseur d'identité Web pour authentifier votre utilisateur. 
+ [AssumeRoleWithSaml](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html)— Utilisez cette opération lorsque vous utilisez le langage SAML (Security Assertion Markup Language) 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:GenerateEmbedUrlForAnonymousUser`. 

```
aws sts assume-role \
    --role-arn "arn:aws:iam::11112222333:role/QuickSightEmbeddingAnonymousPolicy" \
    --role-session-name anonymous caller
```

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ération `AssumeRole`, ceci est probablement dû au fait que le précédent `SESSION TOKEN` est encore dans les variables de l’environnement. Pour l’effacer, définissez les variables suivantes :  
*AWS\$1ACCESS\$1KEY\$1ID* 
*AWS\$1SECRET\$1CLÉ D'ACCÈS* 
*AWS\$1SESSION\$1JETON* 

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 de `export`.

```
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_dashboard_role/QuickSightEmbeddingAnonymousPolicy`. L’ID de session de rôle se compose du nom de rôle issu du `role-arn` et de la valeur `role-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 visiteur. Cela permet également de garder chaque session séparée et distincte. Si vous utilisez un ensemble de serveurs web, par exemple pour l’équilibrage de charge, et qu’une session est reconnectée à un autre serveur, une nouvelle session démarre.

Pour obtenir une URL signée pour le tableau de bord, appelez `generate-embed-url-for-anynymous-user` à partir du serveur d’applications. Ceci renvoie l’URL du tableau de bord intégrable. L’exemple suivant montre comment générer l’URL d’un tableau de bord intégré à l’aide d’un appel côté serveur pour les utilisateurs qui effectuent des visites anonymes sur votre portail web ou votre application.

```
aws quicksight generate-embed-url-for-anonymous-user \
--aws-account-id 111122223333 \
--namespace default-or-something-else \
--session-lifetime-in-minutes 15 \
--authorized-resource-arns '["dashboard-arn-1","dashboard-arn-2"]' \
--allowed-domains '["domain1","domain2"]' \
--session-tags '["Key": tag-key-1,"Value": tag-value-1,{"Key": tag-key-1,"Value": tag-value-1}]' \
--experience-configuration 'DashboardVisual={InitialDashboardVisualId={DashboardId=dashboard_id,SheetId=sheet_id,VisualId=visual_id}}'
```

Pour plus d’informations sur l’utilisation de cette opération, consultez [https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForAnonymousUser.html](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForAnonymousUser.html). Vous pouvez utiliser cette opération et d’autres opérations d’API dans votre propre code. 

## Étape 3 : Intégrer l’URL du tableau de bord
<a name="embedded-analytics-dashboards-with-anonymous-users-step-3"></a>


|  | 
| --- |
|  S’applique à : édition Enterprise  | 


|  | 
| --- |
|    Public cible : développeurs Amazon Quick  | 

Dans la section suivante, vous découvrirez comment utiliser le [SDK Amazon Quick Sight Embedding](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk) (JavaScript) pour intégrer l'URL du tableau de bord de l'étape 2 à votre site Web ou à la page de votre application. Le kit SDK vous permet d’effectuer les opérations suivantes : 
+ Insérer le tableau de bord sur une page HTML.
+ Transmettre les paramètres au tableau de bord.
+ Gérer les états d’erreurs avec des messages personnalisés pour votre application.

Appelez l’opération d’API `GenerateEmbedUrlForAnynymousUser` pour générer l’URL que vous pouvez intégrer dans votre application. Cette URL est valable pendant 5 minutes et la session qui en résulte est valide pendant 10 heures. L’opération d’API fournit l’URL avec un `auth_code` qui permet une session à connexion unique. 

Voici un exemple de réponse de `generate-embed-url-for-anynymous-user`.

```
//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://quicksightdomain/embed/12345/dashboards/67890..",
            "RequestId": "7bee030e-f191-45c4-97fe-d9faf0e03713"
        }
```

Intégrez ce tableau de bord à votre page Web à l'aide du [SDK Amazon Quick Sight Embedding](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk) ou en ajoutant cette URL dans un iframe. Si vous définissez une hauteur et une largeur fixes (en pixels), Amazon Quick Sight les utilise et ne modifie pas votre visuel lorsque votre fenêtre est redimensionnée. Si vous définissez un pourcentage relatif de hauteur et de largeur, Amazon Quick Sight fournit une mise en page réactive qui est modifiée en fonction de l'évolution de la taille de votre fenêtre. En utilisant le SDK Amazon Quick Sight Embedding, vous pouvez également contrôler les paramètres du tableau de bord et recevoir des rappels en termes de fin de chargement de page et d'erreurs. 

Le domaine qui hébergera les tableaux de bord intégrés doit figurer sur la *liste d’autorisation*, la liste des domaines approuvés pour votre abonnement Quick . Cette exigence protège vos données en empêchant les domaines non approuvés d’héberger des tableaux de bord intégrés. Pour plus d'informations sur l'ajout de domaines pour les tableaux de bord intégrés, consultez [Autoriser la mise en vente de domaines lors de l'exécution avec l'API Amazon Quick Sight](https://docs.aws.amazon.com/quicksight/latest/user/embedding-run-time.html).

L’exemple suivant montre comment utiliser l’URL générée. Ce code réside dans votre serveur d’applications.

### SDK 2.0
<a name="embedded-analytics-dashboards-with-anonymous-users-sdkv2"></a>

```
<!DOCTYPE html>
<html>

<head>
    <title>Dashboard Embedding Example</title>
    <script src="https://unpkg.com/amazon-quicksight-embedding-sdk@2.0.0/dist/quicksight-embedding-js-sdk.min.js"></script>
    <script type="text/javascript">
        const embedDashboard = async() => {
            const {
                createEmbeddingContext,
            } = QuickSightEmbedding;

            const embeddingContext = await createEmbeddingContext({
                onChange: (changeEvent, metadata) => {
                    console.log('Context received a change', changeEvent, metadata);
                },
            });

            const frameOptions = {
                url: '<YOUR_EMBED_URL>',
                container: '#experience-container',
                height: "700px",
                width: "1000px",
                onChange: (changeEvent, metadata) => {
                    switch (changeEvent.eventName) {
                        case 'FRAME_MOUNTED': {
                            console.log("Do something when the experience frame is mounted.");
                            break;
                        }
                        case 'FRAME_LOADED': {
                            console.log("Do something when the experience frame is loaded.");
                            break;
                        }
                    }
                },
            };

            const contentOptions = {
                parameters: [
                    {
                        Name: 'country',
                        Values: [
                            'United States'
                        ],
                    },
                    {
                        Name: 'states',
                        Values: [
                            'California',
                            'Washington'
                        ]
                    }
                ],
                locale: "en-US",
                sheetOptions: {
                    initialSheetId: '<YOUR_SHEETID>',
                    singleSheet: false,                        
                    emitSizeChangedEventOnSheetChange: false,
                },
                toolbarOptions: {
                    export: false,
                    undoRedo: false,
                    reset: false
                },
                attributionOptions: {
                    overlayContent: false,
                },
                onMessage: async (messageEvent, experienceMetadata) => {
                    switch (messageEvent.eventName) {
                        case 'CONTENT_LOADED': {
                            console.log("All visuals are loaded. The title of the document:", messageEvent.message.title);
                            break;
                        }
                        case 'ERROR_OCCURRED': {
                            console.log("Error occurred while rendering the experience. Error code:", messageEvent.message.errorCode);
                            break;
                        }
                        case 'PARAMETERS_CHANGED': {
                            console.log("Parameters changed. Changed parameters:", messageEvent.message.changedParameters);
                            break;
                        }
                        case 'SELECTED_SHEET_CHANGED': {
                            console.log("Selected sheet changed. Selected sheet:", messageEvent.message.selectedSheet);
                            break;
                        }
                        case 'SIZE_CHANGED': {
                            console.log("Size changed. New dimensions:", messageEvent.message);
                            break;
                        }
                        case 'MODAL_OPENED': {
                            window.scrollTo({
                                top: 0 // iframe top position
                            });
                            break;
                        }
                    }
                },
            };
            const embeddedDashboardExperience = await embeddingContext.embedDashboard(frameOptions, contentOptions);

            const selectCountryElement = document.getElementById('country');
            selectCountryElement.addEventListener('change', (event) => {
                embeddedDashboardExperience.setParameters([
                    {
                        Name: 'country',
                        Values: event.target.value
                    }
                ]);
            });
        };
    </script>
</head>

<body onload="embedDashboard()">
    <span>
        <label for="country">Country</label>
        <select id="country" name="country">
            <option value="United States">United States</option>
            <option value="Mexico">Mexico</option>
            <option value="Canada">Canada</option>
        </select>
    </span>
    <div id="experience-container"></div>
</body>

</html>
```

### SDK 1.0
<a name="embedded-analytics-dashboards-with-anonymous-users-sdkv1"></a>

```
<!DOCTYPE html>
<html>

<head>
    <title>Basic Embed</title>
    <script src="https://unpkg.com/amazon-quicksight-embedding-sdk@1.0.15/dist/quicksight-embedding-js-sdk.min.js"></script>
    <script type="text/javascript">
        var dashboard
        function onDashboardLoad(payload) {
            console.log("Do something when the dashboard is fully loaded.");
        }

        function onError(payload) {
            console.log("Do something when the dashboard fails loading");
        }

        function embedDashboard() {
            var containerDiv = document.getElementById("embeddingContainer");
            var options = {
                // replace this dummy url with the one generated via embedding API
                url: "https://us-east-1.quicksight.aws.amazon.com/sn/dashboards/dashboardId?isauthcode=true&identityprovider=quicksight&code=authcode",
                container: containerDiv,
                parameters: {
                    country: "United States"
                },
                scrolling: "no",
                height: "700px",
                width: "1000px",
                locale: "en-US",
                footerPaddingEnabled: true
            };
            dashboard = QuickSightEmbedding.embedDashboard(options);
            dashboard.on("error", onError);
            dashboard.on("load", onDashboardLoad);
        }

        function onCountryChange(obj) {
            dashboard.setParameters({country: obj.value});
        }
    </script>
</head>

<body onload="embedDashboard()">
    <span>
        <label for="country">Country</label>
        <select id="country" name="country" onchange="onCountryChange(this)">
            <option value="United States">United States</option>
            <option value="Mexico">Mexico</option>
            <option value="Canada">Canada</option>
        </select>
    </span>
    <div id="embeddingContainer"></div>
</body>

</html>
```

Pour que cet exemple fonctionne, assurez-vous d'utiliser le SDK Amazon Quick Sight Embedding pour charger le tableau de bord intégré sur votre site Web à l'aide de. JavaScript Pour obtenir votre copie, effectuez l’une des actions suivantes :
+ Téléchargez le SDK d'[intégration Amazon Quick Sight](https://github.com/awslabs/amazon-quicksight-embedding-sdk#step-3-create-the-quicksight-session-object) depuis. GitHub Ce référentiel est géré par un groupe de développeurs Amazon Quick Sight.
+ Téléchargez la dernière version du SDK Amazon Quick Sight Embedding depuis. [https://www.npmjs.com/package/amazon-quicksight-embedding-sdk](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk)
+ Si vous utilisez `npm` for JavaScript dependencies, téléchargez-le et installez-le en exécutant la commande suivante.

  ```
  npm install amazon-quicksight-embedding-sdk
  ```

# Activation des résumés exécutifs dans les tableaux de bord intégrés
<a name="embedded-analytics-genbi-executive-summaries-dashboard"></a>


|  | 
| --- |
|  S’applique à : édition Enterprise  | 


|  | 
| --- |
|    Public cible : développeurs Amazon Quick  | 

Vous pouvez activer les résumés dans vos tableaux de bord intégrés. Lorsque cette option est activée, les utilisateurs enregistrés peuvent générer des résumés récapitulant toutes les informations générées par Amazon Quick Sight pour le tableau de bord. Les résumés exécutifs permettent aux lecteurs de trouver plus facilement des informations et des informations clés sur un tableau de bord. Pour plus d'informations sur la façon dont les utilisateurs génèrent le résumé d'un tableau de bord, voir [Générer un résumé d'un tableau de bord Amazon Quick Sight](https://docs.aws.amazon.com/quicksight/latest/user/use-executive-summaries.html).

**Note**  
Les résumés exécutifs ne sont disponibles que dans les tableaux de bord intégrés pour les utilisateurs enregistrés, et ne peuvent pas être activés dans les tableaux de bord intégrés pour les utilisateurs anonymes ou non enregistrés.

**Pour activer les résumés exécutifs dans les tableaux de bord intégrés pour les utilisateurs enregistrés**
+ Suivez les étapes décrites dans la section [Intégration des tableaux de bord Amazon Quick Sight pour les utilisateurs enregistrés](https://docs.aws.amazon.com/quicksight/latest/user/embedded-analytics-dashboards-for-authenticated-users.html) afin d'intégrer un tableau de bord avec les modifications suivantes :

  1. Lors de la génération de l'URL à l'étape 2, définissez `Enabled: true` le `ExecutiveSummary` paramètre dans le [GenerateEmbedUrlForRegisteredUser](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForRegisteredUser.html)ou [GenerateEmbedUrlForRegisteredUserWithIdentity](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForRegisteredUserWithIdentity.html)comme indiqué dans l'exemple suivant :

     ```
     ExperienceConfiguration: {
             Dashboard: {
                 InitialDashboardId: dashboard_id,
                 FeatureConfigurations: {
                     AmazonQInQuickSight: {
                         ExecutiveSummary: {
                             Enabled: true
                         }
                     }
                 }
             }
         }
     }
     ```

  1. Lorsque vous intégrez l'URL du tableau de bord au SDK Amazon Quick Sight Embedding à l'étape 3, configurez-le`contentOptions`, comme indiqué `executiveSummary: true` dans l'exemple suivant :

     ```
     const contentOptions = {
         toolbarOptions: {
             executiveSummary: true
         }
     };
     ```

# Intégrer les visuels d'Amazon Quick Sight à Amazon Quick Sight APIs
<a name="embedding-visuals"></a>

Vous pouvez intégrer des visuels individuels faisant partie d'un tableau de bord publié dans votre application grâce à l'API Amazon Quick Sight.

**Topics**
+ [

# Intégration de visuels Amazon Quick Sight pour les utilisateurs enregistrés
](embedded-analytics-visuals-for-authenticated-users.md)
+ [

# Intégration de visuels Amazon Quick Sight pour les utilisateurs anonymes (non enregistrés)
](embedded-analytics-visuals-for-everyone.md)

# Intégration de visuels Amazon Quick Sight pour les utilisateurs enregistrés
<a name="embedded-analytics-visuals-for-authenticated-users"></a>


|  | 
| --- |
|  S’applique à : édition Enterprise  | 


|  | 
| --- |
|    Public cible : développeurs Amazon Quick  | 

Dans les sections suivantes, vous trouverez des informations détaillées sur la façon de configurer les visuels Amazon Quick Sight intégrés pour les utilisateurs enregistrés d'Amazon Quick Sight.

**Topics**
+ [

## Étape 1 : Configurer des autorisations
](#embedded-visuals-for-authenticated-users-step-1)
+ [

## Étape 2 : Générer l’URL avec le code d’authentification en pièce jointe
](#embedded-visuals-for-authenticated-users-step-2)
+ [

## Étape 3 : Intégrer l’URL de la représentation visuelle
](#embedded-visuals-for-authenticated-users-step-3)

## Étape 1 : Configurer des autorisations
<a name="embedded-visuals-for-authenticated-users-step-1"></a>

Dans la section suivante, vous apprendrez à configurer les autorisations pour l’application backend ou le serveur web. Cette tâche requiert un accès d’administration à IAM.

Chaque utilisateur qui accède à un visuel assume un rôle qui lui donne accès à Amazon Quick Sight et l'autorise à accéder au visuel. Pour que cela soit possible, créez un rôle IAM dans votre Compte AWS. Associez une politique IAM au rôle afin de fournir des autorisations à n’importe quel utilisateur qui assume ce rôle. Le rôle IAM doit fournir des autorisations pour récupérer l'intégration URLs pour un groupe d'utilisateurs spécifique. À l’aide du caractère générique *\$1*, vous pouvez accorder l’autorisation de générer une URL pour tous les utilisateurs d’un espace de noms spécifique, ou pour un sous-ensemble d’utilisateurs dans des espaces de noms spécifiques. Pour cela, ajoutez `quicksight:GenerateEmbedUrlForRegisteredUser`.

Vous pouvez créer une condition dans votre politique IAM qui limite les domaines que les développeurs peuvent répertorier dans le paramètre `AllowedDomains` d’une opération d’API `GenerateEmbedUrlForAnonymousUser`. Le paramètre `AllowedDomains` est un paramètre facultatif. En tant que développeur, il vous donne la possibilité de remplacer les domaines statiques configurés dans le menu **Manage Amazon Quick Sight**. Vous pouvez plutôt répertorier jusqu’à trois domaines ou sous-domaines qui peuvent accéder à une URL générée. Cette URL est ensuite intégrée au site web que vous créez. Seuls les domaines répertoriés dans le paramètre peuvent accéder au tableau de bord intégré. Sans cette condition, vous pouvez répertorier n’importe quel domaine sur Internet dans le paramètre `AllowedDomains`. 

Pour limiter les domaines que les développeurs peuvent utiliser avec ce paramètre, ajoutez une condition `AllowedEmbeddingDomains` à votre politique IAM. Pour plus d'informations sur le `AllowedDomains` paramètre, consultez le [GenerateEmbedUrlForRegisteredUser](https://docs.aws.amazon.com//quicksight/latest/APIReference/API_GenerateEmbedUrlForRegisteredUser.html)manuel *Amazon Quick Sight API Reference*.

**Bonnes pratiques de sécurité pour les opérateurs de conditions IAM**  
Les opérateurs de conditions IAM mal configurés peuvent autoriser un accès non autorisé à vos ressources Quick intégrées par le biais de variations d'URL. Lorsque vous utilisez la clé de `quicksight:AllowedEmbeddingDomains` condition dans vos politiques IAM, utilisez des opérateurs de condition qui autorisent des domaines spécifiques ou refusent tous les domaines qui ne sont pas spécifiquement autorisés. Pour plus d'informations sur les opérateurs de condition IAM, voir [Éléments de politique IAM JSON : opérateurs de condition](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html) dans le guide de l'utilisateur IAM.  
De nombreuses variantes d'URL peuvent pointer vers la même ressource. Par exemple, les fichiers suivants ont URLs tous le même contenu :  
`https://example.com`
`https://example.com/`
`https://Example.com`
Si votre politique utilise des opérateurs qui ne tiennent pas compte de ces variations d'URL, un attaquant peut contourner vos restrictions en fournissant des variantes d'URL équivalentes.  
Vous devez vérifier que votre politique IAM utilise des opérateurs de condition appropriés pour empêcher le contournement des vulnérabilités et garantir que seuls les domaines auxquels vous souhaitez accéder peuvent accéder à vos ressources intégrées.

L’exemple de stratégie suivant fournit ces autorisations.

En outre, si vous créez pour la première fois des utilisateurs qui seront des lecteurs d'Amazon Quick Sight, assurez-vous d'ajouter l'`quicksight:RegisterUser`autorisation dans la politique.

L'exemple de politique suivant autorise les nouveaux utilisateurs qui souhaitent lire Amazon Quick Sight à récupérer une URL d'intégration.

Enfin, l’identité IAM de votre application doit avoir une politique d’approbation qui lui est associée afin d’autoriser l’accès au rôle que vous venez de créer. Cela signifie que lorsqu'un utilisateur accède à votre application, celle-ci peut assumer le rôle en son nom et configurer l'utilisateur dans Amazon Quick Sight. Voici un exemple de politique d’approbation.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowLambdaFunctionsToAssumeThisRole",
            "Effect": "Allow",
            "Principal": {
                "Service": "lambda.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        },
        {
            "Sid": "AllowEC2InstancesToAssumeThisRole",
            "Effect": "Allow",
            "Principal": {
                "Service": "ec2.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

------

Pour plus d’informations sur les stratégies d’approbation pour OpenId Connect ou l’authentification SAML, consultez les sections suivantes du *Guide de l’utilisateur IAM : *
+ [Création d’un rôle pour la fédération d’identité web ou OpenID Connect Federation (Console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_oidc.html)
+ [Création d’un rôle pour la fédération SAML 2.0 (Console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_saml.html)

## Étape 2 : Générer l’URL avec le code d’authentification en pièce jointe
<a name="embedded-visuals-for-authenticated-users-step-2"></a>

Dans la section suivante, vous découvrirez comment authentifier votre utilisateur Amazon Quick Sight et obtenir l'URL visuelle intégrable sur votre serveur d'applications. Si vous prévoyez d'intégrer des visuels pour les types d'identité IAM ou Amazon Quick Sight, partagez-les avec les utilisateurs d'Amazon Quick Sight.

Lorsqu'un utilisateur d'Amazon Quick Sight accède à votre application, celle-ci assume le rôle IAM au nom de l'utilisateur d'Amazon Quick Sight. Il ajoute ensuite l'utilisateur à Amazon Quick Sight, si cet utilisateur Amazon Quick Sight 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 visionneur du visuel est configuré de manière unique dans Amazon Quick Sight. 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 exécutent l'authentification IAM au nom de l'utilisateur Amazon Quick Sight. Ce code s’exécute sur votre serveur d’applications.

### Java
<a name="embedded-visuals-for-authenticated-users-java"></a>

```
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.DashboardVisualId;
import com.amazonaws.services.quicksight.model.GenerateEmbedUrlForRegisteredUserRequest;
import com.amazonaws.services.quicksight.model.GenerateEmbedUrlForRegisteredUserResult;
import com.amazonaws.services.quicksight.model.RegisteredUserDashboardVisualEmbeddingConfiguration;
import com.amazonaws.services.quicksight.model.RegisteredUserEmbeddingExperienceConfiguration;

import java.util.List;

/**
 * Class to call QuickSight AWS SDK to get url for Visual embedding.
 */
public class GenerateEmbedUrlForRegisteredUserTest {

    private final AmazonQuickSight quickSightClient;

    public GenerateEmbedUrlForRegisteredUserTest() {
        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 getEmbedUrl(
            final String accountId, // AWS Account ID
            final String dashboardId, // Dashboard ID of the dashboard to embed
            final String sheetId, // Sheet ID of the sheet to embed
            final String visualId, // Visual ID of the visual to embed
            final List<String> allowedDomains, // Runtime allowed domains for embedding
            final String userArn // Registered user arn of the user that you want to provide embedded visual. Refer to Get Embed Url section in developer portal to find out how to get user arn for a QuickSight user.
    ) throws Exception {
        final DashboardVisualId dashboardVisual = new DashboardVisualId()
            .withDashboardId(dashboardId)
            .withSheetId(sheetId)
            .withVisualId(visualId);
        final RegisteredUserDashboardVisualEmbeddingConfiguration registeredUserDashboardVisualEmbeddingConfiguration
            = new RegisteredUserDashboardVisualEmbeddingConfiguration()
                .withInitialDashboardVisualId(dashboardVisual);
        final RegisteredUserEmbeddingExperienceConfiguration registeredUserEmbeddingExperienceConfiguration
            = new RegisteredUserEmbeddingExperienceConfiguration()
                .withDashboardVisual(registeredUserDashboardVisualEmbeddingConfiguration);
        final GenerateEmbedUrlForRegisteredUserRequest generateEmbedUrlForRegisteredUserRequest
            = new GenerateEmbedUrlForRegisteredUserRequest()
                .withAwsAccountId(accountId)
                .withUserArn(userArn)
                .withExperienceConfiguration(registeredUserEmbeddingExperienceConfiguration)
                .withAllowedDomains(allowedDomains);

        final GenerateEmbedUrlForRegisteredUserResult generateEmbedUrlForRegisteredUserResult = quickSightClient.generateEmbedUrlForRegisteredUser(generateEmbedUrlForRegisteredUserRequest);

        return generateEmbedUrlForRegisteredUserResult.getEmbedUrl();
    }
}
```

### JavaScript
<a name="embedded-visuals-for-authenticated-users-js"></a>

```
global.fetch = require('node-fetch');
const AWS = require('aws-sdk');

function generateEmbedUrlForRegisteredUser(
    accountId, // Your AWS account ID
    dashboardId, // Dashboard ID to which the constructed URL points
    sheetId, // Sheet ID to which the constructed URL points
    visualId, // Visual ID to which the constructed URL points
    openIdToken, // Cognito-based token
    userArn, // registered user arn
    roleArn, // IAM user role to use for embedding
    sessionName, // Session name for the roleArn assume role
    allowedDomains, // Runtime allowed domain for embedding
    getEmbedUrlCallback, // GetEmbedUrl success callback method
    errorCallback // GetEmbedUrl error callback method
    ) {
    const stsClient = new AWS.STS();
    let stsParams = {
        RoleSessionName: sessionName,
        WebIdentityToken: openIdToken,
        RoleArn: roleArn
    }

    stsClient.assumeRoleWithWebIdentity(stsParams, function(err, data) {
        if (err) {
            console.log('Error assuming role');
            console.log(err, err.stack);
            errorCallback(err);
        } else {
            const getDashboardParams = {
                "AwsAccountId": accountId,
                "ExperienceConfiguration": {
                    "DashboardVisual": {
                        "InitialDashboardVisualId": {
                            "DashboardId": dashboardId,
                            "SheetId": sheetId,
                            "VisualId": visualId
                        }
                    }
                },
                "UserArn": userArn,
                "AllowedDomains": allowedDomains,
                "SessionLifetimeInMinutes": 600
            };

            const quicksightGetDashboard = new AWS.QuickSight({
                region: process.env.AWS_REGION,
                credentials: {
                    accessKeyId: data.Credentials.AccessKeyId,
                    secretAccessKey: data.Credentials.SecretAccessKey,
                    sessionToken: data.Credentials.SessionToken,
                    expiration: data.Credentials.Expiration
                }
            });

            quicksightGetDashboard.generateEmbedUrlForRegisteredUser(getDashboardParams, 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
<a name="embedded-visuals-for-authenticated-users-py"></a>

```
import json
import boto3
from botocore.exceptions import ClientError

sts = boto3.client('sts')

# Function to generate embedded URL  
# accountId: AWS account ID
# dashboardId: Dashboard ID to embed
# sheetId: SHEET ID to embed from the dashboard 
# visualId: Id for the Visual you want to embedded from the dashboard sheet. 
# userArn: arn of registered user
# allowedDomains: Runtime allowed domain for embedding
# roleArn: IAM user role to use for embedding
# sessionName: session name for the roleArn assume role
def getEmbeddingURL(accountId, dashboardId, sheetId, visualId, userArn, allowedDomains, roleArn, sessionName):
    try:
        assumedRole = sts.assume_role(
            RoleArn = roleArn,
            RoleSessionName = sessionName,
        )
    except ClientError as e:
        return "Error assuming role: " + str(e)
    else: 
        assumedRoleSession = boto3.Session(
            aws_access_key_id = assumedRole['Credentials']['AccessKeyId'],
            aws_secret_access_key = assumedRole['Credentials']['SecretAccessKey'],
            aws_session_token = assumedRole['Credentials']['SessionToken'],
        )
        try:
            quicksightClient = assumedRoleSession.client('quicksight', region_name='us-west-2')
            response = quicksightClient.generate_embed_url_for_registered_user(
                AwsAccountId=accountId,
                ExperienceConfiguration = {
                    'DashboardVisual': {
                        'InitialDashboardVisualId': {
                            'DashboardId': dashboardId,
                            'SheetId': sheetId,
                            'VisualId': visualId
                        }
                    },
                },
                UserArn = userArn,
                AllowedDomains = allowedDomains,
                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:
            return "Error generating embedding url: " + str(e)
```

### Node.js
<a name="embedded-visuals-for-authenticated-users-node"></a>

L'exemple suivant montre le JavaScript (Node.js) que vous pouvez utiliser sur le serveur d'applications pour générer l'URL du tableau de bord intégré. Vous pouvez utiliser cette URL dans votre site Web ou votre application pour afficher le tableau de bord. 

**Example**  

```
const AWS = require('aws-sdk');
const https = require('https');

var quicksightClient = new AWS.Service({
    apiConfig: require('./quicksight-2018-04-01.min.json'),
    region: 'us-east-1',
});

quicksightClient.generateEmbedUrlForRegisteredUser({
    'AwsAccountId': '111122223333',
    'ExperienceConfiguration': { 
        'DashboardVisual': {
            'InitialDashboardVisualId': {
                'DashboardId': 'dashboard_id',
                'SheetId': 'sheet_id',
                'VisualId': 'visual_id'
            }
        }
    },
    'UserArn': 'REGISTERED_USER_ARN',
    'AllowedDomains': allowedDomains,
    'SessionLifetimeInMinutes': 100
}, function(err, data) {
    console.log('Errors: ');
    console.log(err);
    console.log('Response: ');
    console.log(data);
});
```

**Example**  

```
//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://quicksightdomain/embed/12345/dashboards/67890/sheets/12345/visuals/67890...",
        "RequestId": "7bee030e-f191-45c4-97fe-d9faf0e03713"
    }
```

### .NET/C\$1
<a name="embedded-visuals-for-authenticated-users-cs"></a>

L’exemple suivant montre le code .NET/C \$1 que vous pouvez utiliser sur le serveur d’applications afin de générer l’URL pour le tableau de bord intégré. Vous pouvez utiliser cette URL dans votre site Web ou votre application pour afficher le tableau de bord. 

**Example**  

```
using System;
using Amazon.QuickSight;
using Amazon.QuickSight.Model;

namespace GenerateDashboardEmbedUrlForRegisteredUser
{
    class Program
    {
        static void Main(string[] args)
        {
            var quicksightClient = new AmazonQuickSightClient(
                AccessKey,
                SecretAccessKey,
                SessionToken,
                Amazon.RegionEndpoint.USEast1);
            try
            {
                DashboardVisualId dashboardVisual = new DashboardVisualId
                {
                    DashboardId = "dashboard_id",
                    SheetId = "sheet_id",
                    VisualId = "visual_id"
                };

                RegisteredUserDashboardVisualEmbeddingConfiguration registeredUserDashboardVisualEmbeddingConfiguration
                    = new RegisteredUserDashboardVisualEmbeddingConfiguration
                    {
                        InitialDashboardVisualId = dashboardVisual                        
                    };               
                    
                RegisteredUserEmbeddingExperienceConfiguration registeredUserEmbeddingExperienceConfiguration
                    = new RegisteredUserEmbeddingExperienceConfiguration
                    {
                        DashboardVisual = registeredUserDashboardVisualEmbeddingConfiguration
                    };
                    
                Console.WriteLine(
                    quicksightClient.GenerateEmbedUrlForRegisteredUserAsync(new GenerateEmbedUrlForRegisteredUserRequest
                    {
                        AwsAccountId = "111122223333",
                        ExperienceConfiguration = registeredUserEmbeddingExperienceConfiguration,
                        UserArn = "REGISTERED_USER_ARN",
                        AllowedDomains = allowedDomains,
                        SessionLifetimeInMinutes = 100
                    }).Result.EmbedUrl
                );
            } catch (Exception ex) {
                Console.WriteLine(ex.Message);
            }
        }
    }
}
```

### AWS CLI
<a name="embedded-visuals-for-authenticated-users-cli"></a>

Pour assumer ce rôle, choisissez l'une des opérations d'API AWS Security Token Service (AWS STS) suivantes :
+ [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)— Utilisez cette opération lorsque vous utilisez une identité IAM pour assumer le rôle.
+ [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html)— Utilisez cette opération lorsque vous utilisez un fournisseur d'identité Web pour authentifier votre utilisateur. 
+ [AssumeRoleWithSaml](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html)— 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:GenerateEmbedUrlForRegisteredUser`. Si vous envisagez d'ajouter des utilisateurs lorsqu'ils ouvrent un just-in-time tableau de bord pour la première fois, les autorisations doivent également être activées pour le rôle`quicksight:RegisterUser`.

```
aws sts assume-role \
    --role-arn "arn:aws:iam::111122223333:role/embedding_quicksight_visual_role" \
    --role-session-name john.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ération `AssumeRole`, ceci est probablement dû au fait que le précédent `SESSION TOKEN` est encore dans les variables de l’environnement. Pour l’effacer, définissez les variables suivantes :  
*AWS\$1ACCESS\$1KEY\$1ID* 
*AWS\$1SECRET\$1CLÉ D'ACCÈS* 
*AWS\$1SESSION\$1JETON* 

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 de `export`.

```
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_visual_role/john.doe@example.com`. L’ID de session de rôle se compose du nom de rôle issu du `role-arn` et de la valeur `role-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. Le *throttling* est une fonctionnalité de sécurité qui empêche le même utilisateur d'accéder à Amazon Quick Sight depuis plusieurs sites. 

L'ID de session du rôle devient également le nom d'utilisateur dans Amazon Quick Sight. Vous pouvez utiliser ce modèle pour configurer vos utilisateurs dans Amazon Quick Sight à l'avance, ou pour les configurer la première fois qu'ils accèdent au tableau de bord. 

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 [RegisterUser[DescribeUser](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_DescribeUser.html)](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_RegisterUser.html), et sur les autres opérations de l'API Amazon Quick Sight, consultez le manuel [Amazon Quick Sight API Reference](https://docs.aws.amazon.com/quicksight/latest/APIReference/Welcome.html).

```
aws quicksight register-user \
    --aws-account-id 111122223333 \
    --namespace default \
    --identity-type IAM \
    --iam-arn "arn:aws:iam::111122223333:role/embedding_quicksight_visual_role" \
    --user-role READER \
    --user-name jhnd \
    --session-name "john.doe@example.com" \
    --email john.doe@example.com \
    --region us-east-1 \
    --custom-permissions-name TeamA1
```

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 la première fois qu'ils accèdent à Amazon Quick Sight. Pour les utilisateurs Microsoft AD, vous pouvez utiliser `DescribeUser` pour obtenir l’ARN de l’utilisateur.

La première fois qu'un utilisateur accède à Amazon Quick Sight, vous pouvez également ajouter cet utilisateur au groupe avec lequel le visuel est partagé. 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_visual_role/john.doe@example.com"
```

Vous avez désormais un utilisateur de votre application qui est également un utilisateur d'Amazon Quick Sight et qui a accès au visuel. 

Enfin, pour obtenir une URL signée pour la représentation visuelle, appelez `generate-embed-url-for-registered-user` à partir du serveur d’applications. Ceci renvoie l’URL de la représentation visuelle intégrable. L'exemple suivant montre comment générer l'URL d'un élément visuel intégré à l'aide d'un appel côté serveur pour les utilisateurs authentifiés par le biais de l'authentification unique (IAM AWS Managed Microsoft AD Identity Center).

```
aws quicksight generate-embed-url-for-registered-user \
    --aws-account-id 111122223333 \
    --session-lifetime-in-minutes 600 \
    --user-arn arn:aws:quicksight:us-east-1:111122223333:user/default/embedding_quicksight_visual_role/embeddingsession \
    --allowed-domains '["domain1","domain2"]' \
    --experience-configuration 'DashboardVisual={InitialDashboardVisualId={DashboardId=dashboard_id,SheetId=sheet_id,VisualId=visual_id}}'
```

Pour plus d’informations sur l’utilisation de cette opération, consultez [https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForRegisteredUser.html](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForRegisteredUser.html). Vous pouvez utiliser cette opération et d’autres opérations d’API dans votre propre code.

## Étape 3 : Intégrer l’URL de la représentation visuelle
<a name="embedded-visuals-for-authenticated-users-step-3"></a>

Dans la section suivante, vous découvrirez comment utiliser le [SDK Amazon Quick Sight Embedding](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk) (JavaScript) pour intégrer l'URL visuelle de l'étape 3 dans votre site Web ou votre page d'application. Le kit SDK vous permet d’effectuer les opérations suivantes : 
+ Placer la représentation visuelle sur une page HTML.
+ Transmettre les paramètres à la représentation visuelle.
+ Gérer les états d’erreurs avec des messages personnalisés pour votre application.

Appelez l’opération d’API `GenerateEmbedUrlForRegisteredUser` pour générer l’URL que vous pouvez intégrer dans votre application. Cette URL est valable pendant 5 minutes et la session qui en résulte est valide jusqu’à 10 heures. L’opération d’API fournit l’URL avec un `auth_code` qui permet une session à connexion unique. 

Voici un exemple de réponse de `generate-embed-url-for-registered-user`. `quicksightdomain`Dans cet exemple, il s'agit de l'URL que vous utilisez pour accéder à votre compte Amazon Quick Sight.

```
//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://quicksightdomain/embed/12345/dashboards/67890/sheets/12345/visuals/67890...",
        "RequestId": "7bee030e-f191-45c4-97fe-d9faf0e03713"
    }
```

Intégrez ce visuel à votre page Web à l'aide du [SDK Amazon Quick Sight Embedding](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk) ou en ajoutant cette URL dans un iframe. Si vous définissez une hauteur et une largeur fixes (en pixels), Amazon Quick Sight les utilise et ne modifie pas votre visuel lorsque votre fenêtre est redimensionnée. Si vous définissez un pourcentage relatif de hauteur et de largeur, Amazon Quick Sight fournit une mise en page réactive qui est modifiée en fonction de l'évolution de la taille de votre fenêtre. En utilisant le SDK Amazon Quick Sight Embedding, vous pouvez également contrôler les paramètres du visuel et recevoir des rappels en termes de fin de chargement de page et d'erreurs. 

Le domaine qui hébergera les visuels et les tableaux de bord intégrés doit figurer sur la *liste* des domaines autorisés, c'est-à-dire la liste des domaines approuvés pour votre Quick abonnement. Cette exigence protège vos données en empêchant les domaines non approuvés d’héberger des représentations visuelles et des tableaux de bord intégrés. Pour plus d'informations sur l'ajout de domaines pour les visuels et les tableaux de bord intégrés, consultez [Autoriser la mise en vente de domaines lors de l'exécution avec l'API Amazon Quick Sight](https://docs.aws.amazon.com/quicksight/latest/user/embedding-run-time.html).

L’exemple suivant montre comment utiliser l’URL générée. Ce code est généré sur votre serveur d’applications.

### SDK 2.0
<a name="embedded-visuals-for-authenticated-users-sdkv2"></a>

```
<!DOCTYPE html>
<html>

    <head>
        <title>Visual Embedding Example</title>
        <script src="https://unpkg.com/amazon-quicksight-embedding-sdk@2.0.0/dist/quicksight-embedding-js-sdk.min.js"></script>
        <script type="text/javascript">
            const embedVisual = async() => {    
                const {
                    createEmbeddingContext,
                } = QuickSightEmbedding;

                const embeddingContext = await createEmbeddingContext({
                    onChange: (changeEvent, metadata) => {
                        console.log('Context received a change', changeEvent, metadata);
                    },
                });

                const frameOptions = {
                    url: "<YOUR_EMBED_URL>", // replace this value with the url generated via embedding API
                    container: '#experience-container',
                    height: "700px",
                    width: "1000px",
                    onChange: (changeEvent, metadata) => {
                        switch (changeEvent.eventName) {
                            case 'FRAME_MOUNTED': {
                                console.log("Do something when the experience frame is mounted.");
                                break;
                            }
                            case 'FRAME_LOADED': {
                                console.log("Do something when the experience frame is loaded.");
                                break;
                            }
                        }
                    },
                };

                const contentOptions = {
                    parameters: [
                        {
                            Name: 'country',
                            Values: ['United States'],
                        },
                        {
                            Name: 'states',
                            Values: [
                                'California',
                                'Washington'
                            ]
                        }
                    ],
                    locale: "en-US",
                    onMessage: async (messageEvent, experienceMetadata) => {
                        switch (messageEvent.eventName) {
                            case 'CONTENT_LOADED': {
                                console.log("All visuals are loaded. The title of the document:", messageEvent.message.title);
                                break;
                            }
                            case 'ERROR_OCCURRED': {
                                console.log("Error occurred while rendering the experience. Error code:", messageEvent.message.errorCode);
                                break;
                            }
                            case 'PARAMETERS_CHANGED': {
                                console.log("Parameters changed. Changed parameters:", messageEvent.message.changedParameters);
                                break;
                            }
                            case 'SIZE_CHANGED': {
                                console.log("Size changed. New dimensions:", messageEvent.message);
                                break;
                            }
                        }
                    },
                };
                const embeddedVisualExperience = await embeddingContext.embedVisual(frameOptions, contentOptions);

                const selectCountryElement = document.getElementById('country');
                selectCountryElement.addEventListener('change', (event) => {
                    embeddedVisualExperience.setParameters([
                        {
                            Name: 'country',
                            Values: event.target.value
                        }
                    ]);
                });
            };
        </script>
    </head>

    <body onload="embedVisual()">
        <span>
            <label for="country">Country</label>
            <select id="country" name="country">
                <option value="United States">United States</option>
                <option value="Mexico">Mexico</option>
                <option value="Canada">Canada</option>
            </select>
        </span>
        <div id="experience-container"></div>
    </body>

</html>
```

### SDK 1.0
<a name="embedded-visuals-for-authenticated-users-sdkv1"></a>

```
<!DOCTYPE html>
<html>

    <head>
        <title>Visual Embedding Example</title>
        <!-- You can download the latest QuickSight embedding SDK version from https://www.npmjs.com/package/amazon-quicksight-embedding-sdk -->
        <!-- Or you can do "npm install amazon-quicksight-embedding-sdk", if you use npm for javascript dependencies -->
        <script src="./quicksight-embedding-js-sdk.min.js"></script>
        <script type="text/javascript">
            let embeddedVisualExperience;
            function onVisualLoad(payload) {
                console.log("Do something when the visual is fully loaded.");
            }

            function onError(payload) {
                console.log("Do something when the visual fails loading");
            }

            function embedVisual() {
                const containerDiv = document.getElementById("embeddingContainer");
                const options = {
                    url: "<YOUR_EMBED_URL>", // replace this value with the url generated via embedding API
                    container: containerDiv,
                    parameters: {
                        country: "United States"
                    },
                    height: "700px",
                    width: "1000px",
                    locale: "en-US"
                };
                embeddedVisualExperience = QuickSightEmbedding.embedVisual(options);
                embeddedVisualExperience.on("error", onError);
                embeddedVisualExperience.on("load", onVisualLoad);
            }

            function onCountryChange(obj) {
                embeddedVisualExperience.setParameters({country: obj.value});
            }
        </script>
    </head>

    <body onload="embedVisual()">
        <span>
            <label for="country">Country</label>
            <select id="country" name="country" onchange="onCountryChange(this)">
                <option value="United States">United States</option>
                <option value="Mexico">Mexico</option>
                <option value="Canada">Canada</option>
            </select>
        </span>
        <div id="embeddingContainer"></div>
    </body>

</html>
```

Pour que cet exemple fonctionne, assurez-vous d'utiliser le SDK Amazon Quick Sight Embedding pour charger le visuel intégré sur votre site Web à l'aide de. JavaScript Pour obtenir votre copie, effectuez l’une des actions suivantes :
+ Téléchargez le SDK d'[intégration Amazon Quick Sight](https://github.com/awslabs/amazon-quicksight-embedding-sdk#step-3-create-the-quicksight-session-object) depuis. GitHub Ce référentiel est géré par un groupe de développeurs Amazon Quick Sight.
+ Téléchargez la dernière version du SDK d'intégration sur. [https://www.npmjs.com/package/amazon-quicksight-embedding-sdk](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk)
+ Si vous utilisez `npm` for JavaScript dependencies, téléchargez-le et installez-le en exécutant la commande suivante.

  ```
  npm install amazon-quicksight-embedding-sdk
  ```

# Intégration de visuels Amazon Quick Sight pour les utilisateurs anonymes (non enregistrés)
<a name="embedded-analytics-visuals-for-everyone"></a>


|  | 
| --- |
|  S’applique à : édition Enterprise  | 


|  | 
| --- |
|    Public cible : développeurs Amazon Quick  | 

Dans les sections suivantes, vous trouverez des informations détaillées sur la façon de configurer les visuels Amazon Quick Sight intégrés pour les utilisateurs anonymes (non enregistrés).

**Topics**
+ [

## Étape 1 : Configurer des autorisations
](#embedded-analytics-visuals-with-anonymous-users-step-1)
+ [

## Étape 2 : Générer l’URL avec le code d’authentification en pièce jointe
](#embedded-analytics-visuals-with-anonymous-users-step-2)
+ [

## Étape 3 : Intégrer l’URL de la représentation visuelle
](#embedded-analytics-visuals-with-anonymous-users-step-3)

## Étape 1 : Configurer des autorisations
<a name="embedded-analytics-visuals-with-anonymous-users-step-1"></a>


|  | 
| --- |
|  S’applique à : édition Enterprise  | 


|  | 
| --- |
|    Public cible : développeurs Amazon Quick  | 

Dans la section suivante, vous apprendrez à configurer les autorisations pour l’application backend ou le serveur web. Cette tâche requiert un accès d’administration à IAM.

Chaque utilisateur qui accède à un visuel assume un rôle qui lui donne accès à Amazon Quick Sight et l'autorise à accéder au visuel. Pour que cela soit possible, créez un rôle IAM dans votre Compte AWS. Associez une politique IAM au rôle afin de fournir des autorisations à n’importe quel utilisateur qui assume ce rôle.

Vous pouvez créer une condition dans votre politique IAM qui limite les domaines que les développeurs peuvent répertorier dans le paramètre `AllowedDomains` d’une opération d’API `GenerateEmbedUrlForAnonymousUser`. Le paramètre `AllowedDomains` est un paramètre facultatif. En tant que développeur, il vous donne la possibilité de remplacer les domaines statiques configurés dans le menu **Manage Amazon Quick Sight**. Vous pouvez plutôt répertorier jusqu’à trois domaines ou sous-domaines qui peuvent accéder à une URL générée. Cette URL est ensuite intégrée au site web que vous créez. Seuls les domaines répertoriés dans le paramètre peuvent accéder au tableau de bord intégré. Sans cette condition, vous pouvez répertorier n’importe quel domaine sur Internet dans le paramètre `AllowedDomains`. 

Pour limiter les domaines que les développeurs peuvent utiliser avec ce paramètre, ajoutez une condition `AllowedEmbeddingDomains` à votre politique IAM. Pour plus d'informations sur le `AllowedDomains` paramètre, consultez le [GenerateEmbedUrlForAnonymousUser](https://docs.aws.amazon.com//quicksight/latest/APIReference/API_GenerateEmbedUrlForAnonymousUser.html)manuel *Amazon Quick Sight API Reference*.

**Bonnes pratiques de sécurité pour les opérateurs de conditions IAM**  
Les opérateurs de conditions IAM mal configurés peuvent autoriser un accès non autorisé à vos ressources Quick intégrées par le biais de variations d'URL. Lorsque vous utilisez la clé de `quicksight:AllowedEmbeddingDomains` condition dans vos politiques IAM, utilisez des opérateurs de condition qui autorisent des domaines spécifiques ou refusent tous les domaines qui ne sont pas spécifiquement autorisés. Pour plus d'informations sur les opérateurs de condition IAM, voir [Éléments de politique IAM JSON : opérateurs de condition](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html) dans le guide de l'utilisateur IAM.  
De nombreuses variantes d'URL peuvent pointer vers la même ressource. Par exemple, les fichiers suivants ont URLs tous le même contenu :  
`https://example.com`
`https://example.com/`
`https://Example.com`
Si votre politique utilise des opérateurs qui ne tiennent pas compte de ces variations d'URL, un attaquant peut contourner vos restrictions en fournissant des variantes d'URL équivalentes.  
Vous devez vérifier que votre politique IAM utilise des opérateurs de condition appropriés pour empêcher le contournement des vulnérabilités et garantir que seuls les domaines auxquels vous souhaitez accéder peuvent accéder à vos ressources intégrées.

L’identité IAM de votre application doit avoir une politique d’approbation qui lui est associée afin d’autoriser l’accès au rôle que vous venez de créer. Cela signifie que lorsqu’un utilisateur accède à votre application, votre application peut assumer le rôle pour le compte de l’utilisateur afin d’ouvrir la représentation visuelle. Voici un exemple de politique d’approbation.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowLambdaFunctionsToAssumeThisRole",
            "Effect": "Allow",
            "Principal": {
                "Service": "lambda.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        },
        {
            "Sid": "AllowEC2InstancesToAssumeThisRole",
            "Effect": "Allow",
            "Principal": {
                "Service": "ec2.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

------

Pour plus d’informations sur les politiques d’approbation, consultez la rubrique [Informations d’identification de sécurité temporaires](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html) dans le *Guide de l’utilisateur IAM*.

## Étape 2 : Générer l’URL avec le code d’authentification en pièce jointe
<a name="embedded-analytics-visuals-with-anonymous-users-step-2"></a>


|  | 
| --- |
|  S’applique à : édition Enterprise  | 


|  | 
| --- |
|    Public cible : développeurs Amazon Quick  | 

Dans la section suivante, vous découvrirez comment authentifier un visiteur anonyme et obtenir l’URL de la représentation visuelle 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 à Amazon Quick Sight, s'il n'existe pas déjà. Puis, elle transmet un identifiant comme ID de session de rôle unique. 

Les exemples suivants effectuent l’authentification IAM pour le compte de l’utilisateur. Elle transmet un identifiant comme ID de session de rôle unique. Ce code s’exécute sur votre serveur d’applications.

### Java
<a name="embedded-analytics-visuals-with-anonymous-users-java"></a>

```
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.AnonymousUserDashboardVisualEmbeddingConfiguration;
import com.amazonaws.services.quicksight.model.AnonymousUserEmbeddingExperienceConfiguration;
import com.amazonaws.services.quicksight.model.DashboardVisualId;
import com.amazonaws.services.quicksight.model.GenerateEmbedUrlForAnonymousUserRequest;
import com.amazonaws.services.quicksight.model.GenerateEmbedUrlForAnonymousUserResult;
import com.amazonaws.services.quicksight.model.SessionTag;

import java.util.List;

/**
 * Class to call QuickSight AWS SDK to get url for Visual embedding.
 */
public class GenerateEmbedUrlForAnonymousUserTest {
    private final AmazonQuickSight quickSightClient;

    public GenerateEmbedUrlForAnonymousUserTest() {
        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 getEmbedUrl(
            final String accountId, // AWS Account ID
            final String namespace, // Anonymous embedding required specifying a valid namespace for which you want the enbedding URL
            final List<String> authorizedResourceArns, // Dashboard arn list of dashboard visuals to embed
            final String dashboardId, // Dashboard ID of the dashboard to embed
            final String sheetId, // Sheet ID of the sheet to embed
            final String visualId, // Visual ID of the visual to embed
            final List<String> allowedDomains, // Runtime allowed domains for embedding
            final List<SessionTag> sessionTags // Session tags used for row-level security
    ) throws Exception {
        final DashboardVisualId dashboardVisual = new DashboardVisualId()
            .withDashboardId(dashboardId)
            .withSheetId(sheetId)
            .withVisualId(visualId);
        final AnonymousUserDashboardVisualEmbeddingConfiguration anonymousUserDashboardVisualEmbeddingConfiguration
            = new AnonymousUserDashboardVisualEmbeddingConfiguration()
                .withInitialDashboardVisualId(dashboardVisual);
        final AnonymousUserEmbeddingExperienceConfiguration anonymousUserEmbeddingExperienceConfiguration
            = new AnonymousUserEmbeddingExperienceConfiguration()
                .withDashboardVisual(anonymousUserDashboardVisualEmbeddingConfiguration);
        final GenerateEmbedUrlForAnonymousUserRequest generateEmbedUrlForAnonymousUserRequest
            = new GenerateEmbedUrlForAnonymousUserRequest()
                .withAwsAccountId(accountId)
                .withNamespace(namespace)
                // authorizedResourceArns should contain ARN of dashboard used below in ExperienceConfiguration
                .withAuthorizedResourceArns(authorizedResourceArns)
                .withExperienceConfiguration(anonymousUserEmbeddingExperienceConfiguration)
                .withAllowedDomains(allowedDomains)
                .withSessionTags(sessionTags)
                .withSessionLifetimeInMinutes(600L);

        final GenerateEmbedUrlForAnonymousUserResult generateEmbedUrlForAnonymousUserResult
            = quickSightClient.generateEmbedUrlForAnonymousUser(generateEmbedUrlForAnonymousUserRequest);

        return generateEmbedUrlForAnonymousUserResult.getEmbedUrl();
    }
}
```

### JavaScript
<a name="embedded-analytics-visuals-with-anonymous-users-js"></a>

```
global.fetch = require('node-fetch');
const AWS = require('aws-sdk');

function generateEmbedUrlForAnonymousUser(
    accountId, // Your AWS account ID
    dashboardId, // Dashboard ID to which the constructed url points
    sheetId, // Sheet ID to which the constructed url points
    visualId, // Visual ID to which the constructed url points
    quicksightNamespace, // valid namespace where you want to do embedding
    authorizedResourceArns, // dashboard arn list of dashboard visuals to embed
    allowedDomains, // runtime allowed domains for embedding
    sessionTags, // session tags used for row-level security
    generateEmbedUrlForAnonymousUserCallback, // success callback method
    errorCallback // error callback method
    ) {
    const experienceConfiguration = {
        "DashboardVisual": {
            "InitialDashboardVisualId": {
                "DashboardId": dashboardId,
                "SheetId": sheetId,
                "VisualId": visualId
            }
        }
    };
    
    const generateEmbedUrlForAnonymousUserParams = {
        "AwsAccountId": accountId,
        "Namespace": quicksightNamespace,
        // authorizedResourceArns should contain ARN of dashboard used below in ExperienceConfiguration
        "AuthorizedResourceArns": authorizedResourceArns,
        "AllowedDomains": allowedDomains,
        "ExperienceConfiguration": experienceConfiguration,
        "SessionTags": sessionTags,
        "SessionLifetimeInMinutes": 600
    };

    const quicksightClient = new AWS.QuickSight({
        region: process.env.AWS_REGION,
        credentials: {
            accessKeyId: AccessKeyId,
            secretAccessKey: SecretAccessKey,
            sessionToken: SessionToken,
            expiration: Expiration
        }
    });

    quicksightClient.generateEmbedUrlForAnonymousUser(generateEmbedUrlForAnonymousUserParams, 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 THIS API
                    "Access-Control-Allow-Headers": "Content-Type"
                },
                "body": JSON.stringify(data),
                "isBase64Encoded": false
            }
            generateEmbedUrlForAnonymousUserCallback(result);
        }
    });
}
```

### Python3
<a name="embedded-analytics-visuals-with-anonymous-users-py"></a>

```
import json
import boto3
from botocore.exceptions import ClientError
import time

# Create QuickSight and STS clients
quicksightClient = boto3.client('quicksight',region_name='us-west-2')
sts = boto3.client('sts')

# Function to generate embedded URL for anonymous user
# accountId: YOUR AWS ACCOUNT ID
# quicksightNamespace: VALID NAMESPACE WHERE YOU WANT TO DO NOAUTH EMBEDDING
# authorizedResourceArns: DASHBOARD ARN LIST TO EMBED
# allowedDomains: RUNTIME ALLOWED DOMAINS FOR EMBEDDING
# experienceConfiguration: DASHBOARD ID, SHEET ID and VISUAL ID TO WHICH THE CONSTRUCTED URL POINTS
# Example experienceConfig -> 'DashboardVisual': {
#     'InitialDashboardVisualId': {
#         'DashboardId': 'dashboardId',
#         'SheetId': 'sheetId',
#         'VisualId': 'visualId'
#     }
# },
# sessionTags: SESSION TAGS USED FOR ROW-LEVEL SECURITY
def generateEmbedUrlForAnonymousUser(accountId, quicksightNamespace, authorizedResourceArns, allowedDomains, experienceConfiguration, sessionTags):
    try:
        response = quicksightClient.generate_embed_url_for_anonymous_user(
            AwsAccountId = accountId,
            Namespace = quicksightNamespace,
            AuthorizedResourceArns = authorizedResourceArns,
            AllowedDomains = allowedDomains,
            ExperienceConfiguration = experienceConfiguration,
            SessionTags = sessionTags,
            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
<a name="embedded-analytics-visuals-with-anonymous-users-node"></a>

L'exemple suivant montre le JavaScript (Node.js) que vous pouvez utiliser sur le serveur d'applications pour générer l'URL du tableau de bord intégré. Vous pouvez utiliser cette URL dans votre site Web ou votre application pour afficher le tableau de bord. 

**Example**  

```
const AWS = require('aws-sdk');
const https = require('https');

var quicksightClient = new AWS.Service({
    apiConfig: require('./quicksight-2018-04-01.min.json'),
    region: 'us-east-1',
});

quicksightClient.generateEmbedUrlForAnonymousUser({
    'AwsAccountId': '111122223333',
    'Namespace' : 'default',
    // authorizedResourceArns should contain ARN of dashboard used below in ExperienceConfiguration
    'AuthorizedResourceArns': authorizedResourceArns,
    'ExperienceConfiguration': { 
        'DashboardVisual': {
            'InitialDashboardVisualId': {
                'DashboardId': 'dashboard_id',
                'SheetId': 'sheet_id',
                'VisualId': 'visual_id'
            }
        }
    },
    'AllowedDomains': allowedDomains,    
    'SessionTags': sessionTags,
    'SessionLifetimeInMinutes': 600

}, function(err, data) {
    console.log('Errors: ');
    console.log(err);
    console.log('Response: ');
    console.log(data);
});
```

**Example**  

```
//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://quicksightdomain/embed/12345/dashboards/67890/sheets/12345/visuals/67890...",
        "RequestId": "7bee030e-f191-45c4-97fe-d9faf0e03713"
    }
```

### .NET/C\$1
<a name="embedded-analytics-visuals-with-anonymous-users-cs"></a>

L’exemple suivant montre le code .NET/C \$1 que vous pouvez utiliser sur le serveur d’applications afin de générer l’URL pour le tableau de bord intégré. Vous pouvez utiliser cette URL dans votre site Web ou votre application pour afficher le tableau de bord. 

**Example**  

```
using System;
using Amazon.QuickSight;
using Amazon.QuickSight.Model;

namespace GenerateDashboardEmbedUrlForAnonymousUser
{
    class Program
    {
        static void Main(string[] args)
        {
            var quicksightClient = new AmazonQuickSightClient(
                AccessKey,
                SecretAccessKey,
                SessionToken,
                Amazon.RegionEndpoint.USEast1);
            try
            {
                DashboardVisualId dashboardVisual = new DashboardVisualId
                {
                    DashboardId = "dashboard_id",
                    SheetId = "sheet_id",
                    VisualId = "visual_id"
                };

                AnonymousUserDashboardVisualEmbeddingConfiguration anonymousUserDashboardVisualEmbeddingConfiguration
                    = new AnonymousUserDashboardVisualEmbeddingConfiguration
                    {
                        InitialDashboardVisualId = dashboardVisual                        
                    };               
                    
                AnonymousUserEmbeddingExperienceConfiguration anonymousUserEmbeddingExperienceConfiguration
                    = new AnonymousUserEmbeddingExperienceConfiguration
                    {
                        DashboardVisual = anonymousUserDashboardVisualEmbeddingConfiguration
                    }; 
                    
                Console.WriteLine(
                    quicksightClient.GenerateEmbedUrlForAnonymousUserAsync(new GenerateEmbedUrlForAnonymousUserRequest
                    {
                        AwsAccountId = "111222333444",
                        Namespace = default,
                        // authorizedResourceArns should contain ARN of dashboard used below in ExperienceConfiguration
                        AuthorizedResourceArns = { "dashboard_id" },
                        ExperienceConfiguration = anonymousUserEmbeddingExperienceConfiguration,
                        SessionTags = sessionTags,
                        SessionLifetimeInMinutes = 600,
                    }).Result.EmbedUrl
                );
            } catch (Exception ex) {
                Console.WriteLine(ex.Message);
            }
        }
    }
}
```

### AWS CLI
<a name="embedded-analytics-visuals-with-anonymous-users-cli"></a>

Pour assumer ce rôle, choisissez l'une des opérations d'API AWS Security Token Service (AWS STS) suivantes :
+ [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)— Utilisez cette opération lorsque vous utilisez une identité IAM pour assumer le rôle.
+ [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html)— Utilisez cette opération lorsque vous utilisez un fournisseur d'identité Web pour authentifier votre utilisateur. 
+ [AssumeRoleWithSaml](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html)— Utilisez cette opération lorsque vous utilisez le langage SAML (Security Assertion Markup Language) 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:GenerateEmbedUrlForAnonymousUser`. 

```
aws sts assume-role \
    --role-arn "arn:aws:iam::11112222333:role/QuickSightEmbeddingAnonymousPolicy" \
    --role-session-name anonymous caller
```

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ération `AssumeRole`, ceci est probablement dû au fait que le précédent `SESSION TOKEN` est encore dans les variables de l’environnement. Pour l’effacer, définissez les variables suivantes :  
*AWS\$1ACCESS\$1KEY\$1ID* 
*AWS\$1SECRET\$1CLÉ D'ACCÈS* 
*AWS\$1SESSION\$1JETON* 

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 de `export`.

```
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_visual_role/QuickSightEmbeddingAnonymousPolicy`. L’ID de session de rôle se compose du nom de rôle issu du `role-arn` et de la valeur `role-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 visiteur. Cela permet également de garder chaque session séparée et distincte. Si vous utilisez un ensemble de serveurs web, par exemple pour l’équilibrage de charge, et qu’une session est reconnectée à un autre serveur, une nouvelle session démarre.

Pour obtenir une URL signée pour la représentation visuelle, appelez `generate-embed-url-for-anynymous-user` à partir du serveur d’applications. Ceci renvoie l’URL de la représentation visuelle intégrable. L’exemple suivant montre comment générer l’URL d’une représentation visuelle intégrée à l’aide d’un appel côté serveur pour les utilisateurs qui effectuent des visites anonymes sur votre portail web ou votre application.

```
aws quicksight generate-embed-url-for-anonymous-user \
    --aws-account-id 111122223333 \
    --namespace default-or-something-else \
    --session-lifetime-in-minutes 15 \
    --authorized-resource-arns '["dashboard-arn-1","dashboard-arn-2"]' \
    --allowed-domains '["domain1","domain2"]' \
    --session-tags '["Key": tag-key-1,"Value": tag-value-1,{"Key": tag-key-1,"Value": tag-value-1}]' \
    --experience-configuration 'DashboardVisual={InitialDashboardVisualId={DashboardId=dashboard_id,SheetId=sheet_id,VisualId=visual_id}}'
```

Pour plus d’informations sur l’utilisation de cette opération, consultez [https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForAnonymousUser.html](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForAnonymousUser.html). Vous pouvez utiliser cette opération et d’autres opérations d’API dans votre propre code. 

## Étape 3 : Intégrer l’URL de la représentation visuelle
<a name="embedded-analytics-visuals-with-anonymous-users-step-3"></a>


|  | 
| --- |
|  S’applique à : édition Enterprise  | 


|  | 
| --- |
|    Public cible : développeurs Amazon Quick  | 

Dans la section suivante, vous découvrirez comment utiliser le [SDK Amazon Quick Sight Embedding](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk) (JavaScript) pour intégrer l'URL visuelle de l'étape 2 dans votre site Web ou votre page d'application. Le kit SDK vous permet d’effectuer les opérations suivantes : 
+ Placer la représentation visuelle sur une page HTML.
+ Transmettre les paramètres à la représentation visuelle.
+ Gérer les états d’erreurs avec des messages personnalisés pour votre application.

Appelez l’opération d’API `GenerateEmbedUrlForAnonymousUser` pour générer l’URL que vous pouvez intégrer dans votre application. Cette URL est valable pendant 5 minutes et la session qui en résulte est valide pendant 10 heures. L’opération d’API fournit l’URL avec un code d’autorisation (auth) qui permet une session à connexion unique. 

Voici un exemple de réponse de `generate-embed-url-for-anonymous-user`. `quicksightdomain`Dans cet exemple, il s'agit de l'URL que vous utilisez pour accéder à votre compte Amazon Quick Sight.

```
//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://quicksightdomain/embed/12345/dashboards/67890/sheets/12345/visuals/67890...",
        "RequestId": "7bee030e-f191-45c4-97fe-d9faf0e03713"
    }
```

Intégrez ce visuel à votre page Web à l'aide du [SDK Amazon Quick Sight Embedding](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk) ou en ajoutant cette URL dans un iframe. Si vous définissez une hauteur et une largeur fixes (en pixels), Amazon Quick Sight les utilise et ne modifie pas votre visuel lorsque votre fenêtre est redimensionnée. Si vous définissez un pourcentage relatif de hauteur et de largeur, Amazon Quick Sight fournit une mise en page réactive qui est modifiée en fonction de l'évolution de la taille de votre fenêtre. En utilisant le SDK Amazon Quick Sight Embedding, vous pouvez également contrôler les paramètres du visuel et recevoir des rappels en termes d'achèvement du chargement visuel et d'erreurs. 

Le domaine qui hébergera la représentation visuelle intégrée doit figurer sur la *liste d’autorisation*, la liste des domaines approuvés pour votre abonnement Quick . Cette exigence protège vos données en empêchant les domaines non approuvés d’héberger des représentations visuelles et des tableaux de bord intégrés. Pour plus d'informations sur l'ajout de domaines pour les visuels et les tableaux de bord intégrés, consultez [Autoriser la mise en vente de domaines lors de l'exécution avec l'API Amazon Quick Sight](https://docs.aws.amazon.com/quicksight/latest/user/embedding-run-time.html).

L’exemple suivant montre comment utiliser l’URL générée. Ce code réside dans votre serveur d’applications.

### SDK 2.0
<a name="embedded-analytics-visuals-with-anonymous-users-sdkv2"></a>

```
<!DOCTYPE html>
<html>

    <head>
        <title>Visual Embedding Example</title>
        <script src="https://unpkg.com/amazon-quicksight-embedding-sdk@2.0.0/dist/quicksight-embedding-js-sdk.min.js"></script>
        <script type="text/javascript">
            const embedVisual = async() => {    
                const {
                    createEmbeddingContext,
                } = QuickSightEmbedding;

                const embeddingContext = await createEmbeddingContext({
                    onChange: (changeEvent, metadata) => {
                        console.log('Context received a change', changeEvent, metadata);
                    },
                });

                const frameOptions = {
                    url: "<YOUR_EMBED_URL>", // replace this value with the url generated via embedding API
                    container: '#experience-container',
                    height: "700px",
                    width: "1000px",
                    onChange: (changeEvent, metadata) => {
                        switch (changeEvent.eventName) {
                            case 'FRAME_MOUNTED': {
                                console.log("Do something when the experience frame is mounted.");
                                break;
                            }
                            case 'FRAME_LOADED': {
                                console.log("Do something when the experience frame is loaded.");
                                break;
                            }
                        }
                    },
                };

                const contentOptions = {
                    parameters: [
                        {
                            Name: 'country',
                            Values: ['United States'],
                        },
                        {
                            Name: 'states',
                            Values: [
                                'California',
                                'Washington'
                            ]
                        }
                    ],
                    locale: "en-US",
                    onMessage: async (messageEvent, experienceMetadata) => {
                        switch (messageEvent.eventName) {
                            case 'CONTENT_LOADED': {
                                console.log("All visuals are loaded. The title of the document:", messageEvent.message.title);
                                break;
                            }
                            case 'ERROR_OCCURRED': {
                                console.log("Error occurred while rendering the experience. Error code:", messageEvent.message.errorCode);
                                break;
                            }
                            case 'PARAMETERS_CHANGED': {
                                console.log("Parameters changed. Changed parameters:", messageEvent.message.changedParameters);
                                break;
                            }
                            case 'SIZE_CHANGED': {
                                console.log("Size changed. New dimensions:", messageEvent.message);
                                break;
                            }
                        }
                    },
                };
                const embeddedVisualExperience = await embeddingContext.embedVisual(frameOptions, contentOptions);

                const selectCountryElement = document.getElementById('country');
                selectCountryElement.addEventListener('change', (event) => {
                    embeddedVisualExperience.setParameters([
                        {
                            Name: 'country',
                            Values: event.target.value
                        }
                    ]);
                });
            };
        </script>
    </head>

    <body onload="embedVisual()">
        <span>
            <label for="country">Country</label>
            <select id="country" name="country">
                <option value="United States">United States</option>
                <option value="Mexico">Mexico</option>
                <option value="Canada">Canada</option>
            </select>
        </span>
        <div id="experience-container"></div>
    </body>

</html>
```

### SDK 1.0
<a name="embedded-analytics-visuals-with-anonymous-users-sdkv1"></a>

```
<!DOCTYPE html>
<html>

    <head>
        <title>Visual Embedding Example</title>
        <!-- You can download the latest QuickSight embedding SDK version from https://www.npmjs.com/package/amazon-quicksight-embedding-sdk -->
        <!-- Or you can do "npm install amazon-quicksight-embedding-sdk", if you use npm for javascript dependencies -->
        <script src="./quicksight-embedding-js-sdk.min.js"></script>
        <script type="text/javascript">
            let embeddedVisualExperience;
            function onVisualLoad(payload) {
                console.log("Do something when the visual is fully loaded.");
            }

            function onError(payload) {
                console.log("Do something when the visual fails loading");
            }

            function embedVisual() {
                const containerDiv = document.getElementById("embeddingContainer");
                const options = {
                    url: "<YOUR_EMBED_URL>", // replace this value with the url generated via embedding API
                    container: containerDiv,
                    parameters: {
                        country: "United States"
                    },
                    height: "700px",
                    width: "1000px",
                    locale: "en-US"
                };
                embeddedVisualExperience = QuickSightEmbedding.embedVisual(options);
                embeddedVisualExperience.on("error", onError);
                embeddedVisualExperience.on("load", onVisualLoad);
            }

            function onCountryChange(obj) {
                embeddedVisualExperience.setParameters({country: obj.value});
            }
        </script>
    </head>

    <body onload="embedVisual()">
        <span>
            <label for="country">Country</label>
            <select id="country" name="country" onchange="onCountryChange(this)">
                <option value="United States">United States</option>
                <option value="Mexico">Mexico</option>
                <option value="Canada">Canada</option>
            </select>
        </span>
        <div id="embeddingContainer"></div>
    </body>

</html>
```

Pour que cet exemple fonctionne, assurez-vous d'utiliser le SDK Amazon Quick Sight Embedding pour charger le visuel intégré sur votre site Web à l'aide de. JavaScript Pour obtenir votre copie, effectuez l’une des actions suivantes :
+ Téléchargez le SDK d'[intégration Amazon Quick Sight](https://github.com/awslabs/amazon-quicksight-embedding-sdk#step-3-create-the-quicksight-session-object) depuis. GitHub Ce référentiel est géré par un groupe de développeurs Amazon Quick Sight.
+ Téléchargez la dernière version du SDK QuickSight d'intégration sur. [https://www.npmjs.com/package/amazon-quicksight-embedding-sdk](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk)
+ Si vous utilisez `npm` for JavaScript dependencies, téléchargez-le et installez-le en exécutant la commande suivante.

  ```
  npm install amazon-quicksight-embedding-sdk
  ```

# Intégration de toutes les fonctionnalités de la console Amazon Quick Sight pour les utilisateurs enregistrés
<a name="embedded-analytics-full-console-for-authenticated-users"></a>

**Important**  
Amazon Quick Sight propose de nouvelles opérations d'API pour intégrer des analyses : `GenerateEmbedUrlForAnonymousUser` et`GenerateEmbedUrlForRegisteredUser`.  
Vous pouvez toujours utiliser les opérations d'`GetSessionEmbedUrl`API `GetDashboardEmbedUrl` et d'API pour intégrer des tableaux de bord et la console Amazon Quick Sight, mais elles ne contiennent pas les dernières fonctionnalités d'intégration. Pour plus d'informations sur l'intégration à l'aide des anciennes opérations d'API, consultez la section [Intégration d'analyses à l'aide des opérations d'GetSessionEmbedURLAPI GetDashboardEmbedURL et](https://docs.aws.amazon.com/quicksight/latest/user/embedded-analytics-deprecated.html).


|  | 
| --- |
|  S’applique à : édition Enterprise  | 


|  | 
| --- |
|    Public cible : développeurs Amazon Quick  | 

Avec l'édition Enterprise, en plus de fournir des tableaux de bord en lecture seule, vous pouvez également proposer l'expérience de la console Amazon Quick Sight dans un portail de création personnalisé. En utilisant cette approche, vous autorisez vos utilisateurs à créer des sources de données, des jeux de données et des analyses. Dans la même interface, ils peuvent créer, publier et consulter des tableaux de bord. Si vous souhaitez restreindre certaines de ces autorisations, vous pouvez également le faire.

Les utilisateurs qui accèdent à Amazon Quick Sight via une console intégrée doivent appartenir à la cohorte de sécurité des auteurs ou des administrateurs. Les lecteurs ne disposent pas d'un accès suffisant pour utiliser la console Amazon Quick Sight à des fins de création, qu'elle soit intégrée ou intégrée à la AWS Management Console. Cependant, les auteurs et les administrateurs peuvent toujours accéder aux tableaux de bord intégrés. Si vous souhaitez restreindre les autorisations à certaines fonctionnalités de création, vous pouvez ajouter un profil d'autorisations personnalisé à l'utilisateur avec l'opération d'[UpdateUser](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_UpdateUser.html)API. Utilisez l'opération [RegisterUser](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_RegisterUser.html)API pour ajouter un nouvel utilisateur associé à un profil d'autorisation personnalisé. Pour plus d’informations, consultez les sections suivantes :
+ Pour plus d'informations sur la création de rôles personnalisés en définissant des autorisations de console personnalisées, consultez [Personnalisation de l'accès à la console Amazon Quick Sight](https://docs.aws.amazon.com/quicksight/latest/user/customizing-permissions-to-the-quicksight-console.html).
+ Pour plus d'informations sur l'utilisation d'espaces de noms pour isoler les utilisateurs, les groupes et les actifs Amazon Quick Sight en multitenant, consultez [Amazon](https://docs.aws.amazon.com/quicksight/latest/APIReference/controlling-access.html#namespaces.html) Quick Sight Namespaces.
+ Pour plus d'informations sur l'ajout de votre propre marque à une console Amazon Quick Sight intégrée, consultez les sections [Utilisation des thèmes dans Amazon Quick Sight](https://docs.aws.amazon.com/quicksight/latest/user/themes-in-quicksight.html) et [Opérations de l'API des QuickSight thèmes](https://docs.aws.amazon.com/quicksight/latest/APIReference/qs-assets.html#themes). 

Dans les sections suivantes, vous trouverez des informations détaillées sur la configuration des tableaux de bord Amazon Quick Sight intégrés pour les utilisateurs enregistrés.

**Topics**
+ [

## Étape 1 : Configurer des autorisations
](#embedded-analytics-full-console-for-authenticated-users-step-1)
+ [

## Étape 2 : Générer l’URL avec le code d’authentification en pièce jointe
](#embedded-analytics-full-console-for-authenticated-users-step-2)
+ [

## Étape 3 : Intégrer l’URL de la session de console
](#embedded-analytics-full-console-for-authenticated-users-step-3)
+ [

# Activation des fonctionnalités de BI générative dans les consoles intégrées pour les utilisateurs enregistrés
](embedding-consoles-genbi.md)

## Étape 1 : Configurer des autorisations
<a name="embedded-analytics-full-console-for-authenticated-users-step-1"></a>

Dans la section suivante, vous apprendrez à configurer les autorisations pour l’application backend ou le serveur web. Cette tâche requiert un accès d’administration à IAM.

Chaque utilisateur qui accède à un Amazon Quick Sight assume un rôle qui lui permet d'accéder à Amazon Quick Sight et d'accéder à la session de console. Pour que cela soit possible, créez un rôle IAM dans votre AWS compte. Associez une politique IAM au rôle afin de fournir des autorisations à n’importe quel utilisateur qui assume ce rôle. Ajoutez `quicksight:RegisterUser` des autorisations pour garantir que le lecteur puisse accéder à Amazon Quick Sight en lecture seule et qu'il n'ait accès à aucune autre donnée ou fonctionnalité de création. Le rôle IAM doit également fournir des autorisations pour récupérer la session URLs de console. Pour cela, ajoutez `quicksight:GenerateEmbedUrlForRegisteredUser`.

Vous pouvez créer une condition dans votre politique IAM qui limite les domaines que les développeurs peuvent répertorier dans le paramètre `AllowedDomains` d’une opération d’API `GenerateEmbedUrlForAnonymousUser`. Le paramètre `AllowedDomains` est un paramètre facultatif. En tant que développeur, il vous donne la possibilité de remplacer les domaines statiques configurés dans le menu **Manage Amazon Quick Sight**. Vous pouvez plutôt répertorier jusqu’à trois domaines ou sous-domaines qui peuvent accéder à une URL générée. Cette URL est ensuite intégrée au site web que vous créez. Seuls les domaines répertoriés dans le paramètre peuvent accéder au tableau de bord intégré. Sans cette condition, vous pouvez répertorier n’importe quel domaine sur Internet dans le paramètre `AllowedDomains`. 

**Bonnes pratiques de sécurité pour les opérateurs de conditions IAM**  
Les opérateurs de conditions IAM mal configurés peuvent autoriser un accès non autorisé à vos ressources Quick intégrées par le biais de variations d'URL. Lorsque vous utilisez la clé de `quicksight:AllowedEmbeddingDomains` condition dans vos politiques IAM, utilisez des opérateurs de condition qui autorisent des domaines spécifiques ou refusent tous les domaines qui ne sont pas spécifiquement autorisés. Pour plus d'informations sur les opérateurs de condition IAM, voir [Éléments de politique IAM JSON : opérateurs de condition](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html) dans le guide de l'utilisateur IAM.  
De nombreuses variantes d'URL peuvent pointer vers la même ressource. Par exemple, les fichiers suivants ont URLs tous le même contenu :  
`https://example.com`
`https://example.com/`
`https://Example.com`
Si votre politique utilise des opérateurs qui ne tiennent pas compte de ces variations d'URL, un attaquant peut contourner vos restrictions en fournissant des variantes d'URL équivalentes.  
Vous devez vérifier que votre politique IAM utilise des opérateurs de condition appropriés pour empêcher le contournement des vulnérabilités et garantir que seuls les domaines auxquels vous souhaitez accéder peuvent accéder à vos ressources intégrées.

L’exemple de stratégie suivant fournit ces autorisations. 

L’exemple de politique suivant autorise la récupération de l’URL d’une session de console. Vous pouvez utiliser la politique sans `quicksight:RegisterUser` si vous créez des utilisateurs avant qu’ils n’accèdent à une session intégrée.

Enfin, l’identité IAM de votre application doit avoir une politique d’approbation qui lui est associée afin d’autoriser l’accès au rôle que vous venez de créer. Cela signifie que lorsqu'un utilisateur accède à votre application, celle-ci peut assumer le rôle en son nom et configurer l'utilisateur dans Amazon Quick Sight. Voici un exemple de politique d’approbation. 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowLambdaFunctionsToAssumeThisRole",
            "Effect": "Allow",
            "Principal": {
                "Service": "lambda.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        },
        {
            "Sid": "AllowEC2InstancesToAssumeThisRole",
            "Effect": "Allow",
            "Principal": {
                "Service": "ec2.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

------

Pour plus d’informations sur les stratégies d’approbation pour OpenId Connect ou l’authentification SAML, consultez les sections suivantes du *Guide de l’utilisateur IAM : *
+ [Création d’un rôle pour la fédération d’identité web ou OpenID Connect Federation (Console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_oidc.html)
+ [Création d’un rôle pour la fédération SAML 2.0 (Console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_saml.html)

## Étape 2 : Générer l’URL avec le code d’authentification en pièce jointe
<a name="embedded-analytics-full-console-for-authenticated-users-step-2"></a>

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 à Amazon Quick Sight, 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 utilisateur de la session de console est configuré de manière unique dans Amazon Quick Sight. 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
<a name="embedded-analytics-full-console-for-authenticated-users-java"></a>

```
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.GenerateEmbedUrlForRegisteredUserRequest;
import com.amazonaws.services.quicksight.model.GenerateEmbedUrlForRegisteredUserResult;
import com.amazonaws.services.quicksight.model.RegisteredUserEmbeddingExperienceConfiguration;
import com.amazonaws.services.quicksight.model.RegisteredUserQuickSightConsoleEmbeddingConfiguration;

/**
 * Class to call QuickSight AWS SDK to get url for QuickSight console embedding.
 */
public class GetQuicksightEmbedUrlRegisteredUserQSConsoleEmbedding {

    private final AmazonQuickSight quickSightClient;

    public GetQuicksightEmbedUrlRegisteredUserQSConsoleEmbedding() {
        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,
            final String userArn, // Registered user arn to use for embedding. Refer to Get Embed Url section in developer portal to find out how to get user arn for a QuickSight user.
            final List<String> allowedDomains, // Runtime allowed domain for embedding
            final String initialPath
    ) throws Exception {
        final RegisteredUserEmbeddingExperienceConfiguration experienceConfiguration = new RegisteredUserEmbeddingExperienceConfiguration()
                .withQuickSightConsole(new RegisteredUserQuickSightConsoleEmbeddingConfiguration().withInitialPath(initialPath));
        final GenerateEmbedUrlForRegisteredUserRequest generateEmbedUrlForRegisteredUserRequest = new GenerateEmbedUrlForRegisteredUserRequest();
        generateEmbedUrlForRegisteredUserRequest.setAwsAccountId(accountId);
        generateEmbedUrlForRegisteredUserRequest.setUserArn(userArn);
        generateEmbedUrlForRegisteredUserRequest.setAllowedDomains(allowedDomains);
        generateEmbedUrlForRegisteredUserRequest.setExperienceConfiguration(experienceConfiguration);

        final GenerateEmbedUrlForRegisteredUserResult generateEmbedUrlForRegisteredUserResult = quickSightClient.generateEmbedUrlForRegisteredUser(generateEmbedUrlForRegisteredUserRequest);

        return generateEmbedUrlForRegisteredUserResult.getEmbedUrl();
    }
}
```

### JavaScript
<a name="embedded-analytics-full-console-for-authenticated-users-js"></a>

```
global.fetch = require('node-fetch');
const AWS = require('aws-sdk');

function generateEmbedUrlForRegisteredUser(
    accountId,
    dashboardId,
    openIdToken, // Cognito-based token
    userArn, // registered user arn
    roleArn, // IAM user role to use for embedding
    sessionName, // Session name for the roleArn assume role
    allowedDomains, // Runtime allowed domain for embedding
    getEmbedUrlCallback, // GetEmbedUrl success callback method
    errorCallback // GetEmbedUrl error callback method
    ) {
    const stsClient = new AWS.STS();
    let stsParams = {
        RoleSessionName: sessionName,
        WebIdentityToken: openIdToken,
        RoleArn: roleArn
    }

    stsClient.assumeRoleWithWebIdentity(stsParams, function(err, data) {
        if (err) {
            console.log('Error assuming role');
            console.log(err, err.stack);
            errorCallback(err);
        } else {
            const getDashboardParams = {
                "AwsAccountId": accountId,
                "ExperienceConfiguration": {
                    "QuickSightConsole": {
                        "InitialPath": '/start'
                    }
                },
                "UserArn": userArn,
                "AllowedDomains": allowedDomains,
                "SessionLifetimeInMinutes": 600
            };

            const quicksightGetDashboard = new AWS.QuickSight({
                region: process.env.AWS_REGION,
                credentials: {
                    accessKeyId: data.Credentials.AccessKeyId,
                    secretAccessKey: data.Credentials.SecretAccessKey,
                    sessionToken: data.Credentials.SessionToken,
                    expiration: data.Credentials.Expiration
                }
            });

            quicksightGetDashboard.generateEmbedUrlForRegisteredUser(getDashboardParams, 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
<a name="embedded-analytics-full-console-for-authenticated-users-py"></a>

```
import json
import boto3
from botocore.exceptions import ClientError

# Create QuickSight and STS clients
qs = boto3.client('quicksight', region_name='us-east-1')
sts = boto3.client('sts')

# Function to generate embedded URL  
# accountId: AWS account ID
# userArn: arn of registered user
# allowedDomains: Runtime allowed domain for embedding
# roleArn: IAM user role to use for embedding
# sessionName: session name for the roleArn assume role
def generateEmbeddingURL(accountId, userArn, allowedDomains, roleArn, sessionName):
    try:
        assumedRole = sts.assume_role(
            RoleArn = roleArn,
            RoleSessionName = sessionName,
        )
    except ClientError as e:
        return "Error assuming role: " + str(e)
    else: 
        assumedRoleSession = boto3.Session(
            aws_access_key_id = assumedRole['Credentials']['AccessKeyId'],
            aws_secret_access_key = assumedRole['Credentials']['SecretAccessKey'],
            aws_session_token = assumedRole['Credentials']['SessionToken'],
        )
        try:
            quickSightClient = assumedRoleSession.client('quicksight', region_name='us-east-1')
            
            experienceConfiguration = {
                "QuickSightConsole": {
                    "InitialPath": "/start"
                }
            }
            response = quickSightClient.generate_embed_url_for_registered_user(
                 AwsAccountId = accountId,
                 ExperienceConfiguration = experienceConfiguration,
                 UserArn = userArn,
                 AllowedDomains = allowedDomains,
                 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:
            return "Error generating embedding url: " + str(e)
```

### Node.js
<a name="embedded-analytics-full-console-for-authenticated-users-node"></a>

L'exemple suivant montre le JavaScript (Node.js) que vous pouvez utiliser sur le serveur d'applications pour générer 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. 

**Example**  

```
const AWS = require('aws-sdk');
const https = require('https');

var quicksightClient = new AWS.Service({
    apiConfig: require('./quicksight-2018-04-01.min.json'),
    region: 'us-east-1',
});

quicksightClient.generateEmbedUrlForRegisteredUser({
    'AwsAccountId': '111122223333',
    'ExperienceConfiguration': {
        'QuickSightConsole': {
            'InitialPath': '/start'
        }
    },
    'UserArn': 'REGISTERED_USER_ARN',
    'AllowedDomains': allowedDomains,
    'SessionLifetimeInMinutes': 100
}, function(err, data) {
    console.log('Errors: ');
    console.log(err);
    console.log('Response: ');
    console.log(data);
});
```

**Example**  

```
// 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://quicksightdomain/embed/12345/dashboards/67890..,
        RequestId: '7bee030e-f191-45c4-97fe-d9faf0e03713'
    }
```

### .NET/C\$1
<a name="embedded-analytics-full-console-for-authenticated-users-cs"></a>

L’exemple suivant montre le code .NET/C \$1 que vous pouvez utiliser sur le serveur d’applications afin de générer 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. 

**Example**  

```
using System;
using Amazon.QuickSight;
using Amazon.QuickSight.Model;

namespace GenerateDashboardEmbedUrlForRegisteredUser
{
    class Program
    {
        static void Main(string[] args)
        {
            var quicksightClient = new AmazonQuickSightClient(
                AccessKey,
                SecretAccessKey,
                SessionToken,
                Amazon.RegionEndpoint.USEast1);
            try
            {
                RegisteredUserQuickSightConsoleEmbeddingConfiguration registeredUserQuickSightConsoleEmbeddingConfiguration
                    = new RegisteredUserQuickSightConsoleEmbeddingConfiguration
                    {
                        InitialPath = "/start"
                    };
                RegisteredUserEmbeddingExperienceConfiguration registeredUserEmbeddingExperienceConfiguration
                    = new RegisteredUserEmbeddingExperienceConfiguration
                    {
                        QuickSightConsole = registeredUserQuickSightConsoleEmbeddingConfiguration
                    };
                
                Console.WriteLine(
                    quicksightClient.GenerateEmbedUrlForRegisteredUserAsync(new GenerateEmbedUrlForRegisteredUserRequest
                    {
                        AwsAccountId = "111122223333",
                        ExperienceConfiguration = registeredUserEmbeddingExperienceConfiguration,
                        UserArn = "REGISTERED_USER_ARN",
                        AllowedDomains = allowedDomains,
                        SessionLifetimeInMinutes = 100
                    }).Result.EmbedUrl
                );
            } catch (Exception ex) {
                Console.WriteLine(ex.Message);
            }
        }
    }
}
```

### AWS CLI
<a name="embedded-analytics-full-console-for-authenticated-users-cli"></a>

Pour assumer ce rôle, choisissez l'une des opérations d'API AWS Security Token Service (AWS STS) suivantes :
+ [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)— Utilisez cette opération lorsque vous utilisez une identité IAM pour assumer le rôle.
+ [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html)— Utilisez cette opération lorsque vous utilisez un fournisseur d'identité Web pour authentifier votre utilisateur. 
+ [AssumeRoleWithSaml](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html)— 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:GenerateEmbedUrlForRegisteredUser`. Si vous envisagez d' just-in-timeajouter des utilisateurs lorsqu'ils ouvrent Amazon Quick Sight pour la première fois, les autorisations doivent également être activées pour le rôle`quicksight:RegisterUser`.

```
aws sts assume-role \
     --role-arn "arn:aws:iam::111122223333:role/embedding_quicksight_dashboard_role" \
     --role-session-name john.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ération `AssumeRole`, ceci est probablement dû au fait que le précédent `SESSION TOKEN` est encore dans les variables de l’environnement. Pour l’effacer, définissez les variables suivantes :  
*AWS\$1ACCESS\$1KEY\$1ID* 
*AWS\$1SECRET\$1CLÉ D'ACCÈS* 
*AWS\$1SESSION\$1JETON* 

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 de `export`.

```
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 du `role-arn` et de la valeur `role-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. Le throttling est une fonctionnalité de sécurité qui empêche le même utilisateur d'accéder à Amazon Quick Sight depuis plusieurs sites. 

L'ID de session du rôle devient également le nom d'utilisateur dans Amazon Quick Sight. Vous pouvez utiliser ce modèle pour configurer vos utilisateurs dans Amazon Quick Sight à l'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 [RegisterUser[DescribeUser](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_DescribeUser.html)](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_RegisterUser.html), et sur les autres opérations de l'API Amazon Quick Sight, consultez le manuel [Amazon Quick Sight API Reference](https://docs.aws.amazon.com/quicksight/latest/APIReference/Welcome.html).

```
aws quicksight register-user \
     --aws-account-id 111122223333 \
     --namespace default \
     --identity-type IAM \
     --iam-arn "arn:aws:iam::111122223333:role/embedding_quicksight_dashboard_role" \
     --user-role READER \
     --user-name jhnd \
     --session-name "john.doe@example.com" \
     --email john.doe@example.com \
     --region us-east-1 \
     --custom-permissions-name TeamA1
```

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 la première fois qu'ils accèdent à Amazon Quick Sight. Pour les utilisateurs Microsoft AD, vous pouvez utiliser `DescribeUser` pour obtenir l’ARN de l’utilisateur.

La première fois qu'un utilisateur accède à Amazon Quick Sight, vous pouvez également ajouter cet utilisateur 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 d'Amazon Quick Sight et qui a accès à la session de console Amazon Quick Sight. 

Enfin, pour obtenir une URL signée pour la session de console, appelez `generate-embed-url-for-registered-user` à partir du serveur d’applications. Cela renvoie l’URL de session de console intégrable. L'exemple suivant montre comment générer l'URL d'une session de console intégrée à l'aide d'un appel côté serveur pour les utilisateurs authentifiés par le biais de l'authentification unique (IAM AWS Managed Microsoft AD Identity Center).

```
aws quicksight generate-embed-url-for-registered-user \
    --aws-account-id 111122223333 \
    --entry-point the-url-for--the-console-session \
    --session-lifetime-in-minutes 600 \
    --user-arn arn:aws:quicksight:us-east-1:111122223333:user/default/embedding_quicksight_dashboard_role/embeddingsession
	--allowed-domains '["domain1","domain2"]' \
    --experience-configuration QuickSightConsole={InitialPath="/start"}
```

Pour plus d’informations sur l’utilisation de cette opération, consultez [https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForRegisteredUser.html](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForRegisteredUser.html). Vous pouvez utiliser cette opération et d’autres opérations d’API dans votre propre code. 

## Étape 3 : Intégrer l’URL de la session de console
<a name="embedded-analytics-full-console-for-authenticated-users-step-3"></a>

Dans la section suivante, vous découvrirez comment utiliser le [SDK Amazon Quick Sight Embedding](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk) (JavaScript) pour intégrer l'URL de session de console de l'étape 3 dans la page de votre site Web ou de votre application. Le kit SDK vous permet d’effectuer les opérations suivantes : 
+ Placer la session de console sur une page HTML.
+ Transmettre les paramètres à la session de console.
+ Gérer les états d’erreurs avec des messages personnalisés pour votre application.

Appelez l’opération d’API `GenerateEmbedUrlForRegisteredUser` pour générer l’URL que vous pouvez intégrer dans votre application. Cette URL est valable pendant 5 minutes et la session qui en résulte est valide jusqu’à 10 heures. L’opération d’API fournit l’URL avec un `auth_code` qui permet une session à connexion unique. 

Voici un exemple de réponse de `generate-embed-url-for-registered-user`.

```
//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://quicksightdomain/embedding/12345/start...",
     "RequestId": "7bee030e-f191-45c4-97fe-d9faf0e03713"
}
```

Intégrez cette session de console à votre page Web à l'aide du [SDK Amazon Quick Sight Embedding](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk) ou en ajoutant cette URL dans un iframe. Si vous définissez une hauteur et une largeur fixes (en pixels), Amazon Quick Sight les utilise et ne modifie pas votre visuel lorsque votre fenêtre est redimensionnée. Si vous définissez un pourcentage relatif de hauteur et de largeur, Amazon Quick Sight fournit une mise en page réactive qui est modifiée en fonction de l'évolution de la taille de votre fenêtre. En utilisant le SDK Amazon Quick Sight Embedding, vous pouvez également contrôler les paramètres au sein de la session de console et recevoir des rappels en termes de fin de chargement de page et d'erreurs. 

Le domaine qui hébergera les tableaux de bord intégrés doit figurer sur la *liste des domaines autorisés*, c'est-à-dire la liste des domaines approuvés pour votre Quick abonnement. Cette exigence protège vos données en empêchant les domaines non approuvés d’héberger des tableaux de bord intégrés. Pour plus d'informations sur l'ajout de domaines pour une console intégrée, consultez [Autoriser la mise en vente de domaines lors de l'exécution avec l'API Amazon Quick Sight](https://docs.aws.amazon.com/quicksight/latest/user/embedding-run-time.html).

L’exemple suivant montre comment utiliser l’URL générée. Ce code est généré sur votre serveur d’applications.

### SDK 2.0
<a name="embedded-analytics-full-console-for-authenticated-users-sdkv2"></a>

```
<!DOCTYPE html>
<html>

    <head>
        <title>Console Embedding Example</title>
        <script src="https://unpkg.com/amazon-quicksight-embedding-sdk@2.0.0/dist/quicksight-embedding-js-sdk.min.js"></script>
        <script type="text/javascript">
            const embedSession = async() => {    
                const {
                    createEmbeddingContext,
                } = QuickSightEmbedding;

                const embeddingContext = await createEmbeddingContext({
                    onChange: (changeEvent, metadata) => {
                        console.log('Context received a change', changeEvent, metadata);
                    },
                });

                const frameOptions = {
                    url: "<YOUR_EMBED_URL>", // replace this value with the url generated via embedding API
                    container: '#experience-container',
                    height: "700px",
                    width: "1000px",
                    onChange: (changeEvent, metadata) => {
                        switch (changeEvent.eventName) {
                            case 'FRAME_MOUNTED': {
                                console.log("Do something when the experience frame is mounted.");
                                break;
                            }
                            case 'FRAME_LOADED': {
                                console.log("Do something when the experience frame is loaded.");
                                break;
                            }
                        }
                    },
                };

                const contentOptions = {
                    onMessage: async (messageEvent, experienceMetadata) => {
                        switch (messageEvent.eventName) {
                            case 'ERROR_OCCURRED': {
                                console.log("Do something when the embedded experience fails loading.");
                                break;
                            }
                        }
                    }
                };
                const embeddedConsoleExperience = await embeddingContext.embedConsole(frameOptions, contentOptions);
            };
        </script>
    </head>

    <body onload="embedSession()">
        <div id="experience-container"></div>
    </body>

</html>
```

### SDK 1.0
<a name="embedded-analytics-full-console-for-authenticated-users-sdkv1"></a>

```
<!DOCTYPE html>
<html>

    <head>
        <title>QuickSight Console Embedding</title>
        <script src="https://unpkg.com/amazon-quicksight-embedding-sdk@1.0.15/dist/quicksight-embedding-js-sdk.min.js"></script>
        <script type="text/javascript">
            var session

            function onError(payload) {
                console.log("Do something when the session fails loading");
            }

            function embedSession() {
                var containerDiv = document.getElementById("embeddingContainer");
                var options = {
                    // replace this dummy url with the one generated via embedding API
                    url: "https://us-east-1.quicksight.aws.amazon.com/sn/dashboards/dashboardId?isauthcode=true&identityprovider=quicksight&code=authcode", // replace this dummy url with the one generated via embedding API
                    container: containerDiv,
                    parameters: {
                        country: "United States"
                    },
                    scrolling: "no",
                    height: "700px",
                    width: "1000px",
                    locale: "en-US",
                    footerPaddingEnabled: true,
                    defaultEmbeddingVisualType: "TABLE", // this option only applies to QuickSight console embedding and is not used for dashboard embedding
                };
                session = QuickSightEmbedding.embedSession(options);
                session.on("error", onError);
            }

            function onCountryChange(obj) {
                session.setParameters({country: obj.value});
            }
        </script>
    </head>

    <body onload="embedSession()">
        <span>
            <label for="country">Country</label>
            <select id="country" name="country" onchange="onCountryChange(this)">
                <option value="United States">United States</option>
                <option value="Mexico">Mexico</option>
                <option value="Canada">Canada</option>
            </select>
        </span>
        <div id="embeddingContainer"></div>
    </body>

</html>
```

Pour que cet exemple fonctionne, assurez-vous d'utiliser le SDK Amazon Quick Sight Embedding pour charger la session de console intégrée sur votre site Web à l'aide de. JavaScript Pour obtenir votre copie, effectuez l’une des actions suivantes :
+ Téléchargez le SDK d'[intégration Amazon Quick Sight](https://github.com/awslabs/amazon-quicksight-embedding-sdk#step-3-create-the-quicksight-session-object) depuis. GitHub Ce référentiel est géré par un groupe de développeurs Amazon Quick Sight.
+ Téléchargez la dernière version du SDK d'intégration sur. [https://www.npmjs.com/package/amazon-quicksight-embedding-sdk](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk)
+ Si vous utilisez `npm` for JavaScript dependencies, téléchargez-le et installez-le en exécutant la commande suivante.

  ```
  npm install amazon-quicksight-embedding-sdk
  ```

# Activation des fonctionnalités de BI générative dans les consoles intégrées pour les utilisateurs enregistrés
<a name="embedding-consoles-genbi"></a>


|  | 
| --- |
|  S’applique à : édition Enterprise  | 


|  | 
| --- |
|    Public cible : développeurs Amazon Quick  | 

Vous pouvez activer les fonctionnalités Generative BI suivantes dans votre console intégrée :
+ Résumés exécutifs : lorsque cette option est activée, les utilisateurs enregistrés d'Author Pro et de Reader Pro peuvent générer des résumés qui fournissent un résumé de toutes les informations générées par Amazon Quick Sight pour le tableau de bord afin de découvrir facilement les informations clés.
+ Création : lorsque cette option est activée, les utilisateurs d’Author Pro peuvent utiliser Generative BI pour créer des champs calculés et créer et affiner des visuels.
+ Questions et réponses : lorsque cette option est activée, les utilisateurs d’Author Pro et de Reader Pro peuvent utiliser les questions-réponses basées sur l’IA pour suggérer des questions relatives à leurs données et y répondre.
+ Récits de données : lorsque cette option est activée, les utilisateurs d’Author Pro et de Reader Pro peuvent fournir des informations pour générer rapidement une première ébauche de leur récit de données.

**Pour activer les fonctionnalités de BI générative dans les consoles intégrées pour les utilisateurs enregistrés**
+ Suivez les étapes décrites dans [Intégration de toutes les fonctionnalités de la console Amazon Quick Sight pour les utilisateurs enregistrés](https://docs.aws.amazon.com/quicksight/latest/user/embedded-analytics-full-console-for-authenticated-users.html) afin d'intégrer une console avec les modifications suivantes :

  1. Lorsque vous générez l'URL à l'étape 2, définissez `Enabled: true` le `FeatureConfigurations` paramètre pour chacune des fonctionnalités que vous souhaitez activer dans le [GenerateEmbedUrlForRegisteredUser](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForRegisteredUser.html)ou [GenerateEmbedUrlForRegisteredUserWithIdentity](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForRegisteredUserWithIdentity.html) APIs, comme indiqué dans l'exemple suivant. Si aucune configuration n’est fournie, les fonctionnalités sont désactivées par défaut.

     ```
     ExperienceConfiguration: {
             QuickSightConsole: {
                 InitialPath: "initial_path",
                 AmazonQInQuickSight: {
                     FeatureConfigurations: { 
                         COMMENT: Enable executive summaries
                         ExecutiveSummary: {
                             Enabled: true
                         },
                         COMMENT: Enable Generative BI authoring
                         GenerativeAuthoring: {
                             Enabled: true
                         },
                         COMMENT: Enable Q&A
                         DataQnA: {
                             Enabled: true
                         },
                         COMMENT: Enable data stories
                         DataStories: {
                             Enabled: true
                         }       
                     }
                 }
             }
         }
     }
     ```

  1. Lorsque vous intégrez l'URL de la console au SDK d'intégration Amazon Quick Sight à l'étape 3, définissez les valeurs de l'exemple suivant comme vous le souhaitez. Si aucune configuration n’est fournie, les fonctionnalités sont désactivées par défaut.
**Note**  
Il n’existe aucune option du SDK permettant d’activer les récits de données. Si les récits de données sont activés avec l’API, comme indiqué à l’étape précédente, ils seront disponibles pour les utilisateurs enregistrés.

     ```
     const contentOptions = {
         toolbarOptions: {
             executiveSummary: true, // Enable executive summaries
             buildVisual: true, // Enable Generative BI authoring
             dataQnA: true // Enable Q&A
         }
     };
     ```

# Intégration d'Amazon Q dans l'expérience générative de questions-réponses Amazon Quick Sight
<a name="embedding-gen-bi"></a>


|  | 
| --- |
|    Public cible : développeurs Amazon Quick  | 

Dans les sections suivantes, vous trouverez des informations détaillées sur la façon de configurer une expérience de questions-réponses générative intégrée qui utilise les fonctionnalités NLQ améliorées optimisées par. LLMs L’expérience de questions-réponses générative est le remplacement recommandé de la barre de recherche Q intégrée et fournit une expérience BI actualisée aux utilisateurs.

**Topics**
+ [

## Intégration d'Amazon Q dans Amazon Quick Sight : expérience générative de questions-réponses pour les utilisateurs enregistrés
](#embedded-analytics-gen-bi-authenticated-users)
+ [

## Intégration d'Amazon Q dans une expérience de questions-réponses générative rapide pour les utilisateurs anonymes (non enregistrés)
](#embedded-analytics-gen-bi-anonymous-users)

## Intégration d'Amazon Q dans Amazon Quick Sight : expérience générative de questions-réponses pour les utilisateurs enregistrés
<a name="embedded-analytics-gen-bi-authenticated-users"></a>

Dans les sections suivantes, vous trouverez des informations détaillées sur la façon de configurer une expérience de questions-réponses générative intégrée pour les utilisateurs enregistrés d'Amazon Quick Sight.

**Topics**
+ [

### Étape 1 : Configurer des autorisations
](#embedded-analytics-gen-bi-authenticated-users-step-1)
+ [

### Étape 2 : Générer l’URL avec le code d’authentification en pièce jointe
](#embedded-analytics-gen-bi-authenticated-users-step-2)
+ [

### Étape 3 : Intégrer l’URL de l’expérience de questions-réponses générative
](#embedded-analytics-gen-bi-authenticated-users-step-3)
+ [

### Fonctionnalités d’expérience générative de questions-réponses intégrées en option
](#embedded-analytics-gen-bi-authenticated-users-step-4)

### Étape 1 : Configurer des autorisations
<a name="embedded-analytics-gen-bi-authenticated-users-step-1"></a>

Dans la section suivante, vous apprendrez à configurer les autorisations pour l’application backend ou le serveur web afin d’intégrer l’expérience générative de questions-réponses Cette tâche nécessite un accès administratif à Gestion des identités et des accès AWS (IAM).

Chaque utilisateur qui accède à une expérience de questions-réponses générative assume un rôle qui lui confère un accès et des autorisations à Amazon Quick Sight. Pour que cela soit possible, créez un rôle IAM dans votre Compte AWS. Associez une politique IAM au rôle afin de fournir des autorisations à n’importe quel utilisateur qui assume ce rôle. Le rôle IAM doit fournir des autorisations pour récupérer l'intégration URLs pour un groupe d'utilisateurs spécifique. 

À l’aide du caractère générique *\$1*, vous pouvez accorder l’autorisation de générer une URL pour tous les utilisateurs d’un espace de noms spécifique. Vous pouvez également accorder des autorisations pour générer une URL pour un sous-ensemble d’utilisateurs dans des espaces de noms spécifiques. Pour cela, ajoutez `quicksight:GenerateEmbedUrlForRegisteredUser`.

Vous pouvez créer une condition dans votre politique IAM qui limite les domaines que les développeurs peuvent répertorier dans le paramètre `AllowedDomains` d’une opération d’API `GenerateEmbedUrlForRegisteredUser`. Le paramètre `AllowedDomains` est un paramètre facultatif. Il permet aux développeurs de remplacer les domaines statiques configurés dans le menu **Manage Amazon Quick Sight** et de répertorier jusqu'à trois domaines ou sous-domaines pouvant accéder à une URL générée. Cette URL est ensuite intégrée dans le site web d’un développeur. Seuls les domaines répertoriés dans le paramètre peuvent accéder à l’expérience générative de questions-réponses. Sans cette condition, les développeurs peuvent répertorier n’importe quel domaine sur Internet dans le paramètre `AllowedDomains`. 

Pour limiter les domaines que les développeurs peuvent utiliser avec ce paramètre, ajoutez une condition `AllowedEmbeddingDomains` à votre politique IAM. Pour plus d'informations sur le `AllowedDomains` paramètre, consultez le [GenerateEmbedUrlForRegisteredUser](https://docs.aws.amazon.com//quicksight/latest/APIReference/API_GenerateEmbedUrlForRegisteredUser.html)manuel *Amazon Quick Sight API Reference*.

**Bonnes pratiques de sécurité pour les opérateurs de conditions IAM**  
Les opérateurs de conditions IAM mal configurés peuvent autoriser un accès non autorisé à vos ressources Quick intégrées par le biais de variations d'URL. Lorsque vous utilisez la clé de `quicksight:AllowedEmbeddingDomains` condition dans vos politiques IAM, utilisez des opérateurs de condition qui autorisent des domaines spécifiques ou refusent tous les domaines qui ne sont pas spécifiquement autorisés. Pour plus d'informations sur les opérateurs de condition IAM, voir [Éléments de politique IAM JSON : opérateurs de condition](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html) dans le guide de l'utilisateur IAM.  
De nombreuses variantes d'URL peuvent pointer vers la même ressource. Par exemple, les fichiers suivants ont URLs tous le même contenu :  
`https://example.com`
`https://example.com/`
`https://Example.com`
Si votre politique utilise des opérateurs qui ne tiennent pas compte de ces variations d'URL, un attaquant peut contourner vos restrictions en fournissant des variantes d'URL équivalentes.  
Vous devez vérifier que votre politique IAM utilise des opérateurs de condition appropriés pour empêcher le contournement des vulnérabilités et garantir que seuls les domaines auxquels vous souhaitez accéder peuvent accéder à vos ressources intégrées.

L’exemple de stratégie suivant fournit ces autorisations.

De plus, si vous créez pour la première fois des utilisateurs qui seront des lecteurs d'Amazon Quick Sight, assurez-vous d'ajouter l'`quicksight:RegisterUser`autorisation dans la politique.

L'exemple de politique suivant autorise les nouveaux utilisateurs qui souhaitent lire Amazon Quick Sight à récupérer une URL d'intégration.

Enfin, l’identité IAM de votre application doit avoir une politique d’approbation qui lui est associée afin d’autoriser l’accès au rôle que vous venez de créer. Cela signifie que lorsqu'un utilisateur accède à votre application, celle-ci peut assumer le rôle en son nom et configurer l'utilisateur dans Amazon Quick Sight. 

Voici un exemple de politique d’approbation.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
    "Sid": "AllowLambdaFunctionsToAssumeThisRole",
                "Effect": "Allow",
                "Principal": {
    "Service": "lambda.amazonaws.com"
                },
                "Action": "sts:AssumeRole"
            },
            {
    "Sid": "AllowEC2InstancesToAssumeThisRole",
                "Effect": "Allow",
                "Principal": {
    "Service": "ec2.amazonaws.com"
                },
                "Action": "sts:AssumeRole"
            }
        ]
    }
```

------

Pour plus d’informations sur les politiques d’approbation pour OpenId Connect ou l’authentification Security Assertion Markup Language (SAML), consultez les sections suivantes du *Guide de l’utilisateur IAM :*
+ [Création d’un rôle pour l’identité web ou pour la fédération OpenID Connect (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_oidc.html)
+ [Création d’un rôle pour la fédération SAML 2.0 (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_saml.html)

### Étape 2 : Générer l’URL avec le code d’authentification en pièce jointe
<a name="embedded-analytics-gen-bi-authenticated-users-step-2"></a>

Dans la section suivante, vous découvrirez comment authentifier votre utilisateur et obtenir l'URL de rubrique Q intégrable sur votre serveur d'applications. Si vous envisagez d'intégrer l'expérience de questions-réponses générative pour les types d'identité IAM ou Amazon Quick Sight, partagez la rubrique Q avec les utilisateurs.

Lorsqu’un utilisateur accède à votre application, l’application assume le rôle IAM pour le compte de l’utilisateur. L'application ajoute ensuite l'utilisateur à Amazon Quick Sight, 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 lecteur du sujet Q est approvisionné de manière unique dans Amazon Quick Sight. 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. La sécurité au niveau des lignes basée sur des balises peut être utilisée pour l’intégration de la barre Q anonyme.

Les exemples suivants effectuent l’authentification IAM pour le compte de l’utilisateur. Ce code s’exécute sur votre serveur d’applications.

#### Java
<a name="embedded-analytics-gen-bi-authenticated-users-java"></a>

```
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.GenerateEmbedUrlForRegisteredUserRequest;
import com.amazonaws.services.quicksight.model.GenerateEmbedUrlForRegisteredUserResult;
import com.amazonaws.services.quicksight.model.RegisteredUserEmbeddingExperienceConfiguration;
import com.amazonaws.services.quicksight.model.RegisteredUserGenerativeQnAEmbeddingConfiguration;

/**
 * Class to call QuickSight AWS SDK to get url for embedding Generative Q&A experience.
 */
public class RegisteredUserGenerativeQnAEmbeddingSample {

    private final AmazonQuickSight quickSightClient;

    public RegisteredUserGenerativeQnAEmbeddingSample() {
        this.quickSightClient = AmazonQuickSightClientBuilder
                    .standard()
                    .withRegion(Regions.US_EAST_1.getName())
                    .withCredentials(new AWS CredentialsProvider() {
                            @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, // AWS Account ID
            final String topicId, // Topic ID to embed
            final List<String> allowedDomains, // Runtime allowed domain for embedding
            final String userArn // Registered user arn to use for embedding. Refer to Get Embed Url section in developer portal to find how to get user arn for a QuickSight user.
            ) throws Exception {

        final RegisteredUserEmbeddingExperienceConfiguration experienceConfiguration = new RegisteredUserEmbeddingExperienceConfiguration()
                .withGenerativeQnA(new RegisteredUserGenerativeQnAEmbeddingConfiguration().withInitialTopicId(topicId));
        final GenerateEmbedUrlForRegisteredUserRequest generateEmbedUrlForRegisteredUserRequest = new GenerateEmbedUrlForRegisteredUserRequest();
        generateEmbedUrlForRegisteredUserRequest.setAwsAccountId(accountId);
        generateEmbedUrlForRegisteredUserRequest.setUserArn(userArn);
        generateEmbedUrlForRegisteredUserRequest.setAllowedDomains(allowedDomains);
        generateEmbedUrlForRegisteredUserRequest.setExperienceConfiguration(experienceConfiguration);

        final GenerateEmbedUrlForRegisteredUserResult generateEmbedUrlForRegisteredUserResult = quickSightClient.generateEmbedUrlForRegisteredUser(generateEmbedUrlForRegisteredUserRequest);

        return generateEmbedUrlForRegisteredUserResult.getEmbedUrl();
    }
}
```

#### JavaScript
<a name="embedded-analytics-gen-bi-authenticated-users-js"></a>

**Note**  
La génération d'URL d'intégration APIs ne peut pas être appelée directement depuis les navigateurs. Reportez-vous plutôt à l’exemple Node.JS.

#### Python3
<a name="embedded-analytics-gen-bi-authenticated-users-py"></a>

```
import json
import boto3
from botocore.exceptions import ClientError

sts = boto3.client('sts')

# Function to generate embedded URL  
# accountId: AWS account ID
# topicId: Topic ID to embed
# userArn: arn of registered user
# allowedDomains: Runtime allowed domain for embedding
# roleArn: IAM user role to use for embedding
# sessionName: session name for the roleArn assume role
def getEmbeddingURL(accountId, topicId, userArn, allowedDomains, roleArn, sessionName):
    try:
        assumedRole = sts.assume_role(
            RoleArn = roleArn,
            RoleSessionName = sessionName,
        )
    except ClientError as e:
        return "Error assuming role: " + str(e)
    else: 
        assumedRoleSession = boto3.Session(
            aws_access_key_id = assumedRole['Credentials']['AccessKeyId'],
            aws_secret_access_key = assumedRole['Credentials']['SecretAccessKey'],
            aws_session_token = assumedRole['Credentials']['SessionToken'],
        )
        try:
            quicksightClient = assumedRoleSession.client('quicksight', region_name='us-west-2')
            response = quicksightClient.generate_embed_url_for_registered_user(
                AwsAccountId=accountId,
                ExperienceConfiguration = {
                    'GenerativeQnA': {
                        'InitialTopicId': topicId
                    }
                },
                UserArn = userArn,
                AllowedDomains = allowedDomains,
                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:
            return "Error generating embedding url: " + str(e)
```

#### Node.js
<a name="embedded-analytics-gen-bi-authenticated-users-node"></a>

L'exemple suivant montre le JavaScript (Node.js) que vous pouvez utiliser sur le serveur d'applications pour générer l'URL du tableau de bord intégré. Vous pouvez utiliser cette URL dans votre site Web ou votre application pour afficher le tableau de bord. 

**Example**  

```
const AWS = require('aws-sdk');
const https = require('https');

var quicksightClient = new AWS.Service({
    region: 'us-east-1'
});

quicksightClient.generateEmbedUrlForRegisteredUser({
    'AwsAccountId': '111122223333',
    'ExperienceConfiguration': { 
        'GenerativeQnA': {
            'InitialTopicId': 'U4zJMVZ2n2stZflc8Ou3iKySEb3BEV6f'
        }
    },
    'UserArn': 'REGISTERED_USER_ARN',
    'AllowedDomains': allowedDomains,
    'SessionLifetimeInMinutes': 100
}, function(err, data) {
    console.log('Errors: ');
    console.log(err);
    console.log('Response: ');
    console.log(data);
});
```

#### .NET/C\$1
<a name="embedded-analytics-gen-bi-authenticated-users-cs"></a>

L’exemple suivant montre le code .NET/C \$1 que vous pouvez utiliser sur le serveur d’applications afin de générer l’URL pour la barre de recherche Q intégrée. Vous pouvez utiliser cette URL dans votre site web ou votre application pour afficher la barre de recherche Q. 

**Example**  

```
using System;
using Amazon.QuickSight;
using Amazon.QuickSight.Model;

namespace GenerateGenerativeQnAEmbedUrlForRegisteredUser
{
    class Program
    {
        static void Main(string[] args)
        {
            var quicksightClient = new AmazonQuickSightClient(
                AccessKey,
                SecretAccessKey,
                SessionToken,
                Amazon.RegionEndpoint.USEast1);
            try
            {
                RegisteredUserGenerativeQnAEmbeddingConfiguration registeredUserGenerativeQnAEmbeddingConfiguration
                    = new RegisteredUserGenerativeQnAEmbeddingConfiguration
                    {
                        InitialTopicId = "U4zJMVZ2n2stZflc8Ou3iKySEb3BEV6f"
                    };
                RegisteredUserEmbeddingExperienceConfiguration registeredUserEmbeddingExperienceConfiguration
                    = new RegisteredUserEmbeddingExperienceConfiguration
                    {
                        GenerativeQnA = registeredUserGenerativeQnAEmbeddingConfiguration
                    }; 
                
                Console.WriteLine(
                    quicksightClient.GenerateEmbedUrlForRegisteredUserAsync(new GenerateEmbedUrlForRegisteredUserRequest
                    {
                        AwsAccountId = "111122223333",
                        ExperienceConfiguration = registeredUserEmbeddingExperienceConfiguration,
                        UserArn = "REGISTERED_USER_ARN",
                        AllowedDomains = allowedDomains,
                        SessionLifetimeInMinutes = 100
                    }).Result.EmbedUrl
                );
            } catch (Exception ex) {
                Console.WriteLine(ex.Message);
            }
        }
    }
}
```

#### AWS CLI
<a name="embedded-analytics-gen-bi-authenticated-users-cli"></a>

Pour assumer ce rôle, choisissez l'une des opérations d'API AWS Security Token Service (AWS STS) suivantes :
+ [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)— Utilisez cette opération lorsque vous utilisez une identité IAM pour assumer le rôle.
+ [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html)— Utilisez cette opération lorsque vous utilisez un fournisseur d'identité Web pour authentifier votre utilisateur. 
+ [AssumeRoleWithSaml](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html)— 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:GenerateEmbedUrlForRegisteredUser`. Si vous envisagez d'ajouter just-in-time des utilisateurs lorsqu'ils utilisent un sujet dans la barre de recherche Q, les autorisations doivent également être activées pour le rôle`quicksight:RegisterUser`.

```
aws sts assume-role \
     --role-arn "arn:aws:iam::111122223333:role/embedding_quicksight_q_generative_qna_role" \
     --role-session-name john.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ération `AssumeRole`, ceci est probablement dû au fait que le précédent `SESSION TOKEN` est encore dans les variables de l’environnement. Pour l’effacer, définissez les variables suivantes :  
*AWS\$1ACCESS\$1KEY\$1ID* 
*AWS\$1SECRET\$1CLÉ D'ACCÈS* 
*AWS\$1SESSION\$1JETON* 

L’exemple suivant montre comment définir ces trois paramètres dans l’interface de ligne de commande. Pour une machine Microsoft Windows, utilisez `set` au lieu de `export`.

```
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_q_search_bar_role/john.doe@example.com`. L’ID de session de rôle se compose du nom de rôle issu du `role-arn` et de la valeur `role-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. Le *throttling* est une fonctionnalité de sécurité qui empêche le même utilisateur d'accéder à Amazon Quick Sight depuis plusieurs sites. 

L'ID de session du rôle devient également le nom d'utilisateur dans Amazon Quick Sight. Vous pouvez utiliser ce modèle pour configurer vos utilisateurs dans Amazon Quick Sight à l'avance, ou pour les configurer la première fois qu'ils accèdent à l'expérience Generative Q&R. 

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 [RegisterUser[DescribeUser](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_DescribeUser.html)](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_RegisterUser.html), et sur les autres opérations de l'API Amazon Quick Sight, consultez la [référence de l'API Amazon Quick Sight](https://docs.aws.amazon.com/quicksight/latest/APIReference/Welcome.html).

```
aws quicksight register-user \
    --aws-account-id 111122223333 \
    --namespace default \
    --identity-type IAM\
    --iam-arn "arn:aws:iam::111122223333:role/embedding_quicksight_q_generative_qna_role" \
    --user-role READER \
    --user-name jhnd \
    --session-name "john.doe@example.com" \
    --email john.doe@example.com \
    --region us-east-1 \
    --custom-permissions-name TeamA1
```

Si l’utilisateur est authentifié via Microsoft AD, vous n’avez pas besoin d’utiliser `RegisterUser` pour le configurer. Ils doivent plutôt être automatiquement abonnés la première fois qu'ils accèdent à Amazon Quick Sight. Pour les utilisateurs Microsoft AD, vous pouvez utiliser `DescribeUser` pour obtenir l’Amazon Resource Name (ARN) de l’utilisateur.

La première fois qu'un utilisateur accède à Amazon Quick Sight, vous pouvez également ajouter cet utilisateur au groupe avec lequel le tableau de bord est partagé. 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_q_generative_qna_role/john.doe@example.com"
```

Vous avez désormais un utilisateur de votre application qui est également un utilisateur d'Amazon Quick Sight et qui a accès au tableau de bord. 

Enfin, pour obtenir une URL signée pour le tableau de bord, appelez `generate-embed-url-for-registered-user` à partir du serveur d’applications. Ceci renvoie l’URL du tableau de bord intégrable. L'exemple suivant montre comment générer l'URL d'un tableau de bord intégré à l'aide d'un appel côté serveur pour les utilisateurs authentifiés par le biais de l'authentification unique (IAM AWS Managed Microsoft AD Identity Center).

```
aws quicksight generate-embed-url-for-anonymous-user \
--aws-account-id 111122223333 \
--namespace default-or-something-else \
--authorized-resource-arns '["topic-arn-topicId1","topic-arn-topicId2"]' \
--allowed-domains '["domain1","domain2"]' \
--experience-configuration 'GenerativeQnA={InitialTopicId="topicId1"}' \
--session-tags '["Key": tag-key-1,"Value": tag-value-1,{"Key": tag-key-1,"Value": tag-value-1}]' \
--session-lifetime-in-minutes 15
```

Pour plus d’informations sur l’utilisation de cette opération, consultez [https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForRegisteredUser.html](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForRegisteredUser.html). Vous pouvez utiliser cette opération et d’autres opérations d’API dans votre propre code.

### Étape 3 : Intégrer l’URL de l’expérience de questions-réponses générative
<a name="embedded-analytics-gen-bi-authenticated-users-step-3"></a>

Dans la section suivante, vous découvrirez comment intégrer l’URL de l’expérience générative de questions-réponses sur votre site web ou sur votre page d’application. Pour ce faire, utilisez le [SDK d'intégration Amazon Quick Sight](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk) ()JavaScript. Le kit SDK vous permet d’effectuer les opérations suivantes : 
+ Placer l’expérience de questions-réponses générative sur une page HTML.
+ Personnalisez la mise en page et l’apparence de l’expérience intégrée en fonction des besoins de votre application.
+ Gérer les états d’erreurs avec des messages personnalisés pour votre application.

Pour générer l’URL que vous pouvez intégrer dans votre application, appelez l’opération d’API `GenerateEmbedUrlForRegisteredUser`. Cette URL est valable pendant 5 minutes et la session qui en résulte est valide jusqu’à 10 heures. L’opération d’API fournit l’URL avec une valeur `auth_code` qui permet une session à connexion unique. 

Voici un exemple de réponse de `generate-embed-url-for-registered-user`.

```
//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://quicksightdomain/embedding/12345/q/search...",
"RequestId": "7bee030e-f191-45c4-97fe-d9faf0e03713"
}
```

Intégrez l'expérience de questions-réponses générative à votre page Web en utilisant le [SDK d'intégration Amazon Quick Sight](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk) ou en ajoutant cette URL dans un iframe. Si vous définissez une hauteur et une largeur fixes (en pixels), Amazon Quick Sight les utilise et ne modifie pas votre visuel lorsque votre fenêtre est redimensionnée. Si vous définissez un pourcentage relatif de hauteur et de largeur, Amazon Quick Sight fournit une mise en page réactive qui est modifiée en fonction de l'évolution de la taille de votre fenêtre. 

Assurez-vous que le domaine hébergeant l'expérience de questions-réponses générative intégrée figure dans la *liste des domaines autorisés*, c'est-à-dire la liste des domaines approuvés pour votre abonnement Amazon Quick Sight. Cette exigence protège vos données en empêchant les domaines non approuvés d’héberger des tableaux de bord intégrés. Pour plus d’informations sur l’ajout de domaines pour une expérience générative questions et réponses, consultez la rubrique [Gestion des domaines](manage-domains.md).

Vous pouvez utiliser le SDK d'intégration Amazon Quick Sight pour personnaliser la mise en page et l'apparence de l'expérience de questions-réponses générative intégrée en fonction de votre application. Utilisez la propriété `panelType` pour configurer l’état d’arrivée de l’expérience de questions-réponses générative lors de son affichage dans votre application. Définissez la propriété `panelType` sur `'FULL'` pour afficher l’intégralité du panneau d’expérience Generative Q&R. Ce panneau ressemble à l'expérience des utilisateurs d'Amazon Quick Sight dans la console Amazon Quick Sight. La hauteur du cadre du panneau n’est pas modifiée en fonction de l’interaction de l’utilisateur et respecte la valeur que vous avez définie dans la propriété `frameOptions.height`. L’image ci-dessous montre le panneau d’expérience générative de questions-réponses qui s’affiche lorsque vous définissez la valeur `panelType` sur `'FULL'`.

Définissez la propriété `panelType` sur `'SEARCH_BAR'` pour afficher l’expérience de questions-réponses générative sous forme de barre de recherche. Cette barre de recherche ressemble au rendu de la barre de recherche Q lorsqu’elle est intégrée à une application. La barre de recherche générative de questions-réponses s’étend à un panneau plus grand qui affiche les options de sélection de sujets, la liste de suggestions de questions, le panneau de réponses ou le tableau d’affichage.

La hauteur minimale par défaut de la barre de recherche Generative Q&R est affichée lorsque l’actif intégré est chargé. Il est recommandé de définir la valeur `frameOptions.height` sur `"38px"` pour optimiser l’expérience de la barre de recherche. Utilisez cette propriété `focusedHeight` pour définir la taille optimale de la liste déroulante de sélection des sujets et de la liste de suggestions de questions. Utilisez cette propriété `expandedHeight` pour définir la taille optimale du panneau de réponses et du tableau d’affichage. Si vous choisissez cette option `'SEARCH_BAR'`, il est recommandé de définir le style du conteneur parent en utilisant la position ; absolu pour éviter tout déplacement de contenu indésirable dans votre application. L’image ci-dessous montre la barre de recherche de l’expérience Generative Q&R qui s’affiche lorsque vous définissez la valeur `panelType` sur `'SEARCH_BAR'`.

Après avoir configuré la `panelType` propriété, utilisez le SDK d'intégration Amazon Quick Sight pour personnaliser les propriétés suivantes de l'expérience de questions-réponses générative.
+ Titre du panneau génératif de questions-réponses (s’applique uniquement à l’option `panelType: FULL`). 
+ Le texte de remplacement de la barre de recherche.
+ Si la sélection de sujets est autorisée.
+ Indique si les noms des rubriques sont affichés ou masqués.
+ Indique si l’icône Amazon Q est affichée ou masquée (s’applique uniquement à l’option `panelType: FULL`).
+ Indique si le tableau d’affichage est affiché ou masqué.
+ Si les utilisateurs peuvent optimiser le panneau génératif de questions-réponses en plein écran.
+ Le thème du panneau génératif de questions-réponses. Un ARN de thème personnalisé peut être transmis au SDK pour modifier l’apparence du contenu du cadre. Les thèmes de démarrage Amazon Quick Sight ne sont pas pris en charge pour les panneaux Generative BI intégrés. Pour utiliser un thème de démarrage Amazon Quick Sight, enregistrez-le en tant que thème personnalisé dans Amazon Quick Sight.

Lorsque vous utilisez le SDK d'intégration Amazon Quick Sight, l'expérience de questions-réponses générative de votre page est redimensionnée dynamiquement en fonction de l'état. En utilisant le SDK Amazon Quick Sight Embedding, vous pouvez également contrôler les paramètres de l'expérience Generative Q&R et recevoir des rappels en termes de fin de chargement de page, de changements d'état et d'erreurs. 

L’exemple suivant montre comment utiliser l’URL générée. Ce code est généré sur votre serveur d’applications.

#### SDK 2.0
<a name="collapsible-gen-bi-embedding-example"></a>

```
<!DOCTYPE html>
<html>
    <head>
        <title>Generative Q&A Embedding Example</title>
        <script src="https://unpkg.com/amazon-quicksight-embedding-sdk@2.7.0/dist/quicksight-embedding-js-sdk.min.js"></script>
        <script type="text/javascript">
            const embedGenerativeQnA = async() => {    
                const {createEmbeddingContext} = QuickSightEmbedding;

                const embeddingContext = await createEmbeddingContext({
                    onChange: (changeEvent, metadata) => {
                        console.log('Context received a change', changeEvent, metadata);
                    },
                });

                const frameOptions = {
                    url: "<YOUR_EMBED_URL>", // replace this value with the url generated via embedding API
                    container: '#experience-container',
                    height: "700px",
                    width: "1000px",
                    onChange: (changeEvent, metadata) => {
                        switch (changeEvent.eventName) {
                            case 'FRAME_MOUNTED': {
                                console.log("Do something when the experience frame is mounted.");
                                break;
                            }
                            case 'FRAME_LOADED': {
                                console.log("Do something when the experience frame is loaded.");
                                break;
                            }
                        }
                    },
                };

                const contentOptions = {
                    // Optional panel settings. Default behavior is equivalent to {panelType: 'FULL'}
                    panelOptions: {
                        panelType: 'FULL',
                        title: 'custom title', // Optional
                        showQIcon: false, // Optional, Default: true
                    },
                    // Use SEARCH_BAR panel type for the landing state to be similar to embedQSearchBar
                    // with generative capability enabled topics
                    /*
                    panelOptions: {
                        panelType: 'SEARCH_BAR',
                        focusedHeight: '250px',
                        expandedHeight: '500px',
                    },
                    */
                    showTopicName: false, // Optional, Default: true
                    showPinboard: false, // Optional, Default: true
                    allowTopicSelection: false, // Optional, Default: true
                    allowFullscreen: false, // Optional, Default: true
                    searchPlaceholderText: "custom search placeholder", // Optional
                    themeOptions: { // Optional
                        themeArn: 'arn:aws:quicksight:<Region>:<AWS-Account-ID>:theme/<Theme-ID>'
                    }
                    onMessage: async (messageEvent, experienceMetadata) => {
                        switch (messageEvent.eventName) {
                            case 'Q_SEARCH_OPENED': {
                                // called when pinboard is shown / visuals are rendered
                                console.log("Do something when SEARCH_BAR type panel is expanded");
                                break;
                            }
                            case 'Q_SEARCH_FOCUSED': {
                                // called when question suggestions or topic selection dropdown are shown
                                console.log("Do something when SEARCH_BAR type panel is focused");
                                break;
                            }
                            case 'Q_SEARCH_CLOSED': {
                                // called when shrinked to initial bar height
                                console.log("Do something when SEARCH_BAR type panel is collapsed");
                                break;
                            }
                            case 'Q_PANEL_ENTERED_FULLSCREEN': {
                                console.log("Do something when panel enters full screen mode");
                                break;
                            }
                            case 'Q_PANEL_EXITED_FULLSCREEN': {
                                console.log("Do something when panel exits full screen mode");
                                break;
                            }
                            case 'CONTENT_LOADED': {
                                console.log("Do something after experience is loaded");
                                break;
                            }
                            case 'ERROR_OCCURRED': {
                                console.log("Do something when experience fails to load");
                                break;
                            }
                        }
                    }
                };
                const embeddedGenerativeQnExperience = await embeddingContext.embedGenerativeQnA(frameOptions, contentOptions);
            };
        </script>
    </head>

    <body onload="embedGenerativeQnA()">
        <div id="experience-container"></div>
    </body>

</html>
```

Pour que cet exemple fonctionne, assurez-vous d'utiliser le SDK d'intégration Amazon Quick Sight pour charger l'expérience de questions-réponses générative intégrée sur votre site Web. JavaScript Pour obtenir votre copie, effectuez l’une des actions suivantes :
+ Téléchargez le SDK d'[intégration Amazon Quick Sight](https://github.com/awslabs/amazon-quicksight-embedding-sdk#step-3-create-the-quicksight-session-object) depuis. GitHub Ce référentiel est géré par un groupe de développeurs Amazon Quick Sight.
+ Téléchargez la dernière version du SDK d'intégration sur. [https://www.npmjs.com/package/amazon-quicksight-embedding-sdk](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk)
+ Si vous utilisez `npm` for JavaScript dependencies, téléchargez-le et installez-le en exécutant la commande suivante.

  ```
  npm install amazon-quicksight-embedding-sdk
  ```

### Fonctionnalités d’expérience générative de questions-réponses intégrées en option
<a name="embedded-analytics-gen-bi-authenticated-users-step-4"></a>

Les fonctionnalités facultatives suivantes sont disponibles pour l’expérience générative intégrée de questions-réponses à l’aide du kit SDK d’intégration. 

#### Invoquer des actions génératives dans la barre de recherche de questions
<a name="w2aac35c27c21c43c29b9c21b5"></a>
+ Définir une question — Cette fonctionnalité envoie une question à l’expérience de questions-réponses générative et interroge immédiatement la question.

  ```
  embeddedGenerativeQnExperience.setQuestion('show me monthly revenue');
  ```
+ Fermer le panneau de réponses (s’applique à l’option de barre de recherche générative de questions-réponses) — Cette fonctionnalité ferme le panneau de réponses et ramène l’iframe à l’état initial de la barre de recherche.

  ```
  embeddedGenerativeQnExperience.close();
  ```

Pour plus d'informations, consultez le [SDK d'intégration Amazon Quick Sight](https://github.com/awslabs/amazon-quicksight-embedding-sdk).

## Intégration d'Amazon Q dans une expérience de questions-réponses générative rapide pour les utilisateurs anonymes (non enregistrés)
<a name="embedded-analytics-gen-bi-anonymous-users"></a>


|  | 
| --- |
|    Public cible : développeurs Amazon Quick  | 

Dans les sections suivantes, vous trouverez des informations détaillées sur la configuration de l’expérience générative de questions-réponses intégrée pour les utilisateurs anonymes (non enregistrés).

**Topics**
+ [

### Étape 1 : Configurer des autorisations
](#embedded-analytics-gen-bi-anonymous-users-step-1)
+ [

### Étape 2 : Générer l’URL avec le code d’authentification en pièce jointe
](#embedded-analytics-gen-bi-anonymous-users-step-2)
+ [

### Étape 3 : Intégrer l’URL de l’expérience de questions-réponses générative
](#embedded-analytics-gen-bi-anonymous-users-step-3)
+ [

### Fonctionnalités d’expérience générative de questions-réponses intégrées en option
](#embedded-analytics-gen-bi-anonymous-users-step-4)

### Étape 1 : Configurer des autorisations
<a name="embedded-analytics-gen-bi-anonymous-users-step-1"></a>

Dans la section suivante, vous apprendrez à configurer les autorisations pour l’application backend ou le serveur web afin d’intégrer l’expérience générative de questions-réponses. Cette tâche nécessite un accès administratif à Gestion des identités et des accès AWS (IAM).

Chaque utilisateur qui accède à une expérience de questions-réponses générative assume un rôle qui lui confère un accès et des autorisations à Amazon Quick Sight. Pour que cela soit possible, créez un rôle IAM dans votre Compte AWS. Associez une politique IAM au rôle afin de fournir des autorisations à n’importe quel utilisateur qui assume ce rôle. Le rôle IAM doit fournir des autorisations pour récupérer l'intégration URLs pour un groupe d'utilisateurs spécifique. 

À l’aide du caractère générique *\$1*, vous pouvez accorder l’autorisation de générer une URL pour tous les utilisateurs d’un espace de noms spécifique. Vous pouvez également accorder des autorisations pour générer une URL pour un sous-ensemble d’utilisateurs dans des espaces de noms spécifiques. Pour cela, ajoutez `quicksight:GenerateEmbedUrlForAnonymousUser`.

Vous pouvez créer une condition dans votre politique IAM qui limite les domaines que les développeurs peuvent répertorier dans le paramètre `AllowedDomains` d’une opération d’API `GenerateEmbedUrlForAnonymousUser`. Le paramètre `AllowedDomains` est un paramètre facultatif. Il permet aux développeurs de remplacer les domaines statiques configurés dans le menu **Manage Amazon Quick Sight** et de répertorier jusqu'à trois domaines ou sous-domaines pouvant accéder à une URL générée. Cette URL est ensuite intégrée dans le site web d’un développeur. Seuls les domaines répertoriés dans le paramètre peuvent accéder à la barre de recherche Q intégrée. Sans cette condition, les développeurs peuvent répertorier n’importe quel domaine sur Internet dans le paramètre `AllowedDomains`. 

Pour limiter les domaines que les développeurs peuvent utiliser avec ce paramètre, ajoutez une condition `AllowedEmbeddingDomains` à votre politique IAM. Pour plus d'informations sur le `AllowedDomains` paramètre, consultez le [GenerateEmbedUrlForAnonymousUser](https://docs.aws.amazon.com//quicksight/latest/APIReference/API_GenerateEmbedUrlForAnonymousUser.html)manuel *Amazon Quick Sight API Reference*.

**Bonnes pratiques de sécurité pour les opérateurs de conditions IAM**  
Les opérateurs de conditions IAM mal configurés peuvent autoriser un accès non autorisé à vos ressources Quick intégrées par le biais de variations d'URL. Lorsque vous utilisez la clé de `quicksight:AllowedEmbeddingDomains` condition dans vos politiques IAM, utilisez des opérateurs de condition qui autorisent des domaines spécifiques ou refusent tous les domaines qui ne sont pas spécifiquement autorisés. Pour plus d'informations sur les opérateurs de condition IAM, voir [Éléments de politique IAM JSON : opérateurs de condition](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html) dans le guide de l'utilisateur IAM.  
De nombreuses variantes d'URL peuvent pointer vers la même ressource. Par exemple, les fichiers suivants ont URLs tous le même contenu :  
`https://example.com`
`https://example.com/`
`https://Example.com`
Si votre politique utilise des opérateurs qui ne tiennent pas compte de ces variations d'URL, un attaquant peut contourner vos restrictions en fournissant des variantes d'URL équivalentes.  
Vous devez vérifier que votre politique IAM utilise des opérateurs de condition appropriés pour empêcher le contournement des vulnérabilités et garantir que seuls les domaines auxquels vous souhaitez accéder peuvent accéder à vos ressources intégrées.

L’identité IAM de votre application doit avoir une politique d’approbation qui lui est associée afin d’autoriser l’accès au rôle que vous venez de créer. Cela signifie que lorsqu’un utilisateur accède à votre application, votre application peut assumer le rôle pour le compte de l’utilisateur afin d’ouvrir l’expérience générative de questions-réponses. Voici un exemple de politique d’approbation.

------
#### [ JSON ]

****  

```
{
"Version":"2012-10-17",		 	 	 
    "Statement": [
        {
"Sid": "AllowLambdaFunctionsToAssumeThisRole",
            "Effect": "Allow",
            "Principal": {
"Service": "lambda.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        },
        {
"Sid": "AllowEC2InstancesToAssumeThisRole",
            "Effect": "Allow",
            "Principal": {
"Service": "ec2.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

------

Pour plus d’informations sur les politiques d’approbation, consultez la rubrique [Informations d’identification de sécurité temporaires](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html) dans le *Guide de l’utilisateur IAM*.

### Étape 2 : Générer l’URL avec le code d’authentification en pièce jointe
<a name="embedded-analytics-gen-bi-anonymous-users-step-2"></a>

Dans la section suivante, vous découvrirez comment authentifier votre utilisateur et obtenir l’URL de rubrique Q 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. L'application ajoute ensuite l'utilisateur à Amazon Quick Sight, s'il n'existe pas déjà. Puis, elle transmet un identifiant comme ID de session de rôle unique. 

#### Java
<a name="embedded-analytics-gen-bi-anonymous-users-java"></a>

```
import java.util.List;
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.AWSCredentialsProvider;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.quicksight.AmazonQuickSight;
import com.amazonaws.services.quicksight.AmazonQuickSightClientBuilder;
import com.amazonaws.services.quicksight.model.AnonymousUserGenerativeQnAEmbeddingConfiguration;
import com.amazonaws.services.quicksight.model.AnonymousUserEmbeddingExperienceConfiguration;
import com.amazonaws.services.quicksight.model.GenerateEmbedUrlForAnonymousUserRequest;
import com.amazonaws.services.quicksight.model.GenerateEmbedUrlForAnonymousUserResult;
import com.amazonaws.services.quicksight.model.SessionTag;

/**
* Class to call QuickSight AWS SDK to generate embed url for anonymous user.
*/
public class GenerateEmbedUrlForAnonymousUserExample {

    private final AmazonQuickSight quickSightClient;

    public GenerateEmbedUrlForAnonymousUserExample() {
        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 GenerateEmbedUrlForAnonymousUser(
        final String accountId, // YOUR AWS ACCOUNT ID
        final String initialTopicId, // Q TOPIC ID TO WHICH THE CONSTRUCTED URL POINTS AND EXPERIENCE PREPOPULATES INITIALLY
        final String namespace, // ANONYMOUS EMBEDDING REQUIRES SPECIFYING A VALID NAMESPACE FOR WHICH YOU WANT THE EMBEDDING URL
        final List<String> authorizedResourceArns, // Q TOPIC ARN LIST TO EMBED
        final List<String> allowedDomains, // RUNTIME ALLOWED DOMAINS FOR EMBEDDING
        final List<SessionTag> sessionTags // SESSION TAGS USED FOR ROW-LEVEL SECURITY
    ) throws Exception {
        AnonymousUserEmbeddingExperienceConfiguration experienceConfiguration = new AnonymousUserEmbeddingExperienceConfiguration();
        AnonymousUserGenerativeQnAEmbeddingConfiguration generativeQnAConfiguration = new AnonymousUserGenerativeQnAEmbeddingConfiguration();
        generativeQnAConfiguration.setInitialTopicId(initialTopicId);
        experienceConfiguration.setGenerativeQnA(generativeQnAConfiguration);

        GenerateEmbedUrlForAnonymousUserRequest generateEmbedUrlForAnonymousUserRequest = new GenerateEmbedUrlForAnonymousUserRequest()
            .withAwsAccountId(accountId)
            .withNamespace(namespace)
            .withAuthorizedResourceArns(authorizedResourceArns)
            .withExperienceConfiguration(experienceConfiguration)
            .withSessionTags(sessionTags)
            .withSessionLifetimeInMinutes(600L); // OPTIONAL: VALUE CAN BE [15-600]. DEFAULT: 600
            .withAllowedDomains(allowedDomains);

        GenerateEmbedUrlForAnonymousUserResult result = quickSightClient.generateEmbedUrlForAnonymousUser(generateEmbedUrlForAnonymousUserRequest);

        return result.getEmbedUrl();
    }

}
```

#### JavaScript
<a name="embedded-analytics-gen-bi-anonymous-users-js"></a>

**Note**  
La génération d'URL d'intégration APIs ne peut pas être appelée directement depuis les navigateurs. Reportez-vous plutôt à l’exemple Node.JS.

#### Python3
<a name="embedded-analytics-gen-bi-anonymous-users-py"></a>

```
import json
import boto3
from botocore.exceptions import ClientError
import time

# Create QuickSight and STS clients
quicksightClient = boto3.client('quicksight',region_name='us-west-2')
sts = boto3.client('sts')

# Function to generate embedded URL for anonymous user
# accountId: YOUR AWS ACCOUNT ID
# topicId: Topic ID to embed
# quicksightNamespace: VALID NAMESPACE WHERE YOU WANT TO DO NOAUTH EMBEDDING
# authorizedResourceArns: TOPIC ARN LIST TO EMBED
# allowedDomains: RUNTIME ALLOWED DOMAINS FOR EMBEDDING
# sessionTags: SESSION TAGS USED FOR ROW-LEVEL SECURITY
def generateEmbedUrlForAnonymousUser(accountId, quicksightNamespace, authorizedResourceArns, allowedDomains, sessionTags):
    try:
        response = quicksightClient.generate_embed_url_for_anonymous_user(
            AwsAccountId = accountId,
            Namespace = quicksightNamespace,
            AuthorizedResourceArns = authorizedResourceArns,
            AllowedDomains = allowedDomains,
            ExperienceConfiguration = {
                'GenerativeQnA': {
                        'InitialTopicId': topicId
                    }
            },
            SessionTags = sessionTags,
            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
<a name="embedded-analytics-gen-bi-anonymous-users-node"></a>

L'exemple suivant montre le JavaScript (Node.js) que vous pouvez utiliser sur le serveur d'applications pour générer l'URL du tableau de bord intégré. Vous pouvez utiliser cette URL dans votre site Web ou votre application pour afficher le tableau de bord. 

**Example**  

```
const AWS = require('aws-sdk');
const https = require('https');

var quicksightClient = new AWS.Service({
    region: 'us-east-1',
});

quicksightClient.generateEmbedUrlForAnonymousUser({
    'AwsAccountId': '111122223333',
    'Namespace': 'DEFAULT'
    'AuthorizedResourceArns': '["topic-arn-topicId1","topic-arn-topicId2"]',
    'AllowedDomains': allowedDomains,
    'ExperienceConfiguration': { 
        'GenerativeQnA': {
            'InitialTopicId': 'U4zJMVZ2n2stZflc8Ou3iKySEb3BEV6f'
        }
    },
    'SessionTags': '["Key": tag-key-1,"Value": tag-value-1,{"Key": tag-key-1,"Value": tag-value-1}]',
    'SessionLifetimeInMinutes': 15
}, function(err, data) {
    console.log('Errors: ');
    console.log(err);
    console.log('Response: ');
    console.log(data);
});
```

#### .NET/C\$1
<a name="embedded-analytics-gen-bi-anonymous-users-cs"></a>

L’exemple suivant montre le code .NET/C \$1 que vous pouvez utiliser sur le serveur d’applications afin de générer l’URL pour la barre de recherche Q intégrée. Vous pouvez utiliser cette URL dans votre site web ou votre application pour afficher la barre de recherche Q. 

**Example**  

```
using System;
using Amazon.QuickSight;
using Amazon.QuickSight.Model;

namespace GenerateGenerativeQnAEmbedUrlForAnonymousUser
{
    class Program
    {
        static void Main(string[] args)
        {
            var quicksightClient = new AmazonQuickSightClient(
                AccessKey,
                SecretAccessKey,
                SessionToken,
                Amazon.RegionEndpoint.USEast1);
            try
            {
                AnonymousUserGenerativeQnAEmbeddingConfiguration anonymousUserGenerativeQnAEmbeddingConfiguration
                    = new AnonymousUserGenerativeQnAEmbeddingConfiguration
                    {
                        InitialTopicId = "U4zJMVZ2n2stZflc8Ou3iKySEb3BEV6f"
                    };
                AnonymousUserEmbeddingExperienceConfiguration anonymousUserEmbeddingExperienceConfiguration
                    = new AnonymousUserEmbeddingExperienceConfiguration
                    {
                        GenerativeQnA = anonymousUserGenerativeQnAEmbeddingConfiguration
                    }; 
                
                Console.WriteLine(
                    quicksightClient.GenerateEmbedUrlForAnonymousUserAsync(new GenerateEmbedUrlForAnonymousUserRequest
                    {
                        AwsAccountId = "111122223333",
                        Namespace = "DEFAULT",
                        AuthorizedResourceArns '["topic-arn-topicId1","topic-arn-topicId2"]',
                        AllowedDomains = allowedDomains,
                        ExperienceConfiguration = anonymousUserEmbeddingExperienceConfiguration,
                        SessionTags = '["Key": tag-key-1,"Value": tag-value-1,{"Key": tag-key-1,"Value": tag-value-1}]',
                        SessionLifetimeInMinutes = 15,
                    }).Result.EmbedUrl
                );
            } catch (Exception ex) {
                Console.WriteLine(ex.Message);
            }
        }
    }
}
```

#### AWS CLI
<a name="embedded-analytics-gen-bi-anonymous-users-cli"></a>

Pour assumer ce rôle, choisissez l'une des opérations d'API AWS Security Token Service (AWS STS) suivantes :
+ [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)— Utilisez cette opération lorsque vous utilisez une identité IAM pour assumer le rôle.
+ [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html)— Utilisez cette opération lorsque vous utilisez un fournisseur d'identité Web pour authentifier votre utilisateur. 
+ [AssumeRoleWithSaml](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html)— 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:GenerateEmbedUrlForAnonymousUser`.

```
aws sts assume-role \
     --role-arn "arn:aws:iam::111122223333:role/embedding_quicksight_generative_qna_role" \
     --role-session-name anonymous caller
```

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ération `AssumeRole`, ceci est probablement dû au fait que le précédent `SESSION TOKEN` est encore dans les variables de l’environnement. Pour l’effacer, définissez les variables suivantes :  
*AWS\$1ACCESS\$1KEY\$1ID* 
*AWS\$1SECRET\$1CLÉ D'ACCÈS* 
*AWS\$1SESSION\$1JETON* 

L’exemple suivant montre comment définir ces trois paramètres dans l’interface de ligne de commande. Pour une machine Microsoft Windows, utilisez `set` au lieu de `export`.

```
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_q_search_bar_role/QuickSightEmbeddingAnonymousPolicy`. L’ID de session de rôle se compose du nom de rôle issu du `role-arn` et de la valeur `role-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. Le *throttling* est une fonctionnalité de sécurité qui empêche le même utilisateur d'accéder à Amazon Quick Sight depuis plusieurs sites. De plus, cela permet également de garder chaque session séparée et distincte. Si vous utilisez un ensemble de serveurs web, par exemple pour l’équilibrage de charge, et qu’une session est reconnectée à un autre serveur, une nouvelle session démarre.

Pour obtenir une URL signée pour le tableau de bord, appelez `generate-embed-url-for-anynymous-user` à partir du serveur d’applications. Ceci renvoie l’URL du tableau de bord intégrable. L’exemple suivant montre comment générer l’URL d’un tableau de bord intégré à l’aide d’un appel côté serveur pour les utilisateurs qui effectuent des visites anonymes sur votre portail web ou votre application.

```
aws quicksight generate-embed-url-for-anonymous-user \
--aws-account-id 111122223333 \
--namespace default-or-something-else \
--authorized-resource-arns '["topic-arn-topicId","topic-arn-topicId2"]' \
--allowed-domains '["domain1","domain2"]' \
--experience-configuration 'GenerativeQnA={InitialTopicId="topicId1"}' \
--session-tags '["Key": tag-key-1,"Value": tag-value-1,{"Key": tag-key-1,"Value": tag-value-1}]' \
--session-lifetime-in-minutes 15
```

Pour plus d’informations sur l’utilisation de cette opération, consultez [https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForAnonymousUser.html](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForAnonymousUser.html). Vous pouvez utiliser cette opération et d’autres opérations d’API dans votre propre code.

### Étape 3 : Intégrer l’URL de l’expérience de questions-réponses générative
<a name="embedded-analytics-gen-bi-anonymous-users-step-3"></a>

Dans la section suivante, vous découvrirez comment intégrer l’URL de l’expérience générative de questions-réponses sur votre site web ou sur votre page d’application. Pour ce faire, utilisez le [SDK d'intégration Amazon Quick Sight](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk) ()JavaScript. Le kit SDK vous permet d’effectuer les opérations suivantes : 
+ Placer l’expérience de questions-réponses générative sur une page HTML.
+ Personnalisez la mise en page et l’apparence de l’expérience intégrée en fonction des besoins de votre application.
+ Gérer les états d’erreurs avec des messages personnalisés pour votre application.

Pour générer l’URL que vous pouvez intégrer dans votre application, appelez l’opération d’API `GenerateEmbedUrlForAnonymousUser`. Cette URL est valable pendant 5 minutes et la session qui en résulte est valide jusqu’à 10 heures. L’opération d’API fournit l’URL avec une valeur `auth_code` qui permet une session à connexion unique. 

Voici un exemple de réponse de `generate-embed-url-for-anonymous-user`.

```
//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://quicksightdomain/embedding/12345/q/search...",
     "RequestId": "7bee030e-f191-45c4-97fe-d9faf0e03713"
}
```

Intégrez l'expérience de questions-réponses générative à votre page Web à l'aide du [SDK d'intégration Amazon Quick Sight](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk) ou en ajoutant cette URL dans un iframe. Si vous définissez une hauteur et une largeur fixes (en pixels), Amazon Quick Sight les utilise et ne modifie pas votre visuel lorsque votre fenêtre est redimensionnée. Si vous définissez un pourcentage relatif de hauteur et de largeur, Amazon Quick Sight fournit une mise en page réactive qui est modifiée en fonction de l'évolution de la taille de votre fenêtre. 

Assurez-vous que le domaine qui hébergera l'expérience Generative Q&R figure sur la *liste des domaines autorisés*, c'est-à-dire la liste des domaines approuvés pour votre abonnement Amazon Quick Sight. Cette exigence protège vos données en empêchant les domaines non approuvés d’héberger l’expérience générative de questions-réponses. Pour plus d’informations sur l’ajout de domaines pour une expérience générative de questions-réponses intégrée, consultez la rubrique [Gestion des domaines](manage-domains.md).

Vous pouvez utiliser le SDK d'intégration Amazon Quick Sight pour personnaliser la mise en page et l'apparence de l'expérience de questions-réponses générative intégrée en fonction de votre application. Utilisez la propriété `panelType` pour configurer l’état d’arrivée de l’expérience de questions-réponses générative lors de son affichage dans votre application. Définissez la propriété `panelType` sur `'FULL'` pour afficher l’intégralité du panneau d’expérience Generative Q&R. Ce panneau ressemble à l'expérience des utilisateurs d'Amazon Quick Sight dans la console Amazon Quick Sight. La hauteur du cadre du panneau n’est pas modifiée en fonction de l’interaction de l’utilisateur et respecte la valeur que vous avez définie dans la propriété `frameOptions.height`. L’image ci-dessous montre le panneau d’expérience générative de questions-réponses qui s’affiche lorsque vous définissez la valeur `panelType` sur `'FULL'`.

Définissez la propriété `panelType` sur `'SEARCH_BAR'` pour afficher l’expérience de questions-réponses générative sous forme de barre de recherche. Cette barre de recherche ressemble au rendu de la barre de recherche Q lorsqu’elle est intégrée à une application. La barre de recherche générative de questions-réponses s’étend à un panneau plus grand qui affiche les options de sélection de sujets, la liste de suggestions de questions, le panneau de réponses ou le tableau d’affichage.

La hauteur minimale par défaut de la barre de recherche Generative Q&R est affichée lorsque l’actif intégré est chargé. Il est recommandé de définir la valeur `frameOptions.height` sur `"38px"` pour optimiser l’expérience de la barre de recherche. Utilisez cette propriété `focusedHeight` pour définir la taille optimale de la liste déroulante de sélection des sujets et de la liste de suggestions de questions. Utilisez cette propriété `expandedHeight` pour définir la taille optimale du panneau de réponses et du tableau d’affichage. Si vous choisissez cette option `'SEARCH_BAR'`, il est recommandé de définir le style du conteneur parent en utilisant la position ; absolu pour éviter tout déplacement de contenu indésirable dans votre application. L’image ci-dessous montre la barre de recherche de l’expérience Generative Q&R qui s’affiche lorsque vous définissez la valeur `panelType` sur `'SEARCH_BAR'`.

Après avoir configuré la `panelType` propriété, utilisez le SDK d'intégration Amazon Quick Sight pour personnaliser les propriétés suivantes de l'expérience de questions-réponses générative.
+ Titre du panneau génératif de questions-réponses (s’applique uniquement à l’option `panelType: FULL`). 
+ Le texte de remplacement de la barre de recherche.
+ Si la sélection de sujets est autorisée.
+ Indique si les noms des rubriques sont affichés ou masqués.
+ Indique si l’icône Amazon Q est affichée ou masquée (s’applique uniquement à l’option `panelType: FULL`).
+ Indique si le tableau d’affichage est affiché ou masqué.
+ Si les utilisateurs peuvent optimiser le panneau génératif de questions-réponses en plein écran.
+ Le thème du panneau génératif de questions-réponses. Un ARN de thème personnalisé peut être transmis au SDK pour modifier l’apparence du contenu du cadre. Les thèmes de démarrage Amazon Quick Sight ne sont pas pris en charge pour les panneaux Generative BI intégrés. Pour utiliser un thème de démarrage Amazon Quick Sight, enregistrez-le en tant que thème personnalisé dans Amazon Quick Sight.

Lorsque vous utilisez le SDK d'intégration Amazon Quick Sight, l'expérience de questions-réponses générative de votre page est redimensionnée dynamiquement en fonction de l'état. Avec le SDK Amazon Quick Sight Embedding, vous pouvez également contrôler les paramètres de l'expérience Generative Q&R et recevoir des rappels en termes de fin de chargement de page, de changements d'état et d'erreurs. 

L’exemple suivant montre comment utiliser l’URL générée. Ce code est généré sur votre serveur d’applications.

#### SDK 2.0
<a name="embedded-analytics-gen-bi-anonymous-users-sdkv2"></a>

```
<!DOCTYPE html>
<html>
    <head>
        <title>Generative Q&A Embedding Example</title>
        <script src="https://unpkg.com/amazon-quicksight-embedding-sdk@2.7.0/dist/quicksight-embedding-js-sdk.min.js"></script>
        <script type="text/javascript">
            const embedGenerativeQnA = async() => {    
                const {createEmbeddingContext} = QuickSightEmbedding;

                const embeddingContext = await createEmbeddingContext({
                    onChange: (changeEvent, metadata) => {
                        console.log('Context received a change', changeEvent, metadata);
                    },
                });

                const frameOptions = {
                    url: "<YOUR_EMBED_URL>", // replace this value with the url generated via embedding API
                    container: '#experience-container',
                    height: "700px",
                    width: "1000px",
                    onChange: (changeEvent, metadata) => {
                        switch (changeEvent.eventName) {
                            case 'FRAME_MOUNTED': {
                                console.log("Do something when the experience frame is mounted.");
                                break;
                            }
                            case 'FRAME_LOADED': {
                                console.log("Do something when the experience frame is loaded.");
                                break;
                            }
                        }
                    },
                };

                const contentOptions = {
                    // Optional panel settings. Default behavior is equivalent to {panelType: 'FULL'}
                    panelOptions: {
                        panelType: 'FULL',
                        title: 'custom title', // Optional
                        showQIcon: false, // Optional, Default: true
                    },
                    // Use SEARCH_BAR panel type for the landing state to be similar to embedQSearchBar
                    // with generative capability enabled topics
                    /*
                    panelOptions: {
                        panelType: 'SEARCH_BAR',
                        focusedHeight: '250px',
                        expandedHeight: '500px',
                    },
                    */
                    showTopicName: false, // Optional, Default: true
                    showPinboard: false, // Optional, Default: true
                    allowTopicSelection: false, // Optional, Default: true
                    allowFullscreen: false, // Optional, Default: true
                    searchPlaceholderText: "custom search placeholder", // Optional
                    themeOptions: { // Optional
                        themeArn: 'arn:aws:quicksight:<Region>:<AWS-Account-ID>:theme/<Theme-ID>'
                    }
                    onMessage: async (messageEvent, experienceMetadata) => {
                        switch (messageEvent.eventName) {
                            case 'Q_SEARCH_OPENED': {
                                // called when pinboard is shown / visuals are rendered
                                console.log("Do something when SEARCH_BAR type panel is expanded");
                                break;
                            }
                            case 'Q_SEARCH_FOCUSED': {
                                // called when question suggestions or topic selection dropdown are shown
                                console.log("Do something when SEARCH_BAR type panel is focused");
                                break;
                            }
                            case 'Q_SEARCH_CLOSED': {
                                // called when shrinked to initial bar height
                                console.log("Do something when SEARCH_BAR type panel is collapsed");
                                break;
                            }
                            case 'Q_PANEL_ENTERED_FULLSCREEN': {
                                console.log("Do something when panel enters full screen mode");
                                break;
                            }
                            case 'Q_PANEL_EXITED_FULLSCREEN': {
                                console.log("Do something when panel exits full screen mode");
                                break;
                            }
                            case 'CONTENT_LOADED': {
                                console.log("Do something after experience is loaded");
                                break;
                            }
                            case 'ERROR_OCCURRED': {
                                console.log("Do something when experience fails to load");
                                break;
                            }
                        }
                    }
                };
                const embeddedGenerativeQnExperience = await embeddingContext.embedGenerativeQnA(frameOptions, contentOptions);
            };
        </script>
    </head>

    <body onload="embedGenerativeQnA()">
        <div id="experience-container"></div>
    </body>

</html>
```

Pour que cet exemple fonctionne, assurez-vous d'utiliser le SDK d'intégration Amazon Quick Sight pour charger l'expérience de questions-réponses générative intégrée sur votre site Web. JavaScript Pour obtenir votre copie, effectuez l’une des actions suivantes :
+ Téléchargez le SDK d'[intégration Amazon Quick Sight](https://github.com/awslabs/amazon-quicksight-embedding-sdk#step-3-create-the-quicksight-session-object) depuis. GitHub Ce référentiel est géré par un groupe de développeurs Amazon Quick Sight.
+ Téléchargez la dernière version du SDK d'intégration sur. [https://www.npmjs.com/package/amazon-quicksight-embedding-sdk](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk)
+ Si vous utilisez `npm` for JavaScript dependencies, téléchargez-le et installez-le en exécutant la commande suivante.

  ```
  npm install amazon-quicksight-embedding-sdk
  ```

### Fonctionnalités d’expérience générative de questions-réponses intégrées en option
<a name="embedded-analytics-gen-bi-anonymous-users-step-4"></a>

Les fonctionnalités facultatives suivantes sont disponibles pour l’expérience générative intégrée de questions-réponses à l’aide du kit SDK d’intégration. 

#### Invoquer des actions génératives dans la barre de recherche de questions
<a name="w2aac35c27c21c43c29c13c25b5"></a>
+ Définir une question — Cette fonctionnalité envoie une question à l’expérience de questions-réponses générative et interroge immédiatement la question.

  ```
  embeddedGenerativeQnExperience.setQuestion('show me monthly revenue');
  ```
+ Fermer le panneau de réponses (s’applique à l’option de barre de recherche générative de questions-réponses) — Cette fonctionnalité ferme le panneau de réponses et ramène l’iframe à l’état initial de la barre de recherche.

  ```
  embeddedGenerativeQnExperience.close();
  ```

Pour plus d'informations, consultez le [SDK d'intégration Amazon Quick Sight](https://github.com/awslabs/amazon-quicksight-embedding-sdk).

# Intégration de la barre de recherche Amazon Quick Sight Q (classique)
<a name="embedding-quicksight-q"></a>


|  | 
| --- |
|    Public cible : développeurs Amazon Quick  | 

**Note**  
La barre de recherche intégrée d'Amazon Quick Sight Q fournit l'expérience de questions-réponses classique d'Amazon Quick Sight. Amazon Quick Sight s'intègre à Amazon Q Business pour lancer une nouvelle expérience générative de questions-réponses. Il est recommandé aux développeurs d’utiliser la nouvelle expérience de questions-réponses génératives. Pour plus d'informations sur l'expérience de questions-réponses générative intégrée, consultez [Intégrer l'expérience Amazon Q dans l'expérience de questions-réponses générative Amazon Quick Sight](https://docs.aws.amazon.com/quicksight/latest/user/embedding-gen-bi.html).

Consultez les rubriques suivantes pour en savoir plus sur l'intégration de la barre de recherche Amazon Quick Sight Q à Amazon Quick Sight APIs.

**Topics**
+ [

# Intégration de la barre de recherche Amazon Quick Sight Q pour les utilisateurs enregistrés
](embedded-analytics-q-search-bar-for-authenticated-users.md)
+ [

# Intégration de la barre de recherche Amazon Quick Sight Q pour les utilisateurs anonymes (non enregistrés)
](embedded-analytics-q-search-bar-for-anonymous-users.md)

# Intégration de la barre de recherche Amazon Quick Sight Q pour les utilisateurs enregistrés
<a name="embedded-analytics-q-search-bar-for-authenticated-users"></a>


|  | 
| --- |
|  S’applique à : édition Enterprise  | 


|  | 
| --- |
|    Public cible : développeurs Amazon Quick  | 

**Note**  
La barre de recherche intégrée d'Amazon Quick Sight Q fournit l'expérience de questions-réponses classique d'Amazon Quick Sight. Amazon Quick Sight s'intègre à Amazon Q Business pour lancer une nouvelle expérience générative de questions-réponses. Il est recommandé aux développeurs d’utiliser la nouvelle expérience de questions-réponses génératives. Pour plus d'informations sur l'expérience de questions-réponses générative intégrée, consultez [Intégrer l'expérience Amazon Q dans l'expérience de questions-réponses générative Amazon Quick Sight](https://docs.aws.amazon.com/quicksight/latest/user/embedding-gen-bi.html).

Dans les sections suivantes, vous trouverez des informations détaillées sur la façon de configurer une barre de recherche Amazon Quick Sight Q intégrée pour les utilisateurs enregistrés d'Amazon Quick Sight.

**Topics**
+ [

## Étape 1 : Configurer des autorisations
](#embedded-q-bar-for-authenticated-users-step-1)
+ [

## Étape 2 : Générer l’URL avec le code d’authentification en pièce jointe
](#embedded-q-bar-for-authenticated-users-step-2)
+ [

## Étape 3 : Intégrer l’URL de la barre de recherche Q
](#embedded-q-bar-for-authenticated-users-step-3)
+ [

## Fonctionnalités d'intégration de la barre de recherche Amazon Quick Sight Q en option
](#embedded-q-bar-for-authenticated-users-step-4)

## Étape 1 : Configurer des autorisations
<a name="embedded-q-bar-for-authenticated-users-step-1"></a>

**Note**  
La barre de recherche intégrée d'Amazon Quick Sight Q fournit l'expérience de questions-réponses classique d'Amazon Quick Sight. Amazon Quick Sight s'intègre à Amazon Q Business pour lancer une nouvelle expérience générative de questions-réponses. Il est recommandé aux développeurs d’utiliser la nouvelle expérience de questions-réponses génératives. Pour plus d'informations sur l'expérience de questions-réponses générative intégrée, consultez [Intégrer l'expérience Amazon Q dans l'expérience de questions-réponses générative Amazon Quick Sight](https://docs.aws.amazon.com/quicksight/latest/user/embedding-gen-bi.html).

Dans la section suivante, vous apprendrez à configurer les autorisations pour l’application backend ou le serveur web afin d’intégrer la barre de recherche Q. Cette tâche nécessite un accès administratif à Gestion des identités et des accès AWS (IAM).

Chaque utilisateur qui accède à un tableau de bord assume un rôle qui lui permet d'accéder à Amazon Quick Sight et d'accéder au tableau de bord. Pour que cela soit possible, créez un rôle IAM dans votre Compte AWS. Associez une politique IAM au rôle afin de fournir des autorisations à n’importe quel utilisateur qui assume ce rôle. Le rôle IAM doit fournir des autorisations pour récupérer l'intégration URLs pour un groupe d'utilisateurs spécifique. 

À l’aide du caractère générique *\$1*, vous pouvez accorder l’autorisation de générer une URL pour tous les utilisateurs d’un espace de noms spécifique. Vous pouvez également accorder des autorisations pour générer une URL pour un sous-ensemble d’utilisateurs dans des espaces de noms spécifiques. Pour cela, ajoutez `quicksight:GenerateEmbedUrlForRegisteredUser`.

Vous pouvez créer une condition dans votre politique IAM qui limite les domaines que les développeurs peuvent répertorier dans le paramètre `AllowedDomains` d’une opération d’API `GenerateEmbedUrlForRegisteredUser`. Le paramètre `AllowedDomains` est un paramètre facultatif. Il permet aux développeurs de remplacer les domaines statiques configurés dans le menu **Manage Amazon Quick Sight** et de répertorier jusqu'à trois domaines ou sous-domaines pouvant accéder à une URL générée. Cette URL est ensuite intégrée dans le site web d’un développeur. Seuls les domaines répertoriés dans le paramètre peuvent accéder à la barre de recherche Q intégrée. Sans cette condition, les développeurs peuvent répertorier n’importe quel domaine sur Internet dans le paramètre `AllowedDomains`. 

Pour limiter les domaines que les développeurs peuvent utiliser avec ce paramètre, ajoutez une condition `AllowedEmbeddingDomains` à votre politique IAM. Pour plus d'informations sur le `AllowedDomains` paramètre, consultez le [GenerateEmbedUrlForRegisteredUser](https://docs.aws.amazon.com//quicksight/latest/APIReference/API_GenerateEmbedUrlForRegisteredUser.html)manuel *Amazon Quick Sight API Reference*.

**Bonnes pratiques de sécurité pour les opérateurs de conditions IAM**  
Les opérateurs de conditions IAM mal configurés peuvent autoriser un accès non autorisé à vos ressources Quick intégrées par le biais de variations d'URL. Lorsque vous utilisez la clé de `quicksight:AllowedEmbeddingDomains` condition dans vos politiques IAM, utilisez des opérateurs de condition qui autorisent des domaines spécifiques ou refusent tous les domaines qui ne sont pas spécifiquement autorisés. Pour plus d'informations sur les opérateurs de condition IAM, voir [Éléments de politique IAM JSON : opérateurs de condition](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html) dans le guide de l'utilisateur IAM.  
De nombreuses variantes d'URL peuvent pointer vers la même ressource. Par exemple, les fichiers suivants ont URLs tous le même contenu :  
`https://example.com`
`https://example.com/`
`https://Example.com`
Si votre politique utilise des opérateurs qui ne tiennent pas compte de ces variations d'URL, un attaquant peut contourner vos restrictions en fournissant des variantes d'URL équivalentes.  
Vous devez vérifier que votre politique IAM utilise des opérateurs de condition appropriés pour empêcher le contournement des vulnérabilités et garantir que seuls les domaines auxquels vous souhaitez accéder peuvent accéder à vos ressources intégrées.

L’exemple de stratégie suivant fournit ces autorisations.

De plus, si vous créez pour la première fois des utilisateurs qui seront des lecteurs d'Amazon Quick Sight, assurez-vous d'ajouter l'`quicksight:RegisterUser`autorisation dans la politique.

L'exemple de politique suivant autorise les nouveaux utilisateurs qui souhaitent lire Amazon Quick Sight à récupérer une URL d'intégration.

Enfin, l’identité IAM de votre application doit avoir une politique d’approbation qui lui est associée afin d’autoriser l’accès au rôle que vous venez de créer. Cela signifie que lorsqu'un utilisateur accède à votre application, celle-ci peut assumer le rôle en son nom et configurer l'utilisateur dans Amazon Quick Sight. 

Voici un exemple de politique d’approbation.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowLambdaFunctionsToAssumeThisRole",
            "Effect": "Allow",
            "Principal": {
                "Service": "lambda.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        },
        {
            "Sid": "AllowEC2InstancesToAssumeThisRole",
            "Effect": "Allow",
            "Principal": {
                "Service": "ec2.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

------

Pour plus d’informations sur les politiques d’approbation pour OpenId Connect ou l’authentification Security Assertion Markup Language (SAML), consultez les sections suivantes du *Guide de l’utilisateur IAM :*
+ [Création d’un rôle pour l’identité web ou pour la fédération OpenID Connect (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_oidc.html)
+ [Création d’un rôle pour la fédération SAML 2.0 (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_saml.html)

## Étape 2 : Générer l’URL avec le code d’authentification en pièce jointe
<a name="embedded-q-bar-for-authenticated-users-step-2"></a>

**Note**  
La barre de recherche intégrée d'Amazon Quick Sight Q fournit l'expérience de questions-réponses classique d'Amazon Quick Sight. Amazon Quick Sight s'intègre à Amazon Q Business pour lancer une nouvelle expérience générative de questions-réponses. Il est recommandé aux développeurs d’utiliser la nouvelle expérience de questions-réponses génératives. Pour plus d'informations sur l'expérience de questions-réponses générative intégrée, consultez [Intégrer l'expérience Amazon Q dans l'expérience de questions-réponses générative Amazon Quick Sight](https://docs.aws.amazon.com/quicksight/latest/user/embedding-gen-bi.html).

Dans la section suivante, vous découvrirez comment authentifier votre utilisateur et obtenir l’URL de rubrique Q intégrable sur votre serveur d’applications. Si vous envisagez d'intégrer la barre Q pour les types d'identité IAM ou Amazon Quick Sight, partagez la rubrique Q avec les utilisateurs.

Lorsqu’un utilisateur accède à votre application, l’application assume le rôle IAM pour le compte de l’utilisateur. L'application ajoute ensuite l'utilisateur à Amazon Quick Sight, 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 lecteur du sujet Q est approvisionné de manière unique dans Amazon Quick Sight. 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
<a name="embedded-q-bar-for-embedded-q-bar-for-authenticated-users-java"></a>

```
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.GenerateEmbedUrlForRegisteredUserRequest;
import com.amazonaws.services.quicksight.model.GenerateEmbedUrlForRegisteredUserResult;
import com.amazonaws.services.quicksight.model.RegisteredUserEmbeddingExperienceConfiguration;
import com.amazonaws.services.quicksight.model.RegisteredUserQSearchBarEmbeddingConfiguration;

        /**
 * Class to call QuickSight AWS SDK to get url for embedding the Q search bar.
        */
public class RegisteredUserQSearchBarEmbeddingConfiguration {

            private final AmazonQuickSight quickSightClient;

    public RegisteredUserQSearchBarEmbeddingConfiguration() {
        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, // AWS Account ID
            final String topicId, // Topic ID to embed
            final List<String> allowedDomains, // Runtime allowed domain for embedding
            final String userArn // Registered user arn to use for embedding. Refer to Get Embed Url section in developer portal to find how to get user arn for a QuickSight user.
            ) throws Exception {
        final RegisteredUserEmbeddingExperienceConfiguration experienceConfiguration = new RegisteredUserEmbeddingExperienceConfiguration()
                .withQSearchBar(new RegisteredUserQSearchBarEmbeddingConfiguration().withInitialTopicId(topicId));
        final GenerateEmbedUrlForRegisteredUserRequest generateEmbedUrlForRegisteredUserRequest = new GenerateEmbedUrlForRegisteredUserRequest();
        generateEmbedUrlForRegisteredUserRequest.setAwsAccountId(accountId);
        generateEmbedUrlForRegisteredUserRequest.setUserArn(userArn);
        generateEmbedUrlForRegisteredUserRequest.setAllowedDomains(allowedDomains);
        generateEmbedUrlForRegisteredUserRequest.setExperienceConfiguration(QSearchBar);

        final GenerateEmbedUrlForRegisteredUserResult generateEmbedUrlForRegisteredUserResult = quickSightClient.generateEmbedUrlForRegisteredUser(generateEmbedUrlForRegisteredUserRequest);

        return generateEmbedUrlForRegisteredUserResult.getEmbedUrl();
            }
        }
```

### JavaScript
<a name="embedded-q-bar-for-embedded-q-bar-for-authenticated-users-js"></a>

```
global.fetch = require('node-fetch');
const AWS = require('aws-sdk');

function generateEmbedUrlForRegisteredUser(
    accountId,
    topicId, // Topic ID to embed
    openIdToken, // Cognito-based token
    userArn, // registered user arn
    roleArn, // IAM user role to use for embedding
    sessionName, // Session name for the roleArn assume role
    allowedDomains, // Runtime allowed domain for embedding
    getEmbedUrlCallback, // GetEmbedUrl success callback method
    errorCallback // GetEmbedUrl error callback method
    ) {
    const stsClient = new AWS.STS();
    let stsParams = {
        RoleSessionName: sessionName,
        WebIdentityToken: openIdToken,
        RoleArn: roleArn
        }
    
    stsClient.assumeRoleWithWebIdentity(stsParams, function(err, data) {
        if (err) {
            console.log('Error assuming role');
            console.log(err, err.stack);
            errorCallback(err);
        } else {
            const getQSearchBarParams = {
        "AwsAccountId": accountId,
                "ExperienceConfiguration": {
                    "QSearchBar": {
                        "InitialTopicId": topicId
                    }
                },
                "UserArn": userArn,
        "AllowedDomains": allowedDomains,
        "SessionLifetimeInMinutes": 600
    };

            const quicksightGetQSearchBar = new AWS.QuickSight({
        region: process.env.AWS_REGION,
                credentials: {
                    accessKeyId: data.Credentials.AccessKeyId,
                    secretAccessKey: data.Credentials.SecretAccessKey,
                    sessionToken: data.Credentials.SessionToken,
                    expiration: data.Credentials.Expiration
                }
    });

            quicksightGetQSearchBar.generateEmbedUrlForRegisteredUser(getQSearchBarParams, 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
<a name="embedded-q-bar-for-embedded-q-bar-for-authenticated-users-python"></a>

```
import json
import boto3
from botocore.exceptions import ClientError

sts = boto3.client('sts')

# Function to generate embedded URL  
# accountId: AWS account ID
# topicId: Topic ID to embed
# userArn: arn of registered user
# allowedDomains: Runtime allowed domain for embedding
# roleArn: IAM user role to use for embedding
# sessionName: session name for the roleArn assume role
def getEmbeddingURL(accountId, topicId, userArn, allowedDomains, roleArn, sessionName):
    try:
        assumedRole = sts.assume_role(
            RoleArn = roleArn,
            RoleSessionName = sessionName,
        )
    except ClientError as e:
        return "Error assuming role: " + str(e)
    else: 
        assumedRoleSession = boto3.Session(
            aws_access_key_id = assumedRole['Credentials']['AccessKeyId'],
            aws_secret_access_key = assumedRole['Credentials']['SecretAccessKey'],
            aws_session_token = assumedRole['Credentials']['SessionToken'],
        )
        try:
            quicksightClient = assumedRoleSession.client('quicksight', region_name='us-west-2')
            response = quicksightClient.generate_embed_url_for_registered_user(
                AwsAccountId=accountId,
                ExperienceConfiguration = {
                    "QSearchBar": {
                        "InitialTopicId": topicId
                    }
                },
                UserArn = userArn,
                AllowedDomains = allowedDomains,
                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:
            return "Error generating embedding url: " + str(e)
```

### Node.js
<a name="embedded-q-bar-for-embedded-q-bar-for-authenticated-users-node"></a>

L'exemple suivant montre le JavaScript (Node.js) que vous pouvez utiliser sur le serveur d'applications pour générer l'URL du tableau de bord intégré. Vous pouvez utiliser cette URL dans votre site Web ou votre application pour afficher le tableau de bord. 

**Example**  

```
const AWS = require('aws-sdk');
const https = require('https');

var quicksightClient = new AWS.Service({
    apiConfig: require('./quicksight-2018-04-01.min.json'),
    region: 'us-east-1',
});

quicksightClient.generateEmbedUrlForRegisteredUser({
    'AwsAccountId': '111122223333',
    'ExperienceConfiguration': { 
        'QSearchBar': {
            'InitialTopicId': 'U4zJMVZ2n2stZflc8Ou3iKySEb3BEV6f'
        }
    },
    'UserArn': 'REGISTERED_USER_ARN',
    'AllowedDomains': allowedDomains,
    'SessionLifetimeInMinutes': 100
}, function(err, data) {
    console.log('Errors: ');
    console.log(err);
    console.log('Response: ');
    console.log(data);
});
```

**Example**  

```
//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://quicksightdomain/embed/12345/dashboards/67890/sheets/12345/visuals/67890...",
        RequestId: '7bee030e-f191-45c4-97fe-d9faf0e03713' 
    }
```

### .NET/C\$1
<a name="embedded-q-bar-for-embedded-q-bar-for-authenticated-users-cs"></a>

L’exemple suivant montre le code .NET/C \$1 que vous pouvez utiliser sur le serveur d’applications afin de générer l’URL pour la barre de recherche Q intégrée. Vous pouvez utiliser cette URL dans votre site web ou votre application pour afficher la barre de recherche Q. 

**Example**  

```
using System;
using Amazon.QuickSight;
using Amazon.QuickSight.Model;

namespace GenerateDashboardEmbedUrlForRegisteredUser
{
    class Program
    {
        static void Main(string[] args)
        {
            var quicksightClient = new AmazonQuickSightClient(
                AccessKey,
                SecretAccessKey,
                SessionToken,
                Amazon.RegionEndpoint.USEast1);
            try
            {
                RegisteredUserQSearchBarEmbeddingConfiguration registeredUserQSearchBarEmbeddingConfiguration
                    = new RegisteredUserQSearchBarEmbeddingConfiguration
                    {
                        InitialTopicId = "U4zJMVZ2n2stZflc8Ou3iKySEb3BEV6f"
                    };
                RegisteredUserEmbeddingExperienceConfiguration registeredUserEmbeddingExperienceConfiguration
                    = new RegisteredUserEmbeddingExperienceConfiguration
                    {
                        QSearchBar = registeredUserQSearchBarEmbeddingConfiguration
                    }; 
                
                Console.WriteLine(
                    quicksightClient.GenerateEmbedUrlForRegisteredUserAsync(new GenerateEmbedUrlForRegisteredUserRequest
                    {
                        AwsAccountId = "111122223333",
                        ExperienceConfiguration = registeredUserEmbeddingExperienceConfiguration,
                        UserArn = "REGISTERED_USER_ARN",
                        AllowedDomains = allowedDomains,
                        SessionLifetimeInMinutes = 100
                    }).Result.EmbedUrl
                );
            } catch (Exception ex) {
                Console.WriteLine(ex.Message);
            }
        }
    }
}
```

### AWS CLI
<a name="embedded-q-bar-for-embedded-q-bar-for-authenticated-users-cli"></a>

Pour assumer ce rôle, choisissez l'une des opérations d'API AWS Security Token Service (AWS STS) suivantes :
+ [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)— Utilisez cette opération lorsque vous utilisez une identité IAM pour assumer le rôle.
+ [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html)— Utilisez cette opération lorsque vous utilisez un fournisseur d'identité Web pour authentifier votre utilisateur. 
+ [AssumeRoleWithSaml](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html)— 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:GenerateEmbedUrlForRegisteredUser`. Si vous envisagez d'ajouter just-in-time des utilisateurs lorsqu'ils utilisent un sujet dans la barre de recherche Q, les autorisations doivent également être activées pour le rôle`quicksight:RegisterUser`.

```
aws sts assume-role \
     --role-arn "arn:aws:iam::111122223333:role/embedding_quicksight_q_search_bar_role" \
     --role-session-name john.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ération `AssumeRole`, ceci est probablement dû au fait que le précédent `SESSION TOKEN` est encore dans les variables de l’environnement. Pour l’effacer, définissez les variables suivantes :  
*AWS\$1ACCESS\$1KEY\$1ID* 
*AWS\$1SECRET\$1CLÉ D'ACCÈS* 
*AWS\$1SESSION\$1JETON* 

L’exemple suivant montre comment définir ces trois paramètres dans l’interface de ligne de commande. Pour une machine Microsoft Windows, utilisez `set` au lieu de `export`.

```
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_q_search_bar_role/john.doe@example.com`. L’ID de session de rôle se compose du nom de rôle issu du `role-arn` et de la valeur `role-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. Le *throttling* est une fonctionnalité de sécurité qui empêche le même utilisateur d'accéder à Amazon Quick Sight depuis plusieurs sites. 

L'ID de session du rôle devient également le nom d'utilisateur dans Amazon Quick Sight. Vous pouvez utiliser ce modèle pour configurer vos utilisateurs dans Amazon Quick Sight à l'avance, ou pour les configurer la première fois qu'ils accèdent à la barre de recherche Q. 

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 [RegisterUser[DescribeUser](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_DescribeUser.html)](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_RegisterUser.html), et sur les autres opérations de l'API Amazon Quick Sight, consultez la [référence de l'API Amazon Quick Sight](https://docs.aws.amazon.com/quicksight/latest/APIReference/Welcome.html).

```
aws quicksight register-user \
    --aws-account-id 111122223333 \
    --namespace default \
    --identity-type IAM \
    --iam-arn "arn:aws:iam::111122223333:role/embedding_quicksight_q_search_bar_role" \
    --user-role READER \
    --user-name jhnd \
    --session-name "john.doe@example.com" \
    --email john.doe@example.com \
    --region us-east-1 \
    --custom-permissions-name TeamA1
```

Si l’utilisateur est authentifié via Microsoft AD, vous n’avez pas besoin d’utiliser `RegisterUser` pour le configurer. Ils doivent plutôt être automatiquement abonnés la première fois qu'ils accèdent à Amazon Quick Sight. Pour les utilisateurs Microsoft AD, vous pouvez utiliser `DescribeUser` pour obtenir l’Amazon Resource Name (ARN) de l’utilisateur.

La première fois qu'un utilisateur accède à Amazon Quick Sight, vous pouvez également ajouter cet utilisateur au groupe avec lequel le tableau de bord est partagé. 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_q_search_bar_role/john.doe@example.com"
```

Vous avez désormais un utilisateur de votre application qui est également un utilisateur d'Amazon Quick Sight et qui a accès au tableau de bord. 

Enfin, pour obtenir une URL signée pour le tableau de bord, appelez `generate-embed-url-for-registered-user` à partir du serveur d’applications. Ceci renvoie l’URL du tableau de bord intégrable. L'exemple suivant montre comment générer l'URL d'un tableau de bord intégré à l'aide d'un appel côté serveur pour les utilisateurs authentifiés par le biais de l'authentification unique (IAM AWS Managed Microsoft AD Identity Center).

```
aws quicksight generate-embed-url-for-registered-user \
--aws-account-id 111122223333 \
--session-lifetime-in-minutes 600 \
--user-arn arn:aws:quicksight:us-east-1:111122223333:user/default/embedding_quicksight_q_search_bar_role/embeddingsession
--allowed-domains '["domain1","domain2"]' \
--experience-configuration QSearchBar={InitialTopicId=U4zJMVZ2n2stZflc8Ou3iKySEb3BEV6f}
```

Pour plus d’informations sur l’utilisation de cette opération, consultez [https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForRegisteredUser.html](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForRegisteredUser.html). Vous pouvez utiliser cette opération et d’autres opérations d’API dans votre propre code.

## Étape 3 : Intégrer l’URL de la barre de recherche Q
<a name="embedded-q-bar-for-authenticated-users-step-3"></a>

**Note**  
La barre de recherche intégrée d'Amazon Quick Sight Q fournit l'expérience de questions-réponses classique d'Amazon Quick Sight. Amazon Quick Sight s'intègre à Amazon Q Business pour lancer une nouvelle expérience générative de questions-réponses. Il est recommandé aux développeurs d’utiliser la nouvelle expérience de questions-réponses génératives. Pour plus d'informations sur l'expérience de questions-réponses générative intégrée, consultez [Intégrer l'expérience Amazon Q dans l'expérience de questions-réponses générative Amazon Quick Sight](https://docs.aws.amazon.com/quicksight/latest/user/embedding-gen-bi.html).

Dans la section suivante, vous découvrirez comment intégrer l’URL de la barre de recherche Q de l’étape 3 sur votre site web ou sur votre page d’application. Pour ce faire, utilisez le [SDK d'intégration Amazon Quick Sight](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk) ()JavaScript. Le kit SDK vous permet d’effectuer les opérations suivantes : 
+ Placer la barre de recherche Q sur une page HTML.
+ Transmettre les paramètres à la barre de recherche Q.
+ Gérer les états d’erreurs avec des messages personnalisés pour votre application.

Pour générer l’URL que vous pouvez intégrer dans votre application, appelez l’opération d’API `GenerateEmbedUrlForRegisteredUser`. Cette URL est valable pendant 5 minutes et la session qui en résulte est valide jusqu’à 10 heures. L’opération d’API fournit l’URL avec une valeur `auth_code` qui permet une session à connexion unique. 

Voici un exemple de réponse de `generate-embed-url-for-registered-user`.

```
//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://quicksightdomain/embedding/12345/q/search...",
     "RequestId": "7bee030e-f191-45c4-97fe-d9faf0e03713"
}
```

Intégrez la barre de recherche Q à votre page Web à l'aide du [SDK d'intégration Amazon Quick Sight](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk) ou en ajoutant cette URL dans un iframe. Si vous définissez une hauteur et une largeur fixes (en pixels), Amazon Quick Sight les utilise et ne modifie pas votre visuel lorsque votre fenêtre est redimensionnée. Si vous définissez un pourcentage relatif de hauteur et de largeur, Amazon Quick Sight fournit une mise en page réactive qui est modifiée en fonction de l'évolution de la taille de votre fenêtre. 

Pour ce faire, assurez-vous que le domaine devant héberger la barre de recherche Q intégrée *figure dans la liste des domaines autorisés*, c'est-à-dire la liste des domaines approuvés pour votre abonnement Amazon Quick Sight. Cette exigence protège vos données en empêchant les domaines non approuvés d’héberger des tableaux de bord intégrés. Pour plus d'informations sur l'ajout de domaines pour une barre de recherche Q intégrée, consultez [la section Gestion des domaines et intégration](https://docs.aws.amazon.com/quicksight/latest/user/manage-qs-domains-and-embedding.html).

Lorsque vous utilisez le SDK Amazon Quick Sight Embedding, la barre de recherche Q de votre page est redimensionnée dynamiquement en fonction de l'état. En utilisant le SDK Amazon Quick Sight Embedding, vous pouvez également contrôler les paramètres de la barre de recherche Q et recevoir des rappels en termes de fin de chargement de page et d'erreurs. 

L’exemple suivant montre comment utiliser l’URL générée. Ce code est généré sur votre serveur d’applications.

### SDK 2.0
<a name="embedded-q-bar-for-authenticated-users-sdkv2"></a>

```
<!DOCTYPE html>
<html>

    <head>
        <title>Q Search Bar Embedding Example</title>
        <script src="https://unpkg.com/amazon-quicksight-embedding-sdk@2.0.0/dist/quicksight-embedding-js-sdk.min.js"></script>
        <script type="text/javascript">
            const embedQSearchBar = async() => {    
                const {
                    createEmbeddingContext,
                } = QuickSightEmbedding;

                const embeddingContext = await createEmbeddingContext({
                    onChange: (changeEvent, metadata) => {
                        console.log('Context received a change', changeEvent, metadata);
                    },
                });

                const frameOptions = {
                    url: "<YOUR_EMBED_URL>", // replace this value with the url generated via embedding API
                    container: '#experience-container',
                    height: "700px",
                    width: "1000px",
                    onChange: (changeEvent, metadata) => {
                        switch (changeEvent.eventName) {
                            case 'FRAME_MOUNTED': {
                                console.log("Do something when the experience frame is mounted.");
                                break;
                            }
                            case 'FRAME_LOADED': {
                                console.log("Do something when the experience frame is loaded.");
                                break;
                            }
                        }
                    },
                };

                const contentOptions = {
                    hideTopicName: false, 
                    theme: '<YOUR_THEME_ID>',
                    allowTopicSelection: true,
                    onMessage: async (messageEvent, experienceMetadata) => {
                        switch (messageEvent.eventName) {
                            case 'Q_SEARCH_OPENED': {
                                console.log("Do something when Q Search content expanded");
                                break;
                            }
                            case 'Q_SEARCH_CLOSED': {
                                console.log("Do something when Q Search content collapsed");
                                break;
                            }
                            case 'Q_SEARCH_SIZE_CHANGED': {
                                console.log("Do something when Q Search size changed");
                                break;
                            }
                            case 'CONTENT_LOADED': {
                                console.log("Do something when the Q Search is loaded.");
                                break;
                            }
                            case 'ERROR_OCCURRED': {
                                console.log("Do something when the Q Search fails loading.");
                                break;
                            }
                        }
                    }
                };
                const embeddedDashboardExperience = await embeddingContext.embedQSearchBar(frameOptions, contentOptions);
            };
        </script>
    </head>

    <body onload="embedQSearchBar()">
        <div id="experience-container"></div>
    </body>

</html>
```

### SDK 1.0
<a name="embedded-q-bar-for-authenticated-users-sdkv1"></a>

```
<!DOCTYPE html>
<html>

    <head>
        <title>QuickSight Q Search Bar Embedding</title>
        <script src="https://unpkg.com/amazon-quicksight-embedding-sdk@1.18.0/dist/quicksight-embedding-js-sdk.min.js"></script>
        <script type="text/javascript">
            var session

            function onError(payload) {
                console.log("Do something when the session fails loading");
            }

            function onOpen() {
                console.log("Do something when the Q search bar opens");
            }

            function onClose() {
                console.log("Do something when the Q search bar closes");
            }

            function embedQSearchBar() {
                var containerDiv = document.getElementById("embeddingContainer");
                var options = {
                    url: "https://us-east-1.quicksight.aws.amazon.com/sn/dashboards/dashboardId?isauthcode=true&identityprovider=quicksight&code=authcode", // replace this dummy url with the one generated via embedding API
                    container: containerDiv,
                    width: "1000px",
                    locale: "en-US",
                    qSearchBarOptions: {
                        expandCallback: onOpen,
                        collapseCallback: onClose,
                        iconDisabled: false,
                        topicNameDisabled: false, 
                        themeId: 'bdb844d0-0fe9-4d9d-b520-0fe602d93639',
                        allowTopicSelection: true
                    }
                };
                session = QuickSightEmbedding.embedQSearchBar(options);
                session.on("error", onError);
            }

            function onCountryChange(obj) {
                session.setParameters({country: obj.value});
            }
        </script>
    </head>

    <body onload="embedQSearchBar()">
        <div id="embeddingContainer"></div>
    </body>

</html>
```

Pour que cet exemple fonctionne, assurez-vous d'utiliser le SDK Amazon Quick Sight Embedding pour charger le tableau de bord intégré sur votre site Web à l'aide de. JavaScript Pour obtenir votre copie, effectuez l’une des actions suivantes :
+ Téléchargez le SDK d'[intégration Amazon Quick Sight](https://github.com/awslabs/amazon-quicksight-embedding-sdk#step-3-create-the-quicksight-session-object) depuis. GitHub Ce référentiel est géré par un groupe de développeurs Amazon Quick Sight.
+ Téléchargez la dernière version du SDK d'intégration sur. [https://www.npmjs.com/package/amazon-quicksight-embedding-sdk](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk)
+ Si vous utilisez `npm` for JavaScript dependencies, téléchargez-le et installez-le en exécutant la commande suivante.

  ```
  npm install amazon-quicksight-embedding-sdk
  ```

## Fonctionnalités d'intégration de la barre de recherche Amazon Quick Sight Q en option
<a name="embedded-q-bar-for-authenticated-users-step-4"></a>

**Note**  
La barre de recherche intégrée d'Amazon Quick Sight Q fournit l'expérience de questions-réponses classique d'Amazon Quick Sight. Amazon Quick Sight s'intègre à Amazon Q Business pour lancer une nouvelle expérience générative de questions-réponses. Il est recommandé aux développeurs d’utiliser la nouvelle expérience de questions-réponses génératives. Pour plus d'informations sur l'expérience de questions-réponses générative intégrée, consultez [Intégrer l'expérience Amazon Q dans l'expérience de questions-réponses générative Amazon Quick Sight](https://docs.aws.amazon.com/quicksight/latest/user/embedding-gen-bi.html).

Les fonctionnalités facultatives suivantes sont disponibles pour la barre de recherche Q intégrée à l’aide du kit SDK d’intégration. 

### Invoquer les actions de la barre de recherche Q
<a name="w2aac35c27c21c43c31c15c21b7"></a>

Les options suivantes sont prises en charge uniquement pour l’intégration de la barre de recherche Q. 
+ Définir une question dans la barre de recherche Q : cette fonctionnalité envoie une question à la barre de recherche Q et interroge immédiatement la question. Elle ouvre également automatiquement la fenêtre contextuelle Q.

  ```
  qBar.setQBarQuestion('show me monthly revenue');
  ```
+ Fermer la fenêtre contextuelle Q : cette fonctionnalité ferme la fenêtre contextuelle Q et ramène l’iframe à la taille initiale de la barre de recherche Q.

  ```
  qBar.closeQPopover();
  ```

Pour plus d'informations, consultez le [SDK d'intégration Amazon Quick Sight](https://github.com/awslabs/amazon-quicksight-embedding-sdk).

# Intégration de la barre de recherche Amazon Quick Sight Q pour les utilisateurs anonymes (non enregistrés)
<a name="embedded-analytics-q-search-bar-for-anonymous-users"></a>


|  | 
| --- |
|    Public cible : développeurs Amazon Quick  | 

**Note**  
La barre de recherche intégrée d'Amazon Quick Sight Q fournit l'expérience de questions-réponses classique d'Amazon Quick Sight. Amazon Quick Sight s'intègre à Amazon Q Business pour lancer une nouvelle expérience générative de questions-réponses. Il est recommandé aux développeurs d’utiliser la nouvelle expérience de questions-réponses génératives. Pour plus d'informations sur l'expérience de questions-réponses générative intégrée, consultez [Intégrer l'expérience Amazon Q dans l'expérience de questions-réponses générative Amazon Quick Sight](https://docs.aws.amazon.com/quicksight/latest/user/embedding-gen-bi.html).

Dans les sections suivantes, vous trouverez des informations détaillées sur la configuration d'une barre de recherche Amazon Quick Sight Q intégrée pour les utilisateurs anonymes (non enregistrés).

**Topics**
+ [

## Étape 1 : Configurer des autorisations
](#embedded-q-bar-for-anonymous-users-step-1)
+ [

## Étape 2 : Générer l’URL avec le code d’authentification en pièce jointe
](#embedded-q-bar-for-anonymous-users-step-2)
+ [

## Étape 3 : Intégrer l’URL de la barre de recherche Q
](#embedded-q-bar-for-anonymous-users-step-3)
+ [

## Fonctionnalités d'intégration de la barre de recherche Amazon Quick Sight Q en option
](#embedded-q-bar-for-anonymous-users-step-4)

## Étape 1 : Configurer des autorisations
<a name="embedded-q-bar-for-anonymous-users-step-1"></a>

**Note**  
La barre de recherche intégrée d'Amazon Quick Sight Q fournit l'expérience de questions-réponses classique d'Amazon Quick Sight. Amazon Quick Sight s'intègre à Amazon Q Business pour lancer une nouvelle expérience générative de questions-réponses. Il est recommandé aux développeurs d’utiliser la nouvelle expérience de questions-réponses génératives. Pour plus d'informations sur l'expérience de questions-réponses générative intégrée, consultez [Intégrer l'expérience Amazon Q dans l'expérience de questions-réponses générative Amazon Quick Sight](https://docs.aws.amazon.com/quicksight/latest/user/embedding-gen-bi.html).

Dans la section suivante, vous apprendrez à configurer les autorisations pour l’application backend ou le serveur web afin d’intégrer la barre de recherche Q. Cette tâche nécessite un accès administratif à Gestion des identités et des accès AWS (IAM).

Chaque utilisateur qui accède à une barre de recherche Q assume un rôle qui lui permet d'accéder à Amazon Quick Sight et d'accéder à la barre de recherche Q. Pour que cela soit possible, créez un rôle IAM dans votre Compte AWS. Associez une politique IAM au rôle afin de fournir des autorisations à n’importe quel utilisateur qui assume ce rôle. Le rôle IAM doit fournir des autorisations pour récupérer l'intégration URLs pour un groupe d'utilisateurs spécifique. 

À l’aide du caractère générique *\$1*, vous pouvez accorder l’autorisation de générer une URL pour tous les utilisateurs d’un espace de noms spécifique. Vous pouvez également accorder des autorisations pour générer une URL pour un sous-ensemble d’utilisateurs dans des espaces de noms spécifiques. Pour cela, ajoutez `quicksight:GenerateEmbedUrlForAnonymousUser`.

Vous pouvez créer une condition dans votre politique IAM qui limite les domaines que les développeurs peuvent répertorier dans le paramètre `AllowedDomains` d’une opération d’API `GenerateEmbedUrlForAnonymousUser`. Le paramètre `AllowedDomains` est un paramètre facultatif. Il permet aux développeurs de remplacer les domaines statiques configurés dans le menu **Manage Amazon Quick Sight** et de répertorier jusqu'à trois domaines ou sous-domaines pouvant accéder à une URL générée. Cette URL est ensuite intégrée dans le site web d’un développeur. Seuls les domaines répertoriés dans le paramètre peuvent accéder à la barre de recherche Q intégrée. Sans cette condition, les développeurs peuvent répertorier n’importe quel domaine sur Internet dans le paramètre `AllowedDomains`. 

Pour limiter les domaines que les développeurs peuvent utiliser avec ce paramètre, ajoutez une condition `AllowedEmbeddingDomains` à votre politique IAM. Pour plus d'informations sur le `AllowedDomains` paramètre, consultez le [GenerateEmbedUrlForAnonymousUser](https://docs.aws.amazon.com//quicksight/latest/APIReference/API_GenerateEmbedUrlForAnonymousUser.html)manuel *Amazon Quick Sight API Reference*.

**Bonnes pratiques de sécurité pour les opérateurs de conditions IAM**  
Les opérateurs de conditions IAM mal configurés peuvent autoriser un accès non autorisé à vos ressources Quick intégrées par le biais de variations d'URL. Lorsque vous utilisez la clé de `quicksight:AllowedEmbeddingDomains` condition dans vos politiques IAM, utilisez des opérateurs de condition qui autorisent des domaines spécifiques ou refusent tous les domaines qui ne sont pas spécifiquement autorisés. Pour plus d'informations sur les opérateurs de condition IAM, voir [Éléments de politique IAM JSON : opérateurs de condition](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html) dans le guide de l'utilisateur IAM.  
De nombreuses variantes d'URL peuvent pointer vers la même ressource. Par exemple, les fichiers suivants ont URLs tous le même contenu :  
`https://example.com`
`https://example.com/`
`https://Example.com`
Si votre politique utilise des opérateurs qui ne tiennent pas compte de ces variations d'URL, un attaquant peut contourner vos restrictions en fournissant des variantes d'URL équivalentes.  
Vous devez vérifier que votre politique IAM utilise des opérateurs de condition appropriés pour empêcher le contournement des vulnérabilités et garantir que seuls les domaines auxquels vous souhaitez accéder peuvent accéder à vos ressources intégrées.

L’identité IAM de votre application doit avoir une politique d’approbation qui lui est associée afin d’autoriser l’accès au rôle que vous venez de créer. Cela signifie que lorsqu’un utilisateur accède à votre application, votre application peut assumer le rôle pour le compte de l’utilisateur afin d’ouvrir la barre de recherche Q. Voici un exemple de politique d’approbation.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowLambdaFunctionsToAssumeThisRole",
            "Effect": "Allow",
            "Principal": {
                "Service": "lambda.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        },
        {
            "Sid": "AllowEC2InstancesToAssumeThisRole",
            "Effect": "Allow",
            "Principal": {
                "Service": "ec2.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

------

Pour plus d’informations sur les politiques d’approbation, consultez la rubrique [Informations d’identification de sécurité temporaires](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html) dans le *Guide de l’utilisateur IAM*.

## Étape 2 : Générer l’URL avec le code d’authentification en pièce jointe
<a name="embedded-q-bar-for-anonymous-users-step-2"></a>

**Note**  
La barre de recherche intégrée d'Amazon Quick Sight Q fournit l'expérience de questions-réponses classique d'Amazon Quick Sight. Amazon Quick Sight s'intègre à Amazon Q Business pour lancer une nouvelle expérience générative de questions-réponses. Il est recommandé aux développeurs d’utiliser la nouvelle expérience de questions-réponses génératives. Pour plus d'informations sur l'expérience de questions-réponses générative intégrée, consultez [Intégrer l'expérience Amazon Q dans l'expérience de questions-réponses générative Amazon Quick Sight](https://docs.aws.amazon.com/quicksight/latest/user/embedding-gen-bi.html).

Dans la section suivante, vous découvrirez comment authentifier votre utilisateur et obtenir l’URL de rubrique Q 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. L'application ajoute ensuite l'utilisateur à Amazon Quick Sight, s'il n'existe pas déjà. Puis, elle transmet un identifiant comme ID de session de rôle unique. 

Pour de plus amples informations, veuillez consulter [https://docs.aws.amazon.com/quicksight/latest/APIReference/AnonymousUserQSearchBarEmbeddingConfiguration.html](https://docs.aws.amazon.com/quicksight/latest/APIReference/AnonymousUserQSearchBarEmbeddingConfiguration.html).

### Java
<a name="embedded-q-bar-for-anonymous-users-java"></a>

```
        import java.util.List;
        import com.amazonaws.auth.AWSCredentials;
        import com.amazonaws.auth.AWSCredentialsProvider;
        import com.amazonaws.auth.BasicAWSCredentials;
        import com.amazonaws.regions.Regions;
        import com.amazonaws.services.quicksight.AmazonQuickSight;
        import com.amazonaws.services.quicksight.AmazonQuickSightClientBuilder;
        import com.amazonaws.services.quicksight.model.AnonymousUserQSearchBarEmbeddingConfiguration;
        import com.amazonaws.services.quicksight.model.AnonymousUserEmbeddingExperienceConfiguration;
        import com.amazonaws.services.quicksight.model.GenerateEmbedUrlForAnonymousUserRequest;
        import com.amazonaws.services.quicksight.model.GenerateEmbedUrlForAnonymousUserResult;
        import com.amazonaws.services.quicksight.model.SessionTag;


        /**
        * Class to call QuickSight AWS SDK to generate embed url for anonymous user.
        */
        public class GenerateEmbedUrlForAnonymousUserExample {

            private final AmazonQuickSight quickSightClient;

            public GenerateEmbedUrlForAnonymousUserExample() {
                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 GenerateEmbedUrlForAnonymousUser(
                final String accountId, // YOUR AWS ACCOUNT ID
                final String initialTopicId, // Q TOPIC ID TO WHICH THE CONSTRUCTED URL POINTS AND SEARCHBAR PREPOPULATES INITIALLY
                final String namespace, // ANONYMOUS EMBEDDING REQUIRES SPECIFYING A VALID NAMESPACE FOR WHICH YOU WANT THE EMBEDDING URL
                final List<String> authorizedResourceArns, // Q SEARCHBAR TOPIC ARN LIST TO EMBED
                final List<String> allowedDomains, // RUNTIME ALLOWED DOMAINS FOR EMBEDDING
                final List<SessionTag> sessionTags // SESSION TAGS USED FOR ROW-LEVEL SECURITY
            ) throws Exception {
                AnonymousUserEmbeddingExperienceConfiguration experienceConfiguration = new AnonymousUserEmbeddingExperienceConfiguration();
                AnonymousUserQSearchBarEmbeddingConfiguration qSearchBarConfiguration = new AnonymousUserQSearchBarEmbeddingConfiguration();
                qSearchBarConfiguration.setInitialTopicId(initialTopicId);
                experienceConfiguration.setQSearchBar(qSearchBarConfiguration);

                GenerateEmbedUrlForAnonymousUserRequest generateEmbedUrlForAnonymousUserRequest = new GenerateEmbedUrlForAnonymousUserRequest()
                    .withAwsAccountId(accountId)
                    .withNamespace(namespace)
                    .withAuthorizedResourceArns(authorizedResourceArns)
                    .withExperienceConfiguration(experienceConfiguration)
                    .withSessionTags(sessionTags)
                    .withSessionLifetimeInMinutes(600L); // OPTIONAL: VALUE CAN BE [15-600]. DEFAULT: 600
                    .withAllowedDomains(allowedDomains);

                GenerateEmbedUrlForAnonymousUserResult qSearchBarEmbedUrl = quickSightClient.generateEmbedUrlForAnonymousUser(generateEmbedUrlForAnonymousUserRequest);

                return qSearchBarEmbedUrl.getEmbedUrl();
            }

        }
```

### JavaScript
<a name="embedded-q-bar-for-anonymous-users-js"></a>

```
global.fetch = require('node-fetch');
const AWS = require('aws-sdk');

function generateEmbedUrlForAnonymousUser(
    accountId, // YOUR AWS ACCOUNT ID
    initialTopicId, // Q TOPIC ID TO WHICH THE CONSTRUCTED URL POINTS
    quicksightNamespace, // VALID NAMESPACE WHERE YOU WANT TO DO NOAUTH EMBEDDING
    authorizedResourceArns, // Q SEARCHBAR TOPIC ARN LIST TO EMBED
    allowedDomains, // RUNTIME ALLOWED DOMAINS FOR EMBEDDING
    sessionTags, // SESSION TAGS USED FOR ROW-LEVEL SECURITY
    generateEmbedUrlForAnonymousUserCallback, // SUCCESS CALLBACK METHOD
    errorCallback // ERROR CALLBACK METHOD
    ) {
    const experienceConfiguration = {
        "QSearchBar": {
            "InitialTopicId": initialTopicId // TOPIC ID CAN BE FOUND IN THE URL ON THE TOPIC AUTHOR PAGE
        }
    };
    
    const generateEmbedUrlForAnonymousUserParams = {
        "AwsAccountId": accountId,
        "Namespace": quicksightNamespace,
        "AuthorizedResourceArns": authorizedResourceArns,
        "AllowedDomains": allowedDomains,
        "ExperienceConfiguration": experienceConfiguration,
        "SessionTags": sessionTags,
        "SessionLifetimeInMinutes": 600
    };

    const quicksightClient = new AWS.QuickSight({
        region: process.env.AWS_REGION,
        credentials: {
            accessKeyId: AccessKeyId,
            secretAccessKey: SecretAccessKey,
            sessionToken: SessionToken,
            expiration: Expiration
        }
    });

    quicksightClient.generateEmbedUrlForAnonymousUser(generateEmbedUrlForAnonymousUserParams, 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 THIS API
                    "Access-Control-Allow-Headers": "Content-Type"
                },
                "body": JSON.stringify(data),
                "isBase64Encoded": false
            }
            generateEmbedUrlForAnonymousUserCallback(result);
        }
    });
}
```

### Python3
<a name="embedded-q-bar-for-anonymous-users-py"></a>

```
import json
import boto3
from botocore.exceptions import ClientError
import time

# Create QuickSight and STS clients
quicksightClient = boto3.client('quicksight',region_name='us-west-2')
sts = boto3.client('sts')

# Function to generate embedded URL for anonymous user
# accountId: YOUR AWS ACCOUNT ID
# quicksightNamespace: VALID NAMESPACE WHERE YOU WANT TO DO NOAUTH EMBEDDING
# authorizedResourceArns: TOPIC ARN LIST TO EMBED
# allowedDomains: RUNTIME ALLOWED DOMAINS FOR EMBEDDING
# experienceConfiguration: configuration which specifies the TOPIC ID to point URL to
# sessionTags: SESSION TAGS USED FOR ROW-LEVEL SECURITY
def generateEmbedUrlForAnonymousUser(accountId, quicksightNamespace, authorizedResourceArns, allowedDomains, experienceConfiguration, sessionTags):
    try:
        response = quicksightClient.generate_embed_url_for_anonymous_user(
            AwsAccountId = accountId,
            Namespace = quicksightNamespace,
            AuthorizedResourceArns = authorizedResourceArns,
            AllowedDomains = allowedDomains,
            ExperienceConfiguration = experienceConfiguration,
            SessionTags = sessionTags,
            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
<a name="embedded-q-bar-for-anonymous-users-nodejs"></a>

L'exemple suivant montre le JavaScript (Node.js) que vous pouvez utiliser sur le serveur d'applications pour générer l'URL du tableau de bord intégré. Vous pouvez utiliser cette URL dans votre site Web ou votre application pour afficher le tableau de bord. 

**Example**  

```
const AWS = require('aws-sdk');
const https = require('https');

var quicksightClient = new AWS.Service({
    apiConfig: require('./quicksight-2018-04-01.min.json'),
    region: 'us-east-1',
});

quicksightClient.generateEmbedUrlForAnonymousUser({
    'AwsAccountId': '111122223333',
    'Namespace': 'DEFAULT'
    'AuthorizedResourceArns': '["topic-arn-topicId1","topic-arn-topicId2"]',
    'AllowedDomains': allowedDomains,
    'ExperienceConfiguration': { 
        'QSearchBar': {
            'InitialTopicId': 'U4zJMVZ2n2stZflc8Ou3iKySEb3BEV6f'
        }
    },
    'SessionTags': '["Key": tag-key-1,"Value": tag-value-1,{"Key": tag-key-1,"Value": tag-value-1}]',
    'SessionLifetimeInMinutes': 15
}, function(err, data) {
    console.log('Errors: ');
    console.log(err);
    console.log('Response: ');
    console.log(data);
});
```

**Example**  

```
//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://quicksightdomain/embed/12345/dashboards/67890/sheets/12345/visuals/67890...',
        RequestId: '7bee030e-f191-45c4-97fe-d9faf0e03713' 
    }
```

### .NET/C\$1
<a name="embedded-q-bar-for-anonymous-users-cs"></a>

L’exemple suivant montre le code .NET/C \$1 que vous pouvez utiliser sur le serveur d’applications afin de générer l’URL pour la barre de recherche Q intégrée. Vous pouvez utiliser cette URL dans votre site web ou votre application pour afficher la barre de recherche Q. 

**Example**  

```
using System;
using Amazon.QuickSight;
using Amazon.QuickSight.Model;

namespace GenerateQSearchBarEmbedUrlForAnonymousUser
{
    class Program
    {
        static void Main(string[] args)
        {
            var quicksightClient = new AmazonQuickSightClient(
                AccessKey,
                SecretAccessKey,
                SessionToken,
                Amazon.RegionEndpoint.USEast1);
            try
            {
                AnonymousUserQSearchBarEmbeddingConfiguration anonymousUserQSearchBarEmbeddingConfiguration
                    = new AnonymousUserQSearchBarEmbeddingConfiguration
                    {
                        InitialTopicId = "U4zJMVZ2n2stZflc8Ou3iKySEb3BEV6f"
                    };
                AnonymousUserEmbeddingExperienceConfiguration anonymousUserEmbeddingExperienceConfiguration
                    = new AnonymousUserEmbeddingExperienceConfiguration
                    {
                        QSearchBar = anonymousUserQSearchBarEmbeddingConfiguration
                    }; 
                
                Console.WriteLine(
                    quicksightClient.GenerateEmbedUrlForAnonymousUserAsync(new GenerateEmbedUrlForAnonymousUserRequest
                    {
                        AwsAccountId = "111122223333",
                        Namespace = "DEFAULT",
                        AuthorizedResourceArns '["topic-arn-topicId1","topic-arn-topicId2"]',
                        AllowedDomains = allowedDomains,
                        ExperienceConfiguration = anonymousUserEmbeddingExperienceConfiguration,
                        SessionTags = '["Key": tag-key-1,"Value": tag-value-1,{"Key": tag-key-1,"Value": tag-value-1}]',
                        SessionLifetimeInMinutes = 15,
                    }).Result.EmbedUrl
                );
            } catch (Exception ex) {
                Console.WriteLine(ex.Message);
            }
        }
    }
}
```

### AWS CLI
<a name="embedded-q-bar-for-anonymous-users-cli"></a>

Pour assumer ce rôle, choisissez l'une des opérations d'API AWS Security Token Service (AWS STS) suivantes :
+ [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)— Utilisez cette opération lorsque vous utilisez une identité IAM pour assumer le rôle.
+ [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html)— Utilisez cette opération lorsque vous utilisez un fournisseur d'identité Web pour authentifier votre utilisateur. 
+ [AssumeRoleWithSaml](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html)— 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:GenerateEmbedUrlForAnonymousUser`.

```
aws sts assume-role \
     --role-arn "arn:aws:iam::111122223333:role/embedding_quicksight_q_search_bar_role" \
     --role-session-name anonymous caller
```

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ération `AssumeRole`, ceci est probablement dû au fait que le précédent `SESSION TOKEN` est encore dans les variables de l’environnement. Pour l’effacer, définissez les variables suivantes :  
*AWS\$1ACCESS\$1KEY\$1ID* 
*AWS\$1SECRET\$1CLÉ D'ACCÈS* 
*AWS\$1SESSION\$1JETON* 

L’exemple suivant montre comment définir ces trois paramètres dans l’interface de ligne de commande. Pour une machine Microsoft Windows, utilisez `set` au lieu de `export`.

```
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_q_search_bar_role/QuickSightEmbeddingAnonymousPolicy`. L’ID de session de rôle se compose du nom de rôle issu du `role-arn` et de la valeur `role-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. Le *throttling* est une fonctionnalité de sécurité qui empêche le même utilisateur d'accéder à Amazon Quick Sight depuis plusieurs sites. De plus, cela permet également de garder chaque session séparée et distincte. Si vous utilisez un ensemble de serveurs web, par exemple pour l’équilibrage de charge, et qu’une session est reconnectée à un autre serveur, une nouvelle session démarre.

Pour obtenir une URL signée pour le tableau de bord, appelez `generate-embed-url-for-anynymous-user` à partir du serveur d’applications. Ceci renvoie l’URL du tableau de bord intégrable. L’exemple suivant montre comment générer l’URL d’un tableau de bord intégré à l’aide d’un appel côté serveur pour les utilisateurs qui effectuent des visites anonymes sur votre portail web ou votre application.

```
aws quicksight generate-embed-url-for-anonymous-user \
--aws-account-id 111122223333 \
--namespace default-or-something-else \
--authorized-resource-arns '["topic-arn-topicId1","topic-arn-topicId2"]' \
--allowed-domains '["domain1","domain2"]' \
--experience-configuration 'QSearchBar={InitialTopicId="topicId1"}' \
--session-tags '["Key": tag-key-1,"Value": tag-value-1,{"Key": tag-key-1,"Value": tag-value-1}]' \
--session-lifetime-in-minutes 15
```

Pour plus d’informations sur l’utilisation de cette opération, consultez [https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForRegisteredUser.html](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForRegisteredUser.html). Vous pouvez utiliser cette opération et d’autres opérations d’API dans votre propre code.

## Étape 3 : Intégrer l’URL de la barre de recherche Q
<a name="embedded-q-bar-for-anonymous-users-step-3"></a>

**Note**  
La barre de recherche intégrée d'Amazon Quick Sight Q fournit l'expérience de questions-réponses classique d'Amazon Quick Sight. Amazon Quick Sight s'intègre à Amazon Q Business pour lancer une nouvelle expérience générative de questions-réponses. Il est recommandé aux développeurs d’utiliser la nouvelle expérience de questions-réponses génératives. Pour plus d'informations sur l'expérience de questions-réponses générative intégrée, consultez [Intégrer l'expérience Amazon Q dans l'expérience de questions-réponses générative Amazon Quick Sight](https://docs.aws.amazon.com/quicksight/latest/user/embedding-gen-bi.html).

Dans la section suivante, vous découvrirez comment intégrer l’URL de la barre de recherche Q de l’étape 3 sur votre site web ou sur votre page d’application. Pour ce faire, utilisez le [SDK d'intégration Amazon Quick Sight](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk) ()JavaScript. Le kit SDK vous permet d’effectuer les opérations suivantes : 
+ Placer la barre de recherche Q sur une page HTML.
+ Transmettre les paramètres à la barre de recherche Q.
+ Gérer les états d’erreurs avec des messages personnalisés pour votre application.

Pour générer l’URL que vous pouvez intégrer dans votre application, appelez l’opération d’API `GenerateEmbedUrlForAnonymousUser`. Cette URL est valable pendant 5 minutes et la session qui en résulte est valide jusqu’à 10 heures. L’opération d’API fournit l’URL avec une valeur `auth_code` qui permet une session à connexion unique. 

Voici un exemple de réponse de `generate-embed-url-for-anonymous-user`.

```
//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://quicksightdomain/embedding/12345/q/search...",
     "RequestId": "7bee030e-f191-45c4-97fe-d9faf0e03713"
}
```

Intégrez la barre de recherche Q à votre page Web à l'aide du [SDK d'intégration Amazon Quick Sight](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk) ou en ajoutant cette URL dans un iframe. Si vous définissez une hauteur et une largeur fixes (en pixels), Amazon Quick Sight les utilise et ne modifie pas votre visuel lorsque votre fenêtre est redimensionnée. Si vous définissez un pourcentage relatif de hauteur et de largeur, Amazon Quick Sight fournit une mise en page réactive qui est modifiée en fonction de l'évolution de la taille de votre fenêtre. 

Pour ce faire, assurez-vous que le domaine devant héberger la barre de recherche Q intégrée *figure dans la liste des domaines autorisés*, c'est-à-dire la liste des domaines approuvés pour votre abonnement Amazon Quick Sight. Cette exigence protège vos données en empêchant les domaines non approuvés d’héberger la barre de recherche Q intégrée. Pour plus d'informations sur l'ajout de domaines pour une barre de recherche Q intégrée, consultez [la section Gestion des domaines et intégration](https://docs.aws.amazon.com/quicksight/latest/user/manage-qs-domains-and-embedding.html).

Lorsque vous utilisez le SDK Amazon Quick Sight Embedding, la barre de recherche Q de votre page est redimensionnée dynamiquement en fonction de l'état. En utilisant le SDK Amazon Quick Sight Embedding, vous pouvez également contrôler les paramètres de la barre de recherche Q et recevoir des rappels en termes de fin de chargement de page et d'erreurs. 

L’exemple suivant montre comment utiliser l’URL générée. Ce code est généré sur votre serveur d’applications.

### SDK 2.0
<a name="embedded-q-bar-for-anonymous-users-sdkv2"></a>

```
<!DOCTYPE html>
<html>

    <head>
        <title>Q Search Bar Embedding Example</title>
        <script src="https://unpkg.com/amazon-quicksight-embedding-sdk@2.0.0/dist/quicksight-embedding-js-sdk.min.js"></script>
        <script type="text/javascript">
            const embedQSearchBar = async() => {    
                const {
                    createEmbeddingContext,
                } = QuickSightEmbedding;

                const embeddingContext = await createEmbeddingContext({
                    onChange: (changeEvent, metadata) => {
                        console.log('Context received a change', changeEvent, metadata);
                    },
                });

                const frameOptions = {
                    url: "<YOUR_EMBED_URL>", // replace this value with the url generated via embedding API
                    container: '#experience-container',
                    height: "700px",
                    width: "1000px",
                    onChange: (changeEvent, metadata) => {
                        switch (changeEvent.eventName) {
                            case 'FRAME_MOUNTED': {
                                console.log("Do something when the experience frame is mounted.");
                                break;
                            }
                            case 'FRAME_LOADED': {
                                console.log("Do something when the experience frame is loaded.");
                                break;
                            }
                        }
                    },
                };

                const contentOptions = {
                    hideTopicName: false, 
                    theme: '<YOUR_THEME_ID>',
                    allowTopicSelection: true,
                    onMessage: async (messageEvent, experienceMetadata) => {
                        switch (messageEvent.eventName) {
                            case 'Q_SEARCH_OPENED': {
                                console.log("Do something when Q Search content expanded");
                                break;
                            }
                            case 'Q_SEARCH_CLOSED': {
                                console.log("Do something when Q Search content collapsed");
                                break;
                            }
                            case 'Q_SEARCH_SIZE_CHANGED': {
                                console.log("Do something when Q Search size changed");
                                break;
                            }
                            case 'CONTENT_LOADED': {
                                console.log("Do something when the Q Search is loaded.");
                                break;
                            }
                            case 'ERROR_OCCURRED': {
                                console.log("Do something when the Q Search fails loading.");
                                break;
                            }
                        }
                    }
                };
                const embeddedDashboardExperience = await embeddingContext.embedQSearchBar(frameOptions, contentOptions);
            };
        </script>
    </head>

    <body onload="embedQSearchBar()">
        <div id="experience-container"></div>
    </body>

</html>
```

### SDK 1.0
<a name="embedded-q-bar-for-anonymous-users-sdkv1"></a>

```
<!DOCTYPE html>
<html>

    <head>
        <title>QuickSight Q Search Bar Embedding</title>
        <script src="https://unpkg.com/amazon-quicksight-embedding-sdk@1.18.0/dist/quicksight-embedding-js-sdk.min.js"></script>
        <script type="text/javascript">
            var session

            function onError(payload) {
                console.log("Do something when the session fails loading");
            }

            function onOpen() {
                console.log("Do something when the Q search bar opens");
            }

            function onClose() {
                console.log("Do something when the Q search bar closes");
            }

            function embedQSearchBar() {
                var containerDiv = document.getElementById("embeddingContainer");
                var options = {
                    url: "https://us-east-1.quicksight.aws.amazon.com/sn/dashboards/dashboardId?isauthcode=true&identityprovider=quicksight&code=authcode", // replace this dummy url with the one generated via embedding API
                    container: containerDiv,
                    width: "1000px",
                    locale: "en-US",
                    qSearchBarOptions: {
                        expandCallback: onOpen,
                        collapseCallback: onClose,
                        iconDisabled: false,
                        topicNameDisabled: false, 
                        themeId: 'bdb844d0-0fe9-4d9d-b520-0fe602d93639',
                        allowTopicSelection: true
                    }
                };
                session = QuickSightEmbedding.embedQSearchBar(options);
                session.on("error", onError);
            }

            function onCountryChange(obj) {
                session.setParameters({country: obj.value});
            }
        </script>
    </head>

    <body onload="embedQSearchBar()">
        <div id="embeddingContainer"></div>
    </body>

</html>
```

Pour que cet exemple fonctionne, assurez-vous d'utiliser le SDK Amazon Quick Sight Embedding pour charger la barre de recherche Q intégrée sur votre site Web à l'aide de. JavaScript Pour obtenir votre copie, effectuez l’une des actions suivantes :
+ Téléchargez le SDK d'[intégration Amazon Quick Sight](https://github.com/awslabs/amazon-quicksight-embedding-sdk#step-3-create-the-quicksight-session-object) depuis. GitHub Ce référentiel est géré par un groupe de développeurs Amazon Quick Sight.
+ Téléchargez la dernière version du SDK d'intégration sur. [https://www.npmjs.com/package/amazon-quicksight-embedding-sdk](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk)
+ Si vous utilisez `npm` for JavaScript dependencies, téléchargez-le et installez-le en exécutant la commande suivante.

  ```
  npm install amazon-quicksight-embedding-sdk
  ```

## Fonctionnalités d'intégration de la barre de recherche Amazon Quick Sight Q en option
<a name="embedded-q-bar-for-anonymous-users-step-4"></a>

**Note**  
La barre de recherche intégrée d'Amazon Quick Sight Q fournit l'expérience de questions-réponses classique d'Amazon Quick Sight. Amazon Quick Sight s'intègre à Amazon Q Business pour lancer une nouvelle expérience générative de questions-réponses. Il est recommandé aux développeurs d’utiliser la nouvelle expérience de questions-réponses génératives. Pour plus d'informations sur l'expérience de questions-réponses générative intégrée, consultez [Intégrer l'expérience Amazon Q dans l'expérience de questions-réponses générative Amazon Quick Sight](https://docs.aws.amazon.com/quicksight/latest/user/embedding-gen-bi.html).

Les fonctionnalités facultatives suivantes sont disponibles pour la barre de recherche Q intégrée à l’aide du kit SDK d’intégration. 

### Invoquer les actions de la barre de recherche Q
<a name="w2aac35c27c21c43c31c17c21b7"></a>

Les options suivantes sont prises en charge uniquement pour l’intégration de la barre de recherche Q. 
+ Définir une question dans la barre de recherche Q : cette fonctionnalité envoie une question à la barre de recherche Q et interroge immédiatement la question. Elle ouvre également automatiquement la fenêtre contextuelle Q.

  ```
  qBar.setQBarQuestion('show me monthly revenue');
  ```
+ Fermer la fenêtre contextuelle Q : cette fonctionnalité ferme la fenêtre contextuelle Q et ramène l’iframe à la taille initiale de la barre de recherche Q.

  ```
  qBar.closeQPopover();
  ```

Pour plus d'informations, consultez le [SDK d'intégration Amazon Quick Sight](https://github.com/awslabs/amazon-quicksight-embedding-sdk).

# Intégration des analyses à l'aide des opérations d'API GetDashboardEmbedURL et GetSessionEmbedURL
<a name="embedded-analytics-deprecated"></a>


|  | 
| --- |
|  S’applique à : édition Enterprise  | 


|  | 
| --- |
|    Public cible : développeurs Amazon Quick  | 

Les opérations d'API suivantes pour intégrer les tableaux de bord Amazon Quick Sight et la console Amazon Quick Sight ont été remplacées par les opérations d'GenerateEmbedUrlForRegisteredUserAPI GenerateEmbedUrlForAnonymousUser et. Vous pouvez toujours les utiliser pour intégrer des analyses dans votre application, mais elles ne sont plus maintenues et ne contiennent pas les dernières fonctionnalités d’intégration. Pour découvrir l'expérience up-to-date d'intégration la plus récente, consultez [Intégrer les analyses Amazon Quick Sight dans vos applications](https://docs.aws.amazon.com/quicksight/latest/user/embedding-overview.html)
+ Le fonctionnement de [GetDashboardEmbedUrl](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GetDashboardEmbedUrl.html)l'API intègre des tableaux de bord interactifs.
+ Le fonctionnement de l'[GetSessionEmbedUrl](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GetSessionEmbedUrl.html)API intègre la console Amazon Quick Sight.

**Topics**
+ [

# Intégration des tableaux de bord pour tous les utilisateurs à l’aide de GetDashboardEmbedURL (ancienne API)
](embedded-analytics-dashboards-with-anonymous-users-get.md)
+ [

# Intégration des tableaux de bord pour les utilisateurs enregistrés à l’aide de GetDashboardEmbedUrl (ancienne API)
](embedded-analytics-dashboards-for-authenticated-users-get.md)
+ [

# Intégration de la console Amazon Quick Sight à l'aide de GetSessionEmbedUrl (ancienne API)
](embedded-analytics-full-console-for-authenticated-users-get.md)

# Intégration des tableaux de bord pour tous les utilisateurs à l’aide de GetDashboardEmbedURL (ancienne API)
<a name="embedded-analytics-dashboards-with-anonymous-users-get"></a>

**Important**  
Amazon Quick Sight propose des nouveautés en APIs matière d'intégration des analyses : `GenerateEmbedUrlForAnonymousUser` et`GenerateEmbedUrlForRegisteredUser`.  
Vous pouvez toujours utiliser `GetDashboardEmbedUrl` et `GetSessionEmbedUrl` APIs pour intégrer des tableaux de bord et la console Amazon Quick Sight, mais ils ne contiennent pas les dernières fonctionnalités d'intégration. Pour découvrir l'expérience up-to-date d'intégration la plus récente, consultez la section [Intégration des analyses Amazon Quick Sight dans vos applications](https://docs.aws.amazon.com/quicksight/latest/user/embedding-overview.html).


|  | 
| --- |
|  S’applique à : édition Enterprise  | 


|  | 
| --- |
|    Public cible : développeurs Amazon Quick  | 

Dans les sections suivantes, vous trouverez des informations détaillées sur la façon de configurer des tableaux de bord Amazon Quick Sight intégrés pour tous (utilisateurs non authentifiés) à l'aide d'une URL. GetDashboardEmbed

**Topics**
+ [

# Étape 1 : Configurer des autorisations
](embedded-analytics-dashboards-with-anonymous-users-get-step-1.md)
+ [

# Étape 2 : Obtenir l’URL avec le code d’authentification en pièce jointe
](embedded-analytics-dashboards-with-anonymous-users-get-step-2.md)
+ [

# Étape 3 : Intégrer l’URL du tableau de bord
](embedded-analytics-dashboards-with-anonymous-users-get-step-3.md)

# Étape 1 : Configurer des autorisations
<a name="embedded-analytics-dashboards-with-anonymous-users-get-step-1"></a>

**Important**  
Amazon Quick Sight propose des nouveautés en APIs matière d'intégration des analyses : `GenerateEmbedUrlForAnonymousUser` et`GenerateEmbedUrlForRegisteredUser`.  
Vous pouvez toujours utiliser `GetDashboardEmbedUrl` et `GetSessionEmbedUrl` APIs pour intégrer des tableaux de bord et la console Amazon Quick Sight, mais ils ne contiennent pas les dernières fonctionnalités d'intégration. Pour découvrir l'expérience up-to-date d'intégration la plus récente, consultez la section [Intégration des analyses Amazon Quick Sight dans vos applications](https://docs.aws.amazon.com/quicksight/latest/user/embedding-overview.html).


|  | 
| --- |
|  S’applique à : édition Enterprise  | 


|  | 
| --- |
|    Public cible : développeurs Amazon Quick  | 

Dans la section suivante, vous apprendrez à configurer les autorisations pour l’application backend ou le serveur web. Cette tâche requiert un accès d’administration à IAM.

Chaque utilisateur qui accède à un tableau de bord assume un rôle qui lui permet d'accéder à Amazon Quick Sight et d'accéder au tableau de bord. Pour que cela soit possible, créez un rôle IAM dans votre AWS compte. Associez une politique IAM au rôle afin de fournir des autorisations à n'importe quel utilisateur qui assume ce rôle.

L’exemple de politique suivant fournit ces autorisations à utiliser avec `IdentityType=ANONYMOUS`. Pour que cette approche fonctionne, vous avez également besoin d'un pack de sessions, ou d'une tarification de la capacité de session, sur votre AWS compte. Sinon, lorsqu’un utilisateur tente d’accéder au tableau de bord, l’erreur `UnsupportedPricingPlanException` est renvoyée. 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
              "quicksight:GetDashboardEmbedUrl",
              "quickSight:GetAnonymousUserEmbedUrl"
            ],
            "Resource": "*"
        }
    ]
}
```

------

L’identité IAM de votre application doit avoir une politique d’approbation qui lui est associée afin d’autoriser l’accès au rôle que vous venez de créer. Cela signifie que lorsqu’un utilisateur accède à votre application, votre application peut assumer le rôle pour le compte de l’utilisateur afin d’ouvrir le tableau de bord. L’exemple suivant montre un rôle appelé `QuickSightEmbeddingAnonymousPolicy`, qui possède l’exemple de stratégie précédent en tant que ressource. 

Pour plus d’informations sur les politiques d’approbation, consultez la rubrique [Informations d’identification de sécurité temporaires](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html) dans le *Guide de l’utilisateur IAM*.

# Étape 2 : Obtenir l’URL avec le code d’authentification en pièce jointe
<a name="embedded-analytics-dashboards-with-anonymous-users-get-step-2"></a>

**Important**  
Amazon Quick Sight propose des nouveautés en APIs matière d'intégration des analyses : `GenerateEmbedUrlForAnonymousUser` et`GenerateEmbedUrlForRegisteredUser`.  
Vous pouvez toujours utiliser `GetDashboardEmbedUrl` et `GetSessionEmbedUrl` APIs pour intégrer des tableaux de bord et la console Amazon Quick Sight, mais ils ne contiennent pas les dernières fonctionnalités d'intégration. Pour découvrir l'expérience up-to-date d'intégration la plus récente, consultez la section [Intégration des analyses Amazon Quick Sight dans vos applications](https://docs.aws.amazon.com/quicksight/latest/user/embedding-overview.html).


|  | 
| --- |
|  S’applique à : édition Enterprise  | 


|  | 
| --- |
|    Public cible : développeurs Amazon Quick  | 

Dans la section suivante, vous découvrirez comment authentifier un visiteur anonyme et obtenir l’URL de tableau de bord 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 à Amazon Quick Sight, s'il n'existe pas déjà. Puis, elle transmet un identifiant comme ID de session de rôle unique. 

Les exemples suivants effectuent l’authentification IAM pour le compte de l’utilisateur. Elle transmet un identifiant comme ID de session de rôle unique. 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.GetDashboardEmbedUrlRequest;
import com.amazonaws.services.quicksight.model.GetDashboardEmbedUrlResult;

/**
 * Class to call QuickSight AWS SDK to get url for dashboard embedding.
 */
public class GetQuicksightEmbedUrlNoAuth {

    private static String ANONYMOUS = "ANONYMOUS";

    private final AmazonQuickSight quickSightClient;

    public GetQuicksightEmbedUrlNoAuth() {
        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 dashboardId, // YOUR DASHBOARD ID TO EMBED
            final String addtionalDashboardIds, // ADDITIONAL DASHBOARD-1 ADDITIONAL DASHBOARD-2
            final boolean resetDisabled, // OPTIONAL PARAMETER TO ENABLE DISABLE RESET BUTTON IN EMBEDDED DASHBAORD
            final boolean undoRedoDisabled // OPTIONAL PARAMETER TO ENABLE DISABLE UNDO REDO BUTTONS IN EMBEDDED DASHBAORD
    ) throws Exception {
        GetDashboardEmbedUrlRequest getDashboardEmbedUrlRequest = new GetDashboardEmbedUrlRequest()
                .withDashboardId(dashboardId)
                .withAdditionalDashboardIds(addtionalDashboardIds)
                .withAwsAccountId(accountId)
                .withNamespace("default") // Anonymous embedding requires specifying a valid namespace for which you want the embedding url
                .withIdentityType(ANONYMOUS)
                .withResetDisabled(resetDisabled)
                .withUndoRedoDisabled(undoRedoDisabled);

        GetDashboardEmbedUrlResult dashboardEmbedUrl = quickSightClient.getDashboardEmbedUrl(getDashboardEmbedUrlRequest);

        return dashboardEmbedUrl.getEmbedUrl();
    }
}
```

------
#### [ JavaScript ]

```
global.fetch = require('node-fetch');
const AWS = require('aws-sdk');

function getDashboardEmbedURL(
    accountId, // YOUR AWS ACCOUNT ID
    dashboardId, // YOUR DASHBOARD ID TO EMBED
    additionalDashboardIds, // ADDITIONAL DASHBOARD-1 ADDITIONAL DASHBOARD-2
    quicksightNamespace, // VALID NAMESPACE WHERE YOU WANT TO DO NOAUTH EMBEDDING
    resetDisabled, // OPTIONAL PARAMETER TO ENABLE DISABLE RESET BUTTON IN EMBEDDED DASHBAORD
    undoRedoDisabled, // OPTIONAL PARAMETER TO ENABLE DISABLE UNDO REDO BUTTONS IN EMBEDDED DASHBAORD
    getEmbedUrlCallback, // GETEMBEDURL SUCCESS CALLBACK METHOD
    errorCallback // GETEMBEDURL ERROR CALLBACK METHOD
    ) {
    const getDashboardParams = {
        AwsAccountId: accountId,
        DashboardId: dashboardId,
        AdditionalDashboardIds: additionalDashboardIds,
        Namespace: quicksightNamespace,
        IdentityType: 'ANONYMOUS',
        ResetDisabled: resetDisabled,
        SessionLifetimeInMinutes: 600,
        UndoRedoDisabled: undoRedoDisabled
    };

    const quicksightGetDashboard = new AWS.QuickSight({
        region: process.env.AWS_REGION,
    });

    quicksightGetDashboard.getDashboardEmbedUrl(getDashboardParams, 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
# dashboardId: YOUR DASHBOARD ID TO EMBED
# additionalDashboardIds: ADDITIONAL DASHBOARD-1 ADDITIONAL DASHBOARD-2 WITHOUT COMMAS
# quicksightNamespace: VALID NAMESPACE WHERE YOU WANT TO DO NOAUTH EMBEDDING
# resetDisabled: PARAMETER TO ENABLE DISABLE RESET BUTTON IN EMBEDDED DASHBAORD
# undoRedoDisabled: OPTIONAL PARAMETER TO ENABLE DISABLE UNDO REDO BUTTONS IN EMBEDDED DASHBAORD
def getDashboardURL(accountId, dashboardId, quicksightNamespace, resetDisabled, undoRedoDisabled):
    try:
        response = qs.get_dashboard_embed_url(
            AwsAccountId = accountId,
            DashboardId = dashboardId,
            AdditionalDashboardIds = additionalDashboardIds,
            Namespace = quicksightNamespace,
            IdentityType = 'ANONYMOUS',
            SessionLifetimeInMinutes = 600,
            UndoRedoDisabled = undoRedoDisabled,
            ResetDisabled = resetDisabled
        )
            
        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 du tableau de bord intégré. Vous pouvez utiliser cette URL dans votre site Web ou votre application pour afficher le tableau de bord. 

**Example**  

```
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.getDashboardEmbedUrl({
                'AwsAccountId': '111122223333',
                'DashboardId': 'dashboard-id',
                'AdditionalDashboardIds': 'added-dashboard-id-1 added-dashboard-id-2 added-dashboard-id-3'
                'Namespace' : 'default',
                'IdentityType': 'ANONYMOUS',
                'SessionLifetimeInMinutes': 100,
                'UndoRedoDisabled': false,
                'ResetDisabled': true
            
            }, function(err, data) {
                console.log('Errors: ');
                console.log(err);
                console.log('Response: ');
                console.log(data);
            });
```

**Example**  

```
//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\$1 ]

L’exemple suivant montre le code .NET/C \$1 que vous pouvez utiliser sur le serveur d’applications afin d’obtenir l’URL pour le tableau de bord intégré. Vous pouvez utiliser cette URL dans votre site Web ou votre application pour afficher le tableau de bord. 

**Example**  

```
            var client = new AmazonQuickSightClient(
                AccessKey,
                SecretAccessKey,
                sessionToken,
                Amazon.RegionEndpoint.USEast1);
            try
            {
                Console.WriteLine(
                    client.GetDashboardEmbedUrlAsync(new GetDashboardEmbedUrlRequest
                    {
                        AwsAccountId = “111122223333”,
                        DashboardId = "dashboard-id",
                        AdditionalDashboardIds = "added-dashboard-id-1 added-dashboard-id-2 added-dashboard-id-3",
                        Namespace = default,
                        IdentityType = IdentityType.ANONYMOUS,
                        SessionLifetimeInMinutes = 600,
                        UndoRedoDisabled = false,
                        ResetDisabled = true
                    }).Result.EmbedUrl
                );
            } catch (Exception ex) {
                Console.WriteLine(ex.Message);
            }
```

------
#### [ AWS CLI ]

Pour assumer ce rôle, choisissez l'une des opérations d'API AWS Security Token Service (AWS STS) suivantes :
+ [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)— Utilisez cette opération lorsque vous utilisez une identité IAM pour assumer le rôle.
+ [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html)— Utilisez cette opération lorsque vous utilisez un fournisseur d'identité Web pour authentifier votre utilisateur. 
+ [AssumeRoleWithSaml](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html)— Utilisez cette opération lorsque vous utilisez le langage SAML (Security Assertion Markup Language) 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:GetDashboardEmbedURL`. 

```
aws sts assume-role \
     --role-arn "arn:aws:iam::11112222333:role/QuickSightEmbeddingAnonymousPolicy" \
     --role-session-name anonymous caller
```

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ération `AssumeRole`, ceci est probablement dû au fait que le précédent `SESSION TOKEN` est encore dans les variables de l’environnement. Pour l’effacer, définissez les variables suivantes :  
*AWS\$1ACCESS\$1KEY\$1ID* 
*AWS\$1SECRET\$1CLÉ D'ACCÈS* 
*AWS\$1SESSION\$1JETON* 

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 de `export`.

```
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_dashboard_role/QuickSightEmbeddingAnonymousPolicy`. L’ID de session de rôle se compose du nom de rôle issu du `role-arn` et de la valeur `role-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 visiteur. Cela permet également de garder chaque session séparée et distincte. Si vous utilisez un ensemble de serveurs web, par exemple pour l’équilibrage de charge, et qu’une session est reconnectée à un autre serveur, une nouvelle session démarre.

Pour obtenir une URL signée pour le tableau de bord, appelez `get-dashboard-embed-url` à partir du serveur d’applications. Ceci renvoie l’URL du tableau de bord intégrable. L’exemple suivant montre comment obtenir l’URL d’un tableau de bord intégré à l’aide d’un appel côté serveur pour les utilisateurs qui effectuent des visites anonymes sur votre portail web ou votre application.

```
aws quicksight get-dashboard-embed-url \
     --aws-account-id 111122223333 \
     --dashboard-id dashboard-id \
     --additional-dashboard-ids added-dashboard-id-1 added-dashboard-id-2 added-dashboard-id-3
     --namespace default-or-something-else \
     --identity-type ANONYMOUS \
     --session-lifetime-in-minutes 30 \
     --undo-redo-disabled true \
     --reset-disabled true \
     --user-arn arn:aws:quicksight:us-east-1:111122223333:user/default/QuickSightEmbeddingAnonymousPolicy/embeddingsession
```

Pour de plus amples informations sur l’utilisation de cette opération, veuillez consulter [https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GetDashboardEmbedUrl.html](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GetDashboardEmbedUrl.html). Vous pouvez utiliser cette opération et d’autres opérations d’API dans votre propre code. 

------

# Étape 3 : Intégrer l’URL du tableau de bord
<a name="embedded-analytics-dashboards-with-anonymous-users-get-step-3"></a>

**Important**  
Amazon Quick Sight propose des nouveautés en APIs matière d'intégration des analyses : `GenerateEmbedUrlForAnonymousUser` et`GenerateEmbedUrlForRegisteredUser`.  
Vous pouvez toujours utiliser `GetDashboardEmbedUrl` et `GetSessionEmbedUrl` APIs pour intégrer des tableaux de bord et la console Amazon Quick Sight, mais ils ne contiennent pas les dernières fonctionnalités d'intégration. Pour découvrir l'expérience up-to-date d'intégration la plus récente, consultez la section [Intégration des analyses Amazon Quick Sight dans vos applications](https://docs.aws.amazon.com/quicksight/latest/user/embedding-overview.html).


|  | 
| --- |
|  S’applique à : édition Enterprise  | 


|  | 
| --- |
|    Public cible : développeurs Amazon Quick  | 

Dans la section suivante, vous découvrirez comment utiliser le [SDK d'intégration Amazon Quick Sight (JavaScript) pour intégrer](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk) l'URL du tableau de bord de l'étape 2 à votre site Web ou à la page de votre application. Le kit SDK vous permet d’effectuer les opérations suivantes : 
+ Insérer le tableau de bord sur une page HTML.
+ Transmettre les paramètres au tableau de bord.
+ Gérer les états d’erreurs avec des messages personnalisés pour votre application.

Appelez l’opération d’API `GetDashboardEmbedUrl` pour obtenir l’URL que vous pouvez intégrer dans votre application. Cette URL est valable pendant 5 minutes et la session qui en résulte est valide pendant 10 heures. L’opération d’API fournit l’URL avec un `auth_code` qui permet une session à connexion unique. 

Voici un exemple de réponse de `get-dashboard-embed-url`.

```
//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"
}
```

Intégrez ce tableau de bord à votre page Web à l'aide du [SDK Amazon Quick Sight Embedding](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk) ou en ajoutant cette URL dans un iframe. Si vous définissez une hauteur et une largeur fixes (en pixels), Amazon Quick Sight les utilise et ne modifie pas votre visuel lorsque votre fenêtre est redimensionnée. Si vous définissez un pourcentage relatif de hauteur et de largeur, Amazon Quick Sight fournit une mise en page réactive qui est modifiée en fonction de l'évolution de la taille de votre fenêtre. En utilisant le SDK Amazon Quick Sight Embedding, vous pouvez également contrôler les paramètres du tableau de bord et recevoir des rappels en termes de fin de chargement de page et d'erreurs. 

L’exemple suivant montre comment utiliser l’URL générée. Ce code réside dans votre serveur d’applications.

```
<!DOCTYPE html>
<html>

<head>
    <title>Basic Embed</title>
    <!-- You can download the latest QuickSight embedding SDK version from https://www.npmjs.com/package/amazon-quicksight-embedding-sdk -->
    <!-- Or you can do "npm install amazon-quicksight-embedding-sdk", if you use npm for javascript dependencies -->
    <script src="./quicksight-embedding-js-sdk.min.js"></script>
    <script type="text/javascript">
        var dashboard;

        function embedDashboard() {
            var containerDiv = document.getElementById("embeddingContainer");
            var options = {
                // replace this dummy url with the one generated via embedding API
                url: "https://us-east-1.quicksight.aws.amazon.com/sn/dashboards/dashboardId?isauthcode=true&identityprovider=quicksight&code=authcode",  
                container: containerDiv,
                scrolling: "no",
                height: "700px",
                width: "1000px",
                footerPaddingEnabled: true
            };
            dashboard = QuickSightEmbedding.embedDashboard(options);
        }
    </script>
</head>

<body onload="embedDashboard()">
    <div id="embeddingContainer"></div>
</body>

</html>
```

Pour que cet exemple fonctionne, assurez-vous d'utiliser le SDK Amazon Quick Sight Embedding pour charger le tableau de bord intégré sur votre site Web à l'aide de. JavaScript Pour obtenir votre copie, effectuez l’une des actions suivantes :
+ Téléchargez le SDK d'[intégration Amazon Quick Sight](https://github.com/awslabs/amazon-quicksight-embedding-sdk#step-3-create-the-quicksight-session-object) depuis. GitHub Ce référentiel est géré par un groupe de développeurs Amazon Quick Sight.
+ Téléchargez la dernière version du SDK QuickSight d'intégration sur. [https://www.npmjs.com/package/amazon-quicksight-embedding-sdk](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk)
+ Si vous utilisez `npm` for JavaScript dependencies, téléchargez-le et installez-le en exécutant la commande suivante.

  ```
  npm install amazon-quicksight-embedding-sdk
  ```

# Intégration des tableaux de bord pour les utilisateurs enregistrés à l’aide de GetDashboardEmbedUrl (ancienne API)
<a name="embedded-analytics-dashboards-for-authenticated-users-get"></a>

**Important**  
Amazon Quick Sight propose des nouveautés en APIs matière d'intégration des analyses : `GenerateEmbedUrlForAnonymousUser` et`GenerateEmbedUrlForRegisteredUser`.  
Vous pouvez toujours utiliser `GetDashboardEmbedUrl` et `GetSessionEmbedUrl` APIs pour intégrer des tableaux de bord et la console Amazon Quick Sight, mais ils ne contiennent pas les dernières fonctionnalités d'intégration. Pour découvrir l'expérience up-to-date d'intégration la plus récente, consultez la section [Intégration des analyses Amazon Quick Sight dans vos applications](https://docs.aws.amazon.com/quicksight/latest/user/embedding-overview.html).

Dans les sections suivantes, vous trouverez des informations détaillées sur la façon de configurer des tableaux de bord Amazon Quick Sight intégrés pour les utilisateurs enregistrés. `GetDashboardEmbedUrl`

**Topics**
+ [

# Étape 1 : Configurer des autorisations
](embedded-dashboards-for-authenticated-users-get-step-1.md)
+ [

# Étape 2 : Obtenir l’URL avec le code d’authentification en pièce jointe
](embedded-dashboards-for-authenticated-users-get-step-2.md)
+ [

# Étape 3 : Intégrer l’URL du tableau de bord
](embedded-dashboards-for-authenticated-users-get-step-3.md)

# Étape 1 : Configurer des autorisations
<a name="embedded-dashboards-for-authenticated-users-get-step-1"></a>

**Important**  
Amazon Quick Sight propose des nouveautés en APIs matière d'intégration des analyses : `GenerateEmbedUrlForAnonymousUser` et`GenerateEmbedUrlForRegisteredUser`.  
Vous pouvez toujours utiliser `GetDashboardEmbedUrl` et `GetSessionEmbedUrl` APIs pour intégrer des tableaux de bord et la console Amazon Quick Sight, mais ils ne contiennent pas les dernières fonctionnalités d'intégration. Pour découvrir l'expérience up-to-date d'intégration la plus récente, consultez la section [Intégration des analyses Amazon Quick Sight dans vos applications](https://docs.aws.amazon.com/quicksight/latest/user/embedding-overview.html).

Dans la section suivante, vous apprendrez à configurer les autorisations pour l’application backend ou le serveur web. Cette tâche requiert un accès d’administration à IAM.

Chaque utilisateur qui accède à un tableau de bord assume un rôle qui lui permet d'accéder à Amazon Quick Sight et d'accéder au tableau de bord. Pour que cela soit possible, créez un rôle IAM dans votre AWS compte. Associez une politique IAM au rôle afin de fournir des autorisations à n’importe quel utilisateur qui assume ce rôle. Le rôle IAM doit fournir des autorisations pour récupérer le tableau de bord URLs. Pour cela, ajoutez `quicksight:GetDashboardEmbedUrl`.

L’exemple de politique suivant fournit ces autorisations à utiliser avec `IdentityType=IAM`. 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "quicksight:GetDashboardEmbedUrl"
            ],
            "Resource": "*"
        }
    ]
}
```

------

L’exemple de politique suivant autorise la récupération de l’URL d’un tableau de bord. Vous pouvez utiliser cette politique `quicksight:RegisterUser` si vous créez pour la première fois des utilisateurs qui doivent lire Amazon Quick Sight. 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": "quicksight:RegisterUser",
      "Resource": "*",
      "Effect": "Allow"
    },
    {
      "Action": "quicksight:GetDashboardEmbedUrl",
      "Resource": "*",
      "Effect": "Allow"
    }
  ]
}
```

------

Si vous utilisez `QUICKSIGHT` comme `identityType` et fournissez l’Amazon Resource Name (ARN) de l’utilisateur, vous devez également autoriser l’action `quicksight:GetAuthCode` dans votre politique. L’exemple de stratégie suivant fournit cette autorisation.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "quicksight:GetDashboardEmbedUrl",
        "quicksight:GetAuthCode"
      ],
      "Resource": "*"
    }
  ]
}
```

------

L’identité IAM de votre application doit avoir une politique d’approbation qui lui est associée afin d’autoriser l’accès au rôle que vous venez de créer. Cela signifie que lorsqu'un utilisateur accède à votre application, celle-ci peut assumer le rôle en son nom et configurer l'utilisateur dans Amazon Quick Sight. L’exemple suivant montre un rôle appelé `embedding_quicksight_dashboard_role`, qui possède l’exemple de stratégie précédent en tant que ressource. 

Pour plus d’informations sur les stratégies d’approbation pour OpenId Connect ou l’authentification SAML, consultez les sections suivantes du *Guide de l’utilisateur IAM : *
+ [Création d’un rôle pour l’identité web ou pour la fédération OpenID Connect (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_oidc.html)
+ [Création d’un rôle pour la fédération SAML 2.0 (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_saml.html)

# Étape 2 : Obtenir l’URL avec le code d’authentification en pièce jointe
<a name="embedded-dashboards-for-authenticated-users-get-step-2"></a>

**Important**  
Amazon Quick Sight propose des nouveautés en APIs matière d'intégration des analyses : `GenerateEmbedUrlForAnonymousUser` et`GenerateEmbedUrlForRegisteredUser`.  
Vous pouvez toujours utiliser `GetDashboardEmbedUrl` et `GetSessionEmbedUrl` APIs pour intégrer des tableaux de bord et la console Amazon Quick Sight, mais ils ne contiennent pas les dernières fonctionnalités d'intégration. Pour découvrir l'expérience up-to-date d'intégration la plus récente, consultez la section [Intégration des analyses Amazon Quick Sight dans vos applications](https://docs.aws.amazon.com/quicksight/latest/user/embedding-overview.html).

Dans la section suivante, vous découvrirez comment authentifier votre utilisateur et obtenir l’URL de tableau de bord 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 à Amazon Quick Sight, 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 utilisateur du tableau de bord est configuré de manière unique dans Amazon Quick Sight. 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.AWSStaticCredentialsProvider;
import com.amazonaws.auth.BasicSessionCredentials;
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.GetDashboardEmbedUrlRequest;
import com.amazonaws.services.quicksight.model.GetDashboardEmbedUrlResult;
import com.amazonaws.services.securitytoken.AWSSecurityTokenService;
import com.amazonaws.services.securitytoken.model.AssumeRoleRequest;
import com.amazonaws.services.securitytoken.model.AssumeRoleResult;

/**
 * Class to call QuickSight AWS SDK to get url for dashboard embedding.
 */
public class GetQuicksightEmbedUrlIAMAuth {

    private static String IAM = "IAM";

    private final AmazonQuickSight quickSightClient;

    private final AWSSecurityTokenService awsSecurityTokenService;

    public GetQuicksightEmbedUrlIAMAuth(final AWSSecurityTokenService awsSecurityTokenService) {
        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();
        this.awsSecurityTokenService = awsSecurityTokenService;
    }

    public String getQuicksightEmbedUrl(
            final String accountId, // YOUR AWS ACCOUNT ID
            final String dashboardId, // YOUR DASHBOARD ID TO EMBED
            final String openIdToken, // TOKEN TO ASSUME ROLE WITH ROLEARN
            final String roleArn, // IAM USER ROLE TO USE FOR EMBEDDING
            final String sessionName, // SESSION NAME FOR THE ROLEARN ASSUME ROLE
            final boolean resetDisabled, // OPTIONAL PARAMETER TO ENABLE DISABLE RESET BUTTON IN EMBEDDED DASHBAORD
            final boolean undoRedoDisabled // OPTIONAL PARAMETER TO ENABLE DISABLE UNDO REDO BUTTONS IN EMBEDDED DASHBAORD
    ) throws Exception {
        AssumeRoleRequest request = new AssumeRoleRequest()
                .withRoleArn(roleArn)
                .withRoleSessionName(sessionName)
                .withTokenCode(openIdToken)
                .withDurationSeconds(3600);
        AssumeRoleResult assumeRoleResult = awsSecurityTokenService.assumeRole(request);

        AWSCredentials temporaryCredentials = new BasicSessionCredentials(
                assumeRoleResult.getCredentials().getAccessKeyId(),
                assumeRoleResult.getCredentials().getSecretAccessKey(),
                assumeRoleResult.getCredentials().getSessionToken());
        AWSStaticCredentialsProvider awsStaticCredentialsProvider = new AWSStaticCredentialsProvider(temporaryCredentials);

        GetDashboardEmbedUrlRequest getDashboardEmbedUrlRequest = new GetDashboardEmbedUrlRequest()
                .withDashboardId(dashboardId)
                .withAwsAccountId(accountId)
                .withIdentityType(IAM)
                .withResetDisabled(resetDisabled)
                .withUndoRedoDisabled(undoRedoDisabled)
                .withRequestCredentialsProvider(awsStaticCredentialsProvider);

        GetDashboardEmbedUrlResult dashboardEmbedUrl = quickSightClient.getDashboardEmbedUrl(getDashboardEmbedUrlRequest);

        return dashboardEmbedUrl.getEmbedUrl();
    }
}
```

------
#### [ JavaScript ]

```
global.fetch = require('node-fetch');
const AWS = require('aws-sdk');

function getDashboardEmbedURL(
    accountId, // YOUR AWS ACCOUNT ID
    dashboardId, // YOUR DASHBOARD ID TO EMBED
    openIdToken, // TOKEN TO ASSUME ROLE WITH ROLEARN
    roleArn, // IAM USER ROLE TO USE FOR EMBEDDING
    sessionName, // SESSION NAME FOR THE ROLEARN ASSUME ROLE
    resetDisabled, // OPTIONAL PARAMETER TO ENABLE DISABLE RESET BUTTON IN EMBEDDED DASHBAORD
    undoRedoDisabled, // OPTIONAL PARAMETER TO ENABLE DISABLE UNDO REDO BUTTONS IN EMBEDDED DASHBAORD
    getEmbedUrlCallback, // GETEMBEDURL SUCCESS CALLBACK METHOD
    errorCallback // GETEMBEDURL ERROR CALLBACK METHOD
    ) {
    const stsClient = new AWS.STS();
    let stsParams = {
        RoleSessionName: sessionName,
        WebIdentityToken: openIdToken,
        RoleArn: roleArn
    }

    stsClient.assumeRoleWithWebIdentity(stsParams, function(err, data) {
        if (err) {
            console.log('Error assuming role');
            console.log(err, err.stack);
            errorCallback(err);
        } else {
            const getDashboardParams = {
                AwsAccountId: accountId,
                DashboardId: dashboardId,
                IdentityType: 'IAM',
                ResetDisabled: resetDisabled,
                SessionLifetimeInMinutes: 600,
                UndoRedoDisabled: undoRedoDisabled
            };

            const quicksightGetDashboard = new AWS.QuickSight({
                region: process.env.AWS_REGION,
                credentials: {
                    accessKeyId: data.Credentials.AccessKeyId,
                    secretAccessKey: data.Credentials.SecretAccessKey,
                    sessionToken: data.Credentials.SessionToken,
                    expiration: data.Credentials.Expiration
                }
            });

            quicksightGetDashboard.getDashboardEmbedUrl(getDashboardParams, 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

# 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
# dashboardId: YOUR DASHBOARD ID TO EMBED
# openIdToken: TOKEN TO ASSUME ROLE WITH ROLEARN
# roleArn: IAM USER ROLE TO USE FOR EMBEDDING
# sessionName: SESSION NAME FOR THE ROLEARN ASSUME ROLE
# resetDisabled: PARAMETER TO ENABLE DISABLE RESET BUTTON IN EMBEDDED DASHBAORD
# undoRedoDisabled: PARAMETER TO ENABLE DISABLE UNDO REDO BUTTONS IN EMBEDDED DASHBAORD
def getDashboardURL(accountId, dashboardId, openIdToken, roleArn, sessionName, resetDisabled, undoRedoDisabled):
    try:
        assumedRole = sts.assume_role(
            RoleArn = roleArn,
            RoleSessionName = sessionName,
            WebIdentityToken = openIdToken
        )
    except ClientError as e:
        return "Error assuming role: " + str(e)
    else: 
        assumedRoleSession = boto3.Session(
            aws_access_key_id = assumedRole['Credentials']['AccessKeyId'],
            aws_secret_access_key = assumedRole['Credentials']['SecretAccessKey'],
            aws_session_token = assumedRole['Credentials']['SessionToken'],
        )
        try:
            quickSight = assumedRoleSession.client('quicksight',region_name='us-east-1')
            
            response = quickSight.get_dashboard_embed_url(
                 AwsAccountId = accountId,
                 DashboardId = dashboardId,
                 IdentityType = 'IAM',
                 SessionLifetimeInMinutes = 600,
                 UndoRedoDisabled = undoRedoDisabled,
                 ResetDisabled = resetDisabled
            )
            
            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:
            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 du tableau de bord intégré. Vous pouvez utiliser cette URL dans votre site Web ou votre application pour afficher le tableau de bord. 

**Example**  

```
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.getDashboardEmbedUrl({
                'AwsAccountId': '111122223333',
                'DashboardId': '1c1fe111-e2d2-3b30-44ef-a0e111111cde',
                'IdentityType': 'IAM',
                'ResetDisabled': true,
                'SessionLifetimeInMinutes': 100,
                'UndoRedoDisabled': false,
                'StatePersistenceEnabled': true
            
            }, function(err, data) {
                console.log('Errors: ');
                console.log(err);
                console.log('Response: ');
                console.log(data);
            });
```

**Example**  

```
//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\$1 ]

L’exemple suivant montre le code .NET/C \$1 que vous pouvez utiliser sur le serveur d’applications afin d’obtenir l’URL pour le tableau de bord intégré. Vous pouvez utiliser cette URL dans votre site Web ou votre application pour afficher le tableau de bord. 

**Example**  

```
            var client = new AmazonQuickSightClient(
                AccessKey,
                SecretAccessKey,
                sessionToken,
                Amazon.RegionEndpoint.USEast1);
            try
            {
                Console.WriteLine(
                    client.GetDashboardEmbedUrlAsync(new GetDashboardEmbedUrlRequest
                    {
                        AwsAccountId = “111122223333”,
                        DashboardId = "1c1fe111-e2d2-3b30-44ef-a0e111111cde",
                        IdentityType = EmbeddingIdentityType.IAM,
                        ResetDisabled = true,
                        SessionLifetimeInMinutes = 100,
                        UndoRedoDisabled = false,
                        StatePersistenceEnabled = true
                    }).Result.EmbedUrl
                );
            } catch (Exception ex) {
                Console.WriteLine(ex.Message);
            }
```

------
#### [ AWS CLI ]

Pour assumer ce rôle, choisissez l'une des opérations d'API AWS Security Token Service (AWS STS) suivantes :
+ [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)— Utilisez cette opération lorsque vous utilisez une identité IAM pour assumer le rôle.
+ [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html)— Utilisez cette opération lorsque vous utilisez un fournisseur d'identité Web pour authentifier votre utilisateur. 
+ [AssumeRoleWithSaml](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html)— 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:GetDashboardEmbedURL`. Si vous envisagez d'ajouter des utilisateurs lorsqu'ils ouvrent un just-in-time tableau de bord pour la première fois, les autorisations doivent également être activées pour le rôle`quicksight:RegisterUser`.

```
aws sts assume-role \
     --role-arn "arn:aws:iam::111122223333:role/embedding_quicksight_dashboard_role" \
     --role-session-name john.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ération `AssumeRole`, ceci est probablement dû au fait que le précédent `SESSION TOKEN` est encore dans les variables de l’environnement. Pour l’effacer, définissez les variables suivantes :  
*AWS\$1ACCESS\$1KEY\$1ID* 
*AWS\$1SECRET\$1CLÉ D'ACCÈS* 
*AWS\$1SESSION\$1JETON* 

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 de `export`.

```
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_dashboard_role/john.doe@example.com`. L’ID de session de rôle se compose du nom de rôle issu du `role-arn` et de la valeur `role-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. Le *throttling* est une fonctionnalité de sécurité qui empêche le même utilisateur d'accéder à Amazon Quick Sight depuis plusieurs sites. 

L'ID de session du rôle devient également le nom d'utilisateur dans Amazon Quick Sight. Vous pouvez utiliser ce modèle pour configurer vos utilisateurs dans Amazon Quick Sight à l'avance, ou pour les configurer la première fois qu'ils accèdent au tableau de bord. 

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 [RegisterUser[DescribeUser](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_DescribeUser.html)](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_RegisterUser.html), et sur les autres opérations de l'API Amazon Quick Sight, consultez la [référence de l'API Amazon Quick Sight](https://docs.aws.amazon.com/quicksight/latest/APIReference/Welcome.html).

```
aws quicksight register-user \
     --aws-account-id 111122223333 \
     --namespace default \
     --identity-type IAM \
     --iam-arn "arn:aws:iam::111122223333:role/embedding_quicksight_dashboard_role" \
     --user-role READER \
     --user-name jhnd \
     --session-name "john.doe@example.com" \
     --email john.doe@example.com \
     --region us-east-1 \
     --custom-permissions-name TeamA1
```

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 la première fois qu'ils accèdent à Amazon Quick Sight. Pour les utilisateurs Microsoft AD, vous pouvez utiliser `DescribeUser` pour obtenir l’ARN de l’utilisateur.

La première fois qu'un utilisateur accède à Amazon Quick Sight, vous pouvez également ajouter cet utilisateur au groupe avec lequel le tableau de bord est partagé. 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 d'Amazon Quick Sight et qui a accès au tableau de bord. 

Enfin, pour obtenir une URL signée pour le tableau de bord, appelez `get-dashboard-embed-url` à partir du serveur d’applications. Ceci renvoie l’URL du tableau de bord intégrable. L'exemple suivant montre comment obtenir l'URL d'un tableau de bord intégré à l'aide d'un appel côté serveur pour les utilisateurs authentifiés par le biais d'IAM AWS Managed Microsoft AD Identity Center.

```
aws quicksight get-dashboard-embed-url \
     --aws-account-id 111122223333 \
     --dashboard-id 1a1ac2b2-3fc3-4b44-5e5d-c6db6778df89 \
     --identity-type IAM \
     --session-lifetime-in-minutes 30 \
     --undo-redo-disabled true \
     --reset-disabled true \
     --state-persistence-enabled true \
     --user-arn arn:aws:quicksight:us-east-1:111122223333:user/default/embedding_quicksight_dashboard_role/embeddingsession
```

Pour de plus amples informations sur l’utilisation de cette opération, veuillez consulter [https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GetDashboardEmbedUrl.html](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GetDashboardEmbedUrl.html). Vous pouvez utiliser cette opération et d’autres opérations d’API dans votre propre code. 

------

# Étape 3 : Intégrer l’URL du tableau de bord
<a name="embedded-dashboards-for-authenticated-users-get-step-3"></a>

**Important**  
Amazon Quick Sight propose des nouveautés en APIs matière d'intégration des analyses : `GenerateEmbedUrlForAnonymousUser` et`GenerateEmbedUrlForRegisteredUser`.  
Vous pouvez toujours utiliser `GetDashboardEmbedUrl` et `GetSessionEmbedUrl` APIs pour intégrer des tableaux de bord et la console Amazon Quick Sight, mais ils ne contiennent pas les dernières fonctionnalités d'intégration. Pour découvrir l'expérience up-to-date d'intégration la plus récente, consultez la section [Intégration des analyses Amazon Quick Sight dans vos applications](https://docs.aws.amazon.com/quicksight/latest/user/embedding-overview.html).

Dans la section suivante, vous découvrirez comment utiliser le [SDK d'intégration Amazon Quick Sight (JavaScript) pour intégrer](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk) l'URL du tableau de bord de l'étape 3 à votre site Web ou à la page de votre application. Le kit SDK vous permet d’effectuer les opérations suivantes : 
+ Insérer le tableau de bord sur une page HTML.
+ Transmettre les paramètres au tableau de bord.
+ Gérer les états d’erreurs avec des messages personnalisés pour votre application.

Appelez l’opération d’API `GetDashboardEmbedUrl` pour obtenir l’URL que vous pouvez intégrer dans votre application. Cette URL est valable pendant 5 minutes et la session qui en résulte est valide pendant 10 heures. L’opération d’API fournit l’URL avec un `auth_code` qui permet une session à connexion unique. 

Voici un exemple de réponse de `get-dashboard-embed-url`.

```
//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"
}
```

Intégrez ce tableau de bord à votre page Web à l'aide du [SDK d'intégration Amazon Quick Sight](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk) ou en ajoutant cette URL dans un iframe. Si vous définissez une hauteur et une largeur fixes (en pixels), Amazon Quick Sight les utilise et ne modifie pas votre visuel lorsque votre fenêtre est redimensionnée. Si vous définissez un pourcentage relatif de hauteur et de largeur, Amazon Quick Sight fournit une mise en page réactive qui est modifiée en fonction de l'évolution de la taille de votre fenêtre. En utilisant le SDK Amazon Quick Sight Embedding, vous pouvez également contrôler les paramètres du tableau de bord et recevoir des rappels en termes de fin de chargement de page et d'erreurs. 

L’exemple suivant montre comment utiliser l’URL générée. Ce code est généré sur votre serveur d’applications.

```
<!DOCTYPE html>
<html>

<head>
    <title>Basic Embed</title>

    <script src="./quicksight-embedding-js-sdk.min.js"></script>
    <script type="text/javascript">
        var dashboard;

        function embedDashboard() {
            var containerDiv = document.getElementById("embeddingContainer");
            var options = {
                // replace this dummy url with the one generated via embedding API
                url: "https://us-east-1.quicksight.aws.amazon.com/sn/dashboards/dashboardId?isauthcode=true&identityprovider=quicksight&code=authcode",  
                container: containerDiv,
                scrolling: "no",
                height: "700px",
                width: "1000px",
                footerPaddingEnabled: true
            };
            dashboard = QuickSightEmbedding.embedDashboard(options);
        }
    </script>
</head>

<body onload="embedDashboard()">
    <div id="embeddingContainer"></div>
</body>

</html>
```

Pour que cet exemple fonctionne, assurez-vous d'utiliser le SDK Amazon Quick Sight Embedding pour charger le tableau de bord intégré sur votre site Web à l'aide de. JavaScript Pour obtenir votre copie, effectuez l’une des actions suivantes :
+ Téléchargez le SDK d'[intégration Amazon Quick Sight](https://github.com/awslabs/amazon-quicksight-embedding-sdk#step-3-create-the-quicksight-session-object) depuis. GitHub Ce référentiel est géré par un groupe de développeurs Amazon Quick Sight.
+ Téléchargez la dernière version du SDK d'intégration sur. [https://www.npmjs.com/package/amazon-quicksight-embedding-sdk](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk)
+ Si vous utilisez `npm` for JavaScript dependencies, téléchargez-le et installez-le en exécutant la commande suivante.

  ```
  npm install amazon-quicksight-embedding-sdk
  ```

# Intégration de la console Amazon Quick Sight à l'aide de GetSessionEmbedUrl (ancienne API)
<a name="embedded-analytics-full-console-for-authenticated-users-get"></a>

**Important**  
Amazon Quick Sight propose des nouveautés en APIs matière d'intégration des analyses : `GenerateEmbedUrlForAnonymousUser` et`GenerateEmbedUrlForRegisteredUser`.  
Vous pouvez toujours utiliser `GetDashboardEmbedUrl` et `GetSessionEmbedUrl` APIs pour intégrer des tableaux de bord et la console Amazon Quick Sight, mais ils ne contiennent pas les dernières fonctionnalités d'intégration. Pour découvrir l'expérience up-to-date d'intégration la plus récente, consultez la section [Intégration des analyses Amazon Quick Sight dans vos applications](https://docs.aws.amazon.com/quicksight/latest/user/embedding-overview.html).


|  | 
| --- |
|  S’applique à : édition Enterprise  | 


|  | 
| --- |
|    Public cible : développeurs Amazon Quick  | 

Dans les sections suivantes, vous trouverez des informations détaillées sur la manière de fournir l'expérience de console Amazon Quick Sight dans un portail de création personnalisé pour les utilisateurs enregistrés utilisant l'`GetSessionEmbedUrl`API. 

**Topics**
+ [

# Étape 1 : Configurer des autorisations
](embedded-analytics-full-console-for-authenticated-users-get-step-1.md)
+ [

# Étape 2 : Obtenir l’URL avec le code d’authentification en pièce jointe
](embedded-analytics-full-console-for-authenticated-users-get-step-2.md)
+ [

# Étape 3 : Intégrer l’URL de la session de console
](embedded-analytics-full-console-for-authenticated-users-get-step-3.md)

# Étape 1 : Configurer des autorisations
<a name="embedded-analytics-full-console-for-authenticated-users-get-step-1"></a>

**Important**  
Amazon Quick Sight propose des nouveautés en APIs matière d'intégration des analyses : `GenerateEmbedUrlForAnonymousUser` et`GenerateEmbedUrlForRegisteredUser`.  
Vous pouvez toujours utiliser `GetDashboardEmbedUrl` et `GetSessionEmbedUrl` APIs pour intégrer des tableaux de bord et la console Amazon Quick Sight, mais ils ne contiennent pas les dernières fonctionnalités d'intégration. Pour découvrir l'expérience up-to-date d'intégration la plus récente, consultez la section [Intégration des analyses Amazon Quick Sight dans vos applications](https://docs.aws.amazon.com/quicksight/latest/user/embedding-overview.html).

Dans la section suivante, vous apprendrez à configurer les autorisations pour l’application backend ou le serveur web. Cette tâche requiert un accès d’administration à IAM.

Chaque utilisateur qui accède à Amazon Quick Sight assume un rôle qui lui donne accès à Amazon Quick Sight et les autorisations nécessaires pour accéder à la session de console. Pour que cela soit possible, créez un rôle IAM dans votre AWS compte. Associez une politique IAM au rôle afin de fournir des autorisations à n’importe quel utilisateur qui assume ce rôle. Ajoutez `quicksight:RegisterUser` des autorisations pour garantir que le lecteur puisse accéder à Amazon Quick Sight en lecture seule, sans avoir accès à d'autres données ou fonctionnalités de création. Le rôle IAM doit également fournir des autorisations pour récupérer la session URLs de console. Pour cela, ajoutez `quicksight:GetSessionEmbedUrl`.

L’exemple de politique suivant fournit ces autorisations à utiliser avec `IdentityType=IAM`. 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": "quicksight:RegisterUser",
      "Resource": "*",
      "Effect": "Allow"
    },
    {
      "Action": "quicksight:GetSessionEmbedUrl",
      "Resource": "*",
      "Effect": "Allow"
    }
  ]
}
```

------

L’exemple de politique suivant autorise la récupération de l’URL d’une session de console. Vous utilisez la politique sans `quicksight:RegisterUser` si vous créez des utilisateurs avant qu’ils n’accèdent à une session intégrée.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "quicksight:GetSessionEmbedUrl"
            ],
            "Resource": "*"
        }
    ]
}
```

------

Si vous utilisez `QUICKSIGHT` comme `identityType` et fournissez l’Amazon Resource Name (ARN) de l’utilisateur, vous devez également autoriser l’action `quicksight:GetAuthCode` dans votre politique. L’exemple de stratégie suivant fournit cette autorisation.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "quicksight:GetSessionEmbedUrl",
        "quicksight:GetAuthCode"
      ],
      "Resource": "*"
    }
  ]
}
```

------

L’identité IAM de votre application doit avoir une politique d’approbation qui lui est associée afin d’autoriser l’accès au rôle que vous venez de créer. Cela signifie que lorsqu'un utilisateur accède à votre application, celle-ci peut assumer le rôle en son nom et configurer l'utilisateur dans Amazon Quick Sight. L’exemple suivant montre un rôle appelé `embedding_quicksight_console_session_role`, qui possède l’exemple de stratégie précédent en tant que ressource. 

Pour plus d’informations sur les stratégies d’approbation pour OpenId Connect ou l’authentification SAML, consultez les sections suivantes du *Guide de l’utilisateur IAM : *
+ [Création d’un rôle pour l’identité web ou pour la fédération OpenID Connect (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_oidc.html)
+ [Création d’un rôle pour la fédération SAML 2.0 (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_saml.html)

# Étape 2 : Obtenir l’URL avec le code d’authentification en pièce jointe
<a name="embedded-analytics-full-console-for-authenticated-users-get-step-2"></a>

**Important**  
Amazon Quick Sight propose des nouveautés en APIs matière d'intégration des analyses : `GenerateEmbedUrlForAnonymousUser` et`GenerateEmbedUrlForRegisteredUser`.  
Vous pouvez toujours utiliser `GetDashboardEmbedUrl` et `GetSessionEmbedUrl` APIs pour intégrer des tableaux de bord et la console Amazon Quick Sight, mais ils ne contiennent pas les dernières fonctionnalités d'intégration. Pour découvrir l'expérience up-to-date d'intégration la plus récente, consultez la section [Intégration des analyses Amazon Quick Sight dans vos applications](https://docs.aws.amazon.com/quicksight/latest/user/embedding-overview.html).

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 à Amazon Quick Sight, 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 utilisateur de la session de console est configuré de manière unique dans Amazon Quick Sight. 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. 

**Example**  

```
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);
            });
```

**Example**  

```
//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\$1 ]

L’exemple suivant montre le code .NET/C \$1 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. 

**Example**  

```
            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 ce rôle, choisissez l'une des opérations d'API AWS Security Token Service (AWS STS) suivantes :
+ [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)— Utilisez cette opération lorsque vous utilisez une identité IAM pour assumer le rôle.
+ [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html)— Utilisez cette opération lorsque vous utilisez un fournisseur d'identité Web pour authentifier votre utilisateur. 
+ [AssumeRoleWithSaml](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html)— 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' just-in-timeajouter des utilisateurs lorsqu'ils ouvrent Amazon Quick Sight pour la première fois, les autorisations doivent également être activées pour le rôle`quicksight:RegisterUser`.

```
aws sts assume-role \
     --role-arn "arn:aws:iam::111122223333:role/embedding_quicksight_dashboard_role" \
     --role-session-name john.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ération `AssumeRole`, ceci est probablement dû au fait que le précédent `SESSION TOKEN` est encore dans les variables de l’environnement. Pour l’effacer, définissez les variables suivantes :  
*AWS\$1ACCESS\$1KEY\$1ID* 
*AWS\$1SECRET\$1CLÉ D'ACCÈS* 
*AWS\$1SESSION\$1JETON* 

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 de `export`.

```
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 du `role-arn` et de la valeur `role-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. Le throttling est une fonctionnalité de sécurité qui empêche le même utilisateur d'accéder à Amazon Quick Sight depuis plusieurs sites. 

L'ID de session du rôle devient également le nom d'utilisateur dans Amazon Quick Sight. Vous pouvez utiliser ce modèle pour configurer vos utilisateurs dans Amazon Quick Sight à l'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 [RegisterUser[DescribeUser](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_DescribeUser.html)](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_RegisterUser.html), et sur les autres opérations de l'API Amazon Quick Sight, consultez la [référence de l'API Amazon Quick Sight](https://docs.aws.amazon.com/quicksight/latest/APIReference/Welcome.html).

```
aws quicksight register-user \
     --aws-account-id 111122223333 \
     --namespace default \
     --identity-type IAM \
     --iam-arn "arn:aws:iam::111122223333:role/embedding_quicksight_dashboard_role" \
     --user-role READER \
     --user-name jhnd \
     --session-name "john.doe@example.com" \
     --email john.doe@example.com \
     --region us-east-1 \
     --custom-permissions-name TeamA1
```

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 la première fois qu'ils accèdent à Amazon Quick Sight. Pour les utilisateurs Microsoft AD, vous pouvez utiliser `DescribeUser` pour obtenir l’ARN de l’utilisateur.

La première fois qu'un utilisateur accède à Amazon Quick Sight, vous pouvez également ajouter cet utilisateur 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 d'Amazon Quick Sight et qui a accès à la session de console Amazon Quick Sight. 

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 montre 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 par le biais de l'authentification unique (IAM AWS Managed Microsoft AD Identity Center).

```
aws quicksight get-dashboard-embed-url \
     --aws-account-id 111122223333 \
     --entry-point the-url-for--the-console-session \
     --session-lifetime-in-minutes 600 \
     --user-arn arn:aws:quicksight:us-east-1:111122223333:user/default/embedding_quicksight_dashboard_role/embeddingsession
```

Pour de plus amples informations sur l’utilisation de cette opération, veuillez consulter [https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GetSessionEmbedUrl.html](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GetSessionEmbedUrl.html). Vous pouvez utiliser cette opération et d’autres opérations d’API dans votre propre code. 

------

# Étape 3 : Intégrer l’URL de la session de console
<a name="embedded-analytics-full-console-for-authenticated-users-get-step-3"></a>

**Important**  
Amazon Quick Sight propose des nouveautés en APIs matière d'intégration des analyses : `GenerateEmbedUrlForAnonymousUser` et`GenerateEmbedUrlForRegisteredUser`.  
Vous pouvez toujours utiliser `GetDashboardEmbedUrl` et `GetSessionEmbedUrl` APIs pour intégrer des tableaux de bord et la console Amazon Quick Sight, mais ils ne contiennent pas les dernières fonctionnalités d'intégration. Pour découvrir l'expérience up-to-date d'intégration la plus récente, consultez la section [Intégration des analyses Amazon Quick Sight dans vos applications](https://docs.aws.amazon.com/quicksight/latest/user/embedding-overview.html).

Dans la section suivante, vous découvrirez comment utiliser le [SDK d'intégration Amazon Quick Sight (JavaScript) pour intégrer](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk) l'URL de session de console de l'étape 3 dans la page de votre site Web ou de votre application. Le kit SDK vous permet d’effectuer les opérations suivantes : 
+ Placer la session de console sur une page HTML.
+ Transmettre les paramètres à la session de console.
+ Gérer les états d’erreurs avec des messages personnalisés pour votre application.

Appelez l’opération d’API `GetSessionEmbedUrl` pour obtenir l’URL que vous pouvez intégrer dans votre application. Cette URL est valable pendant 5 minutes et la session qui en résulte est valide pendant 10 heures. L’opération d’API fournit l’URL avec un `auth_code` qui permet une session à connexion unique. 

Voici un exemple de réponse de `get-dashboard-embed-url`.

```
//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"
}
```

Intégrez cette session de console à votre page Web à l'aide du [SDK Amazon Quick Sight Embedding](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk) ou en ajoutant cette URL dans un iframe. Si vous définissez une hauteur et une largeur fixes (en pixels), Amazon Quick Sight les utilise et ne modifie pas votre visuel lorsque votre fenêtre est redimensionnée. Si vous définissez un pourcentage relatif de hauteur et de largeur, Amazon Quick Sight fournit une mise en page réactive qui est modifiée en fonction de l'évolution de la taille de votre fenêtre. En utilisant le SDK Amazon Quick Sight Embedding, vous pouvez également contrôler les paramètres au sein de la session de console et recevoir des rappels en termes de fin de chargement de page et d'erreurs. 

L’exemple suivant montre comment utiliser l’URL générée. Ce code est généré sur votre serveur d’applications.

```
<!DOCTYPE html>
<html>

<head>
    <title>Basic Embed</title>

    <script src="./quicksight-embedding-js-sdk.min.js"></script>
    <script type="text/javascript">
        var dashboard;

        function embedDashboard() {
            var containerDiv = document.getElementById("embeddingContainer");
            var options = {
                // replace this dummy url with the one generated via embedding API
                url: "https://us-east-1.quicksight.aws.amazon.com/sn/dashboards/dashboardId?isauthcode=true&identityprovider=quicksight&code=authcode",  
                container: containerDiv,
                scrolling: "no",
                height: "700px",
                width: "1000px",
                footerPaddingEnabled: true
            };
            dashboard = QuickSightEmbedding.embedDashboard(options);
        }
    </script>
</head>

<body onload="embedDashboard()">
    <div id="embeddingContainer"></div>
</body>

</html>
```

Pour que cet exemple fonctionne, assurez-vous d'utiliser le SDK Amazon Quick Sight Embedding pour charger la session de console intégrée sur votre site Web à l'aide de. JavaScript Pour obtenir votre copie, effectuez l’une des actions suivantes :
+ Téléchargez le SDK d'[intégration Amazon Quick Sight](https://github.com/awslabs/amazon-quicksight-embedding-sdk#step-3-create-the-quicksight-session-object) depuis. GitHub Ce référentiel est géré par un groupe de développeurs Amazon Quick Sight.
+ Téléchargez la dernière version du SDK d'intégration sur. [https://www.npmjs.com/package/amazon-quicksight-embedding-sdk](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk)
+ Si vous utilisez `npm` for JavaScript dependencies, téléchargez-le et installez-le en exécutant la commande suivante.

  ```
  npm install amazon-quicksight-embedding-sdk
  ```