¿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.

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 la cuenta A, cree una plantilla nueva a partir de un análisis existente.
  2. En la cuenta B, use el mismo esquema en la cuenta A para crear un conjunto de datos.
  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 usa la Interfaz de la línea de comandos de AWS (AWS CLI) con los pasos de acceso entre cuentas. Si se muestran errores al ejecutar comandos de la AWS CLI, consulte Errores de solución de problemas de la AWS CLI. Además, 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. Ejecute el comando describe-template de la CLI de AWS para confirmar que se creó la plantilla:

    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).

Use el mismo esquema que la Cuenta A para crear un conjunto de datos en la Cuenta B

No puede crear un panel directamente a partir de un conjunto de datos que esté en otra cuenta, como la Cuenta A. En su lugar, debe crear el mismo conjunto de datos en la cuenta en la que desea crear el panel, como la Cuenta B. A continuación, cree el panel a partir del conjunto de datos recién creado.

  1. Utilice la consola Amazon QuickSight o la CLI de AWS para crear el conjunto de datos en la cuenta B.

    Uso de la consola de Amazon QuickSight

    Para usar la consola Amazon QuickSight para crear el conjunto de datos, consulte Creación de conjuntos de datos.

    Uso de la AWS CLI

    Utilice el comando create-data-set de la CLI de AWS para crear el conjunto de datos:

    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.
  1. 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.

  2. 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 10 meses