¿Cómo configuro el acceso entre cuentas mediante plantillas de Amazon QuickSight?

8 minutos de lectura
0

Quiero compartir mis conjuntos de datos y mi panel de control con otra cuenta de AWS en Amazon QuickSight. ¿Cómo puedo hacerlo?

Descripción breve

Puede utilizar plantillas para crear un acceso entre cuentas y compartir su panel de control y análisis de Amazon QuickSight en otras cuentas y regiones de AWS. También puede utilizar las plantillas para crear paneles de control u otras plantillas.

Complete los siguientes pasos para proporcionar acceso entre cuentas en QuickSight:

  1. En una cuenta (cuenta A), cree una plantilla nueva a partir de un análisis existente.
  2. En otra cuenta (cuenta B), cree un conjunto de datos con el mismo esquema de la cuenta A.
  3. Cree un panel de control en la cuenta B a partir de la plantilla de la cuenta A.

(Opcional) Cree una plantilla en la cuenta B a partir de la plantilla existente de la cuenta A. Utilice esta opción si quiere mover recursos de una cuenta a otra y eliminar los recursos de la cuenta de origen.

Nota: En este artículo se describen los pasos para el acceso entre cuentas mediante la Interfaz de la línea de comandos de AWS (AWS CLI). Si recibe errores al ejecutar los comandos de la AWS CLI, asegúrese de utilizar la versión más reciente de la AWS CLI.

Resolución

Crear una plantilla en la cuenta A a partir de un análisis existente en la misma cuenta

1.    Utilice el comando list-dashboards de la AWS CLI para mostrar los paneles de control que están disponibles en su cuenta:

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

Nota: Reemplace account_a_id por el ID de la cuenta A.

2.    Anote el ID del panel de control que quiere compartir.

3.    Utilice el comando describe-dashboard de la AWS CLI para obtener detalles del panel de control:

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

Nota: Reemplace dashboard_id por el ID de su panel de control.

4.    Cree el archivo JSON de la plantilla e incluya los ARN del análisis y conjunto de datos:

{
 "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: Sustituya aws_region por su región de AWS, analysis_id por el ID de su análisis, dataset_name por el nombre del conjunto de datos y dataset_id por el ID de su conjunto de datos.

5.    Cree una plantilla en la misma región que el análisis:

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

**Nota:**Reemplace template_name por el nombre de la plantilla de la cuenta A.

6.    Para confirmar que la plantilla se haya creado, ejecute el comando describe-template de la AWS CLI:

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

Nota: Reemplace template_id por el ID de la plantilla. Confirme que la respuesta del comando describe-template contenga el estado CREATION_SUCCESSFUL.

7.    Anote el ARN de la plantilla de la salida para usarlo más adelante.

8.    Utilice el comando de la AWS CLI update-template-permissions para conceder el permiso READ (de lectura) entre cuentas desde la plantilla de la cuenta A a la cuenta B:

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

Ejemplo de archivo JSON de permisos:

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

**Nota:**Reemplace account_b_id por el ID de la cuenta B. Para compartir la plantilla con varias cuentas, incluya la raíz de todas las cuentas como Entidad principal. Puede compartir la plantilla solo con la cuenta raíz. La Entidad principal no admite los roles de AWS Identity and Access Management (IAM).

Crear un conjunto de datos en la cuenta B con el mismo esquema que la cuenta A

No puede crear un panel de control directamente desde un conjunto de datos que esté en otra cuenta (cuenta A). En su lugar, debe crear el mismo conjunto de datos en la cuenta en la que quiere crear el panel de control (cuenta B). A continuación, cree el panel de control a partir del conjunto de datos que acaba de crear.

1.    Cree el conjunto de datos en la cuenta B.

Con la consola de Amazon QuickSight

Consulte Crear conjuntos de datos.

Con la AWS CLI

Utilice el comando create-data-set de la AWS CLI:

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

Ejemplo de archivo JSON de conjunto de datos:

{
  "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: Sustituya namespace por su espacio de nombres y user_name por el nombre del usuario de QuickSight. El ejemplo anterior hace referencia a un conjunto de datos SPICE.

2.    Confirme que el conjunto de datos se haya creado correctamente:

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

Confirme que la respuesta del comando describe-data-set contenga el código de estado 201. El código de estado 201 significa que el conjunto de datos se ha creado correctamente.

3.    Anote el ARN del conjunto de datos de la salida para usarlo más adelante.

Crear un panel de control en la cuenta B a partir de la plantilla de la cuenta A

1.    Ejecute el siguiente comando e incluya el ARN de la plantilla:

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

Nota: Para crear el panel de control en una región diferente, puede añadir el parámetro --region target_region. Sustituya target_region por la región en la que quiera crear la plantilla.

Ejemplo de archivo JSON del panel de control para la cuenta 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"
 }
}

En este archivo JSON del panel de control:

  • Para DataSetPlaceholder, debe usar el mismo nombre de conjunto de datos de la plantilla de la cuenta A.
  • Para DataSetARN, el usuario puede usar el ARN del conjunto de datos que ha creado en la cuenta B.
  • Para Arn, puede usar el ARN de la plantilla que ha creado en la cuenta A.

2.    Confirme que el panel de control se haya creado correctamente:

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

Nota: Confirme que la respuesta del comando describe-dashboard contenga el código de estado 200. El código de estado 200 significa que el panel de control existe.

3.    Utilice el comando update-dashboard-permissions de la AWS CLI para conceder los permisos adecuados a los usuarios de QuickSight:

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

Ejemplo de archivo JSON del panel de control:

[
  {
    "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"
    ]
  }
]

En el archivo JSON del panel de control del ejemplo anterior, se concede al usuario de QuickSight el acceso de copropietario.

Para proporcionar solo el acceso READ (de lectura) a los usuarios, especifique los siguientes permisos:

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

(Opcional) Crear una plantilla en la cuenta B a partir de la plantilla existente en la cuenta A

1.    Confirme que su usuario o rol de IAM tenga los permisos adecuados. Debe tener los siguientes permisos para acceder a una plantilla entre cuentas en QuickSight:

{
 "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.    Cree una plantilla nueva en la cuenta B a partir de la plantilla de la cuenta A:

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

Nota: Reemplace template_name por el nombre de la plantilla de la cuenta B. Para crear una plantilla en una región diferente, añada --region target_region.

Ejemplo de archivo JSON para la cuenta B:

{
   "SourceTemplate": {
    "Arn": "arn:aws:quicksight:region:account_a_id:template/template_id"
    }
}

3.    Confirme que se haya creado la plantilla:

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

Nota: Confirme que la respuesta del comando describe-template contenga el estado CREATION_SUCCESSFUL.


Información relacionada

Migrar Amazon QuickSight entre cuentas de AWS

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 2 años