Salta al contenuto

Come posso utilizzare i modelli per configurare l'accesso multi-account in Quick Sight?

7 minuti di lettura
0

Desidero condividere i miei set di dati e la mia dashboard con un altro account AWS in Amazon Quick Sight.

Breve descrizione

Puoi utilizzare i modelli per creare l'accesso multi-account e condividere l'analisi e la dashboard di Quick Sight con altri account AWS e altre Regioni AWS. Puoi anche utilizzare i modelli per creare dashboard o altri modelli.

Completa i seguenti passaggi per fornire l'accesso multi-account in Quick Sight:

  1. Nell’Account A, crea un nuovo modello da un'analisi esistente.
  2. Nell'Account B, utilizza lo stesso schema dell'Account A per creare un set di dati.
  3. Crea una dashboard nell'Account B dal modello dell’Account A.

(Facoltativo) Crea un modello nell'Account B dal modello esistente nell'Account A. Utilizza questa opzione se desideri spostare risorse da un account all'altro e rimuovere le risorse dall'account di origine.

Nota: questo articolo descrive i passaggi per l'accesso multi-account utilizzando l'Interfaccia della linea di comando AWS (AWS CLI). Se visualizzi messaggi di errore quando esegui comandi AWS CLI, consulta Risoluzione degli errori relativi ad AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.

Risoluzione

Crea un modello nell'Account A da un'analisi esistente nello stesso account

  1. Utilizza il comando AWS CLI list-dashboards per elencare le dashboard disponibili nel tuo account:

    aws quicksight list-dashboards --aws-account-id account_a_id

    Nota: sostituisci account_a_id con l'ID dell'Account A.

  2. Prendi nota dell'ID della dashboard che desideri condividere.

  3. Utilizza il comando AWS CLI describe-dashboard per ottenere i dettagli dalla dashboard:

    aws quicksight describe-dashboard --aws-account-id account_a_id --dashboard-id dashboard_id

    Nota: sostituisci dashboard_id con l'ID della tua dashboard.

  4. Crea il file JSON del modello e includi gli ARN dell'analisi e del set di dati:

    { "SourceEntity": {
       "SourceAnalysis": {
         "Arn": "arn:aws:quicksight:aws_region:account_a_id:analysis/analysis_id",
         "DataSetReferences": [
           {
             "DataSetPlaceholder": "dataset_name",
             "DataSetArn": "arn:aws:quicksight:aws_region:account_a_id:dataset/dataset_id"
           }
         ]
       }
     },
     "VersionDescription": "1"
    }

    Nota: sostituisci aws\ _region con la tua regione AWS, analysis\ _id con l'ID della tua analisi, dataset\ _name con il nome del set di dati e dataset\ _id con l'ID del set di dati.

  5. Crea un modello nella stessa regione dell'analisi:

    aws quicksight create-template --aws-account-id account_a_id --template-id template_name --cli-input-json file://template.json --profile default

    Nota: sostituisci template_name con il nome del modello per l’Account A.

  6. Esegui il comando AWS CLI describe-template per verificare che il modello sia stato creato:

    aws quicksight describe-template --aws-account-id account_a_id --template-id template_id

    Nota: sostituisci template\ _id con l'ID del tuo modello. Verifica che la risposta per il comando describe-template contenga lo stato CREATION_SUCCESSFUL.

  7. Annota l'ARN del modello dall'output da utilizzare in un passaggio successivo.

  8. Utilizza il comando AWS CLI update-template-permissions per concedere l'autorizzazione READ multi-account dal modello nell'Account A all'Account B:

    aws quicksight update-template-permissions --aws-account-id account_a_id --template-id template_id --grant-permissions file://TemplatePermission.json

    Esempio di file JSON di autorizzazione:

    [  {
        "Principal": "arn:aws:iam::account_b_id:root",
        "Actions": [
          "quicksight:UpdateTemplatePermissions",
          "quicksight:DescribeTemplate"
        ]
      }
    ]

    Nota: sostituisci l'account\ _b\ _id con l'ID dell'Account B. Per condividere il modello con più account, includi la radice di tutti gli account come Principale. Puoi condividere il modello solo con l'account root. L'elemento Principale non supporta i ruoli AWS Identity and Access Management (IAM).

Utilizza lo stesso schema dell'Account A per creare un set di dati nell'Account B

Non puoi creare una dashboard direttamente da un set di dati che si trova in un altro account, ad esempio l'Account A. Devi creare lo stesso set di dati nell'account in cui desideri creare la dashboard, ad esempio l’Account B, quindi creare la dashboard sulla base del set di dati appena creato.

  1. Utilizza la console Amazon Quick Sight o AWS CLI per creare il set di dati nell'Account B.

    Utilizza la console Amazon Quick Sight

    Per creare il set di dati utilizzando la console Amazon Quick Sight, consulta Creating datasets (Creazione di set di dati).

    Utilizza AWS CLI

    Utilizza il comando AWS CLI create-data-set per creare il set di dati:

    aws quicksight create-data-set --aws-account-id account_b_id --dataset-id dataset_name --cli-input-json file://datasetB.json

    Esempio di file JSON del set di dati:

    {  "Name": "dataset_name",
      "PhysicalTableMap": {
        "Physicaltablename": {
          "RelationalTable": {
             "DataSourceArn": "arn:aws:quicksight:aws_region:account_b_id:datasource/datasource_id",
             "Schema": "schema_name",
             "Name": "table_name",
             "InputColumns": [
               {
                 "Name": "column_name",
                 "Type": "STRING"|"INTEGER"|"DECIMAL"|"DATETIME"|"BIT"|"BOOLEAN"|"JSON"
               }
            ]
          }
        }
      },
     "LogicalTableMap": {
       "Logicaltablename": {
         "Alias": "any_alias",
         "DataTransforms": [
           {
             "ProjectOperation": {
               "ProjectedColumns": [
                 "column_name", "column_name"
             ]
           }
         }
       ],
       "Source": {
         "PhysicalTableId": "Physicaltablename"
       }
      }
     },
     "ImportMode": "SPICE",
     "Permissions": [
       {
         "Principal": "arn:aws:quicksight:aws_region:account_b_id:user/namespace/user_name",
         "Actions": [
           "quicksight:UpdateDataSetPermissions",
           "quicksight:DescribeDataSet",
           "quicksight:DescribeDataSetPermissions",
           "quicksight:PassDataSet",
           "quicksight:DescribeIngestion",
           "quicksight:ListIngestions",
           "quicksight:UpdateDataSet",
           "quicksight:DeleteDataSet",
           "quicksight:CreateIngestion",
           "quicksight:CancelIngestion"
        ]
      }
     ]
    }

    Nota: sostituisci namespace con il tuo namespace e user_name con il nome dell'utente Quick Sight. L'esempio precedente si riferisce a un set di dati SPICE.

  2. Verifica che il set di dati sia stato creato correttamente:

    aws quicksight describe-data-set --aws-account-id account_b_id --data-set-id dataset_id

    Verifica che la risposta per il comando describe-data-set contenga un codice di stato 201. Il codice di stato 201 indica che il set di dati è stato creato correttamente.

  3. Prendi nota dell'ARN del set di dati dall'output per utilizzarlo in un passaggio successivo.

Crea una dashboard nell'Account B dal modello nell'Account A

  1. Esegui il comando seguente e includi l'ARN del modello:

    aws quicksight create-dashboard --aws-account-id account_b_id --dashboard-id dashboard_id --name dashboard_name --source-entity file://DashboardFromTemplate.json

    Nota: puoi aggiungere il parametro --region target_region per creare la dashboard in una regione diversa. Sostituisci target_region con la regione in cui desideri creare il modello.

    Esempio di file JSON della dashboard per l'Account B:

    { "SourceTemplate": {
       "DataSetReferences": [
         {
           "DataSetPlaceholder": "dataset_name",
           "DataSetArn": "arn:aws:quicksight:aws_region:account_b_id:dataset/dataset_id"
         }
       ],
       "Arn": "arn:aws:quicksight:aws_region:account_a_id:template/template_id"
     }
    }

    Nel file JSON della dashboard precedente:

  • Per DataSetPlaceholder, è necessario utilizzare lo stesso nome del set di dati del modello dell'Account A.
  • Per DataSetArn, puoi utilizzare l'ARN del set di dati creato nell'Account B.
  • In Arn, puoi utilizzare l'ARN del modello che hai creato nell'Account A.
  1. Verifica che la dashboard sia stata creata correttamente:

    aws quicksight describe-dashboard --aws-account-id account_b_id --dashboard-id dashboard_id

    Nota: verifica che la risposta per il comando describe-dashboard contenga il codice di stato 200. Il codice di stato 200 indica che la dashboard esiste.

  2. Utilizza il comando AWS CLI update-dashboard-permissions per concedere le autorizzazioni appropriate agli utenti Quick Sight:

    aws quicksight update-dashboard-permissions --aws-account-id account_b_id --dashboard-id dashboard_id --grant-permissions file://DashboardPermission.json

    Esempio di file JSON della dashboard:

    [  {
        "Principal": "arn:aws:quicksight:aws_region:account_b_id:user/namespace/quicksight_user_name",
        "Actions": [
          "quicksight:DescribeDashboard",
          "quicksight:ListDashboardVersions",
          "quicksight:UpdateDashboardPermissions",
          "quicksight:QueryDashboard",
          "quicksight:UpdateDashboard",
          "quicksight:DeleteDashboard",
          "quicksight:DescribeDashboardPermissions",
          "quicksight:UpdateDashboardPublishedVersion"
        ]
      }
    ]

    Nell'esempio di file JSON della dashboard precedente, all'utente Quick Sight viene concesso l'accesso come comproprietario. Per fornire l'accesso in sola LETTURA agli utenti, specifica le seguenti autorizzazioni:

    "quicksight:DescribeDashboard", "quicksight:ListDashboardVersions",
     "quicksight:QueryDashboard"

(Facoltativo) Crea un modello nell'Account B dal modello esistente nell'Account A

  1. Verifica che l'utente o il ruolo IAM abbia le autorizzazioni appropriate. Devi avere le seguenti autorizzazioni per accedere a un modello multi-account in Quick Sight:

    { "Version": "2012-10-17",
     "Statement": [
       {
         "Effect": "Allow",
         "Resource": "arn:aws:quicksight:aws_region:account_a_id:template/template_id",
         "Action": "quicksight:DescribeTemplate"
       },
       {
         "Effect": "Allow",
         "Resource": "*",
         "Action": "quicksight:CreateTemplate"
       }
     ]
    }
  2. Crea un nuovo modello nell'Account B dal modello nell'Account A:

    aws quicksight create-template --aws-account-id account_b_id --template-id template_name --source-entity file://templateB.json

    Nota: sostituisci template\ _name con il nome del modello per l’Account B. Per creare un modello in un'altra regione, aggiungi --region target\ _region.

    Esempio di file JSON per l'Account B:

    {   "SourceTemplate": {
        "Arn": "arn:aws:quicksight:region:account_a_id:template/template_id"
        }
    }
  3. Verifica che il modello sia stato creato:

    aws quicksight describe-template --aws-account-id account_b_id --template-id template_id

    Nota: conferma che la risposta per il comando describe-template contenga lo stato CREATION_SUCCESSFUL.

Informazioni correlate

Migrate Amazon QuickSight across AWS accounts (Migrazione di Amazon Quick Sight tra account AWS)