

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Desarrollo de aplicaciones con la API Amazon Quick Sight
<a name="quicksight-sdks"></a>

Puede gestionar la mayoría de los aspectos de su implementación mediante el acceso AWS SDKs a una API que se adapte al lenguaje de programación o la plataforma que utilice. Para obtener más información, consulte [AWS SDKs](https://aws.amazon.com/tools/#SDKs). 

Para obtener más información sobre las operaciones de la API, consulte la [referencia de la API de Amazon Quick Sight](https://docs.aws.amazon.com/quicksight/index.html?id=docs_gateway). 

Para poder llamar a las operaciones de la API de Amazon Quick Sight, necesita el `quicksight:operation-name` permiso de una política adjunta a su identidad de IAM. Por ejemplo, para llamar a `list-users`, necesita el permiso `quicksight:ListUsers`. Lo mismo es aplicable a todas las operaciones.

Si no está seguro de cuál es el permiso necesario, puede intentar realizar una llamada. A continuación, el cliente le indica cuál es el permiso que falta. Puede usar un asterisco (`*`) en el campo Recurso de su política de permisos en lugar de especificar recursos explícitos. Sin embargo, le recomendamos que restrinja cada permiso en la medida de lo posible. Puede restringir el acceso de los usuarios especificando o excluyendo los recursos de la política mediante su identificador Amazon Quick Sight Amazon Resource Name (ARN). 

Para obtener más información, consulte los siguientes temas:
+ [Ejemplos de políticas de IAM para Amazon Quick Sight](https://docs.aws.amazon.com/quicksight/latest/user/iam-policy-examples.html)
+ [Acciones, recursos y claves de condiciones](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonquicksight.html)
+ [Elementos de política JSON de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html)

Para obtener el ARN de un usuario o un grupo, utilice la operación `Describe` para el recurso correspondiente. También puede añadir condiciones en IAM para restringir aún más el acceso a una API en algunos casos. Por ejemplo, al añadir `User1` a`Group1`, el recurso principal es`Group1`, por lo que puedes permitir o denegar el acceso a determinados grupos, pero también puedes añadir una condición mediante la tecla Amazon Quick Sight de IAM `quicksight:UserName` para permitir o impedir que determinados usuarios se añadan a ese grupo. 

El siguiente es un ejemplo de política. Significa que el intermediario que tiene esta política asociada puede invocar la operación `CreateGroupMembership` para cualquier grupo, siempre que el nombre de usuario que se añade al grupo no sea `user1`. 

```
{
    "Effect": "Allow",
    "Action": "quicksight:CreateGroupMembership",
    "Resource": "arn:aws:quicksight:us-east-1:aws-account-id:group/default/*",
    "Condition": {
        "StringNotEquals": {
            "quicksight:UserName": "user1"
        }
    }
}
```

------
#### [ AWS CLI ]

El siguiente procedimiento explica cómo interactuar con las operaciones de la API de Amazon Quick Sight a través de la AWS CLI. Las instrucciones siguientes se han probado en Bash, pero deberían ser idénticas o similares en otros entornos de línea de comandos.

1. Instale el AWS SDK en su entorno. Encontrará instrucciones para hacerlo aquí: [Interfaz de línea de comandos de AWS](https://aws.amazon.com/cli/).

1. Configure la identidad y la región de AWS CLI mediante el siguiente comando y las instrucciones de seguimiento. Utilice las credenciales de una identidad o rol de IAM que tenga los permisos adecuados. 

   ```
   aws configure
   ```

1. Consulte la ayuda del SDK de Amazon Quick Sight emitiendo el siguiente comando: 

   ```
   aws quicksight help
   ```

1. Para obtener instrucciones detalladas sobre el uso de una API, escriba su nombre seguido de “help”, del siguiente modo: 

   ```
   aws quicksight list-users help
   ```

1. Ahora puede llamar a una operación de la API de Amazon Quick Sight. En este ejemplo, se devuelve una lista de los usuarios de Amazon Quick Sight de su cuenta. 

   ```
   aws quicksight list-users --aws-account-id aws-account-id --namespace default --region us-east-1
   ```

------
#### [ Java SDK ]

Utilice el siguiente procedimiento para configurar una aplicación Java que interactúe con Amazon Quick Sight. 

1. Para empezar, cree un proyecto de Java en el IDE.

1. Importe el SDK de Amazon Quick Sight a su nuevo proyecto, por ejemplo: `AWSQuickSightJavaClient-1.11.x.jar`

1. Una vez que su IDE indexe el SDK de Amazon Quick Sight, debería poder añadir una línea de importación de la siguiente manera: 

   ```
   import com.amazonaws.services.quicksight.AmazonQuickSight;
   ```

   Si el IDE no lo reconoce como válido, compruebe que ha importado el SDK.

1. Al igual que otros AWS SDKs, el SDK de Amazon Quick Sight requiere dependencias externas para realizar muchas de sus funciones. Es necesario descargarlas e importarlas en el mismo proyecto. Se requieren las dependencias siguientes:
   + `aws-java-sdk-1.11.402.jar`(Configuración de credenciales y SDK de AWS Java): consulte [Configurar el AWS SDK para Java](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-install.html) 
   + `commons-logging-1.2.jar`— Consulte [https://commons.apache. org/proper/commons-logging/download\$1logging.cgi](https://commons.apache.org/proper/commons-logging/download_logging.cgi) 
   + `jackson-annotations-2.9.6.jar``jackson-core-2.9.6.jar`, y `jackson-databind-2.9.6.jar` — Consulte [http://repo1.maven. org/maven2/com/fasterxml/jackson/core](https://repo1.maven.org/maven2/com/fasterxml/jackson/core/)/ 
   + `httpclient-4.5.6.jar`, `httpcore-4.4.10.jar`: consulte [ https://hc.apache.org/downloads.cgi ](https://hc.apache.org/downloads.cgi) 
   + `joda-time-2.1.jar`— Véase [ https://mvnrepository.com/artifact/joda-time/joda-time/2.1](https://mvnrepository.com/artifact/joda-time/joda-time/2.1) 

1. Ahora ya está listo para crear un cliente de Amazon Quick Sight. Puede utilizar punto de enlace público predeterminado con el que el cliente pueda comunicar o indicar el punto de enlace de forma explícita. Existen varias formas de proporcionar sus AWS credenciales. En el siguiente ejemplo ofrecemos un método sencillo y directo. En el método de cliente siguiente se utiliza para realizar todas las llamadas a la API subsiguientes:

   ```
   private static AmazonQuickSight getClient() {
   	final AWSCredentialsProvider credsProvider = 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() {}
   	};
   	
   	return AmazonQuickSightClientBuilder
   	.standard()
   	.withRegion(Regions.US_EAST_1.getName())
   	.withCredentials(credsProvider)
   	.build();
   	}
   ```

1. Ahora, podemos usar el cliente anterior para enumerar todos los usuarios de nuestra cuenta de Amazon Quick Sight. 
**nota**  
Debe proporcionar el ID de AWS cuenta que utilizó para suscribirse a Amazon Quick Sight. Debe coincidir con el ID de AWS cuenta de la identidad de la persona que llama. Actualmente no se admiten las llamadas entre cuentas. Además, el parámetro requerido siempre `namespace` debe estar establecido en. *default* 

   ```
   getClient().listUsers(new ListUsersRequest()
           .withAwsAccountId("relevant_AWS_account_ID")
           .withNamespace("default"))
           .getUserList().forEach(user -> {
               System.out.println(user.getArn());
           });
   ```

1. Para ver una lista de todas las operaciones de API posibles y los objetos de solicitud que utilizan, puede **hacer clic con la tecla Ctrl** en el objeto de cliente de su IDE para ver la interfaz de Amazon Quick Sight. Como alternativa, búsquelo dentro del `com.amazonaws.services.quicksight` paquete en el archivo JavaClient JAR de Amazon Quick Sight.

------
#### [ JavaScript (Node.js) SDK ]

Utilice el siguiente procedimiento para interactuar con Amazon Quick Sight mediante Node.js. 

1. Configure el entorno del nodo con los comandos siguientes:
   + `npm install aws-sdk`
   + `npm install aws4 `
   + `npm install request`
   + `npm install url`

1. Para obtener información sobre cómo configurar el Node.js con el AWS SDK y configurar sus credenciales, consulte --> la [Guía para AWS SDK para JavaScript desarrolladores del SDK v2](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/welcome.html). 

1. Utilice el ejemplo de código siguiente para comprobar la configuración. HTTPS es obligatorio. El ejemplo muestra una lista completa de las operaciones de Amazon Quick Sight junto con sus parámetros de solicitud de URL, seguida de una lista de los usuarios de Amazon Quick Sight de su cuenta.

   ```
   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',
   });
   
   console.log(quicksight.config.apiConfig.operations);
   
   quicksight.listUsers({
       // Enter your actual AWS account ID
       'AwsAccountId': 'relevant_AWS_account_ID', 
       'Namespace': 'default',
   }, function(err, data) {
       console.log('---');
       console.log('Errors: ');
       console.log(err);
       console.log('---');
       console.log('Response: ');
       console.log(data);
   });
   ```

------
#### [ Python3 SDK ]

Utilice el siguiente procedimiento para crear un `botocore` paquete personalizado para interactuar con Amazon Quick Sight. 

1. Cree un archivo de credenciales en el AWS directorio de su entorno. En un Linux/Mac-based environment, that file is called \$1/.aws/credentials y tiene este aspecto:

   ```
   [default]
   aws_access_key_id = Your_IAM_access_key
   aws_secret_access_key = Your_IAM_secret_key
   ```

1. Descomprima la carpeta `botocore-1.12.10`. Cambie el directorio a `botocore-1.12.10` y escriba el nombre del entorno del intérprete Python3.

1. Las respuestas volverán como un objeto de diccionario. Cada uno de ellos tiene una `ResponseMetadata` entrada que contiene el estado de la solicitud IDs y la respuesta. Las demás entradas dependen del tipo de operación que ejecute.

1. El ejemplo siguiente es una aplicación de muestra que primero crea, elimina y muestra grupos. A continuación muestra una lista de los usuarios de una cuenta de Quicksight:

   ```
   import botocore.session
   default_namespace = 'default'
   account_id = 'relevant_AWS_Account'
   
   session = botocore.session.get_session()
   client = session.create_client("quicksight", region_name='us-east-1')
   
   print('Creating three groups: ')
   client.create_group(AwsAccountId = account_id, Namespace=default_namespace, GroupName='MyGroup1')
   client.create_group(AwsAccountId = account_id, Namespace=default_namespace, GroupName='MyGroup2')
   client.create_group(AwsAccountId = account_id, Namespace=default_namespace, GroupName='MyGroup3')
   
   print('Retrieving the groups and listing them: ')
   response = client.list_groups(AwsAccountId = account_id, Namespace=default_namespace)
   for group in response['GroupList']:
       print(group)
   
   print('Deleting our groups: ')
   client.delete_group(AwsAccountId = account_id, Namespace=default_namespace, GroupName='MyGroup1')
   client.delete_group(AwsAccountId = account_id, Namespace=default_namespace, GroupName='MyGroup2')
   client.delete_group(AwsAccountId = account_id, Namespace=default_namespace, GroupName='MyGroup3')
   
   response = client.list_users(AwsAccountId = account_id, Namespace=default_namespace)
   for user in response['UserList']:
       print(user)
   ```

------
#### [ .NET/C\$1 SDK ]

Utilice el siguiente procedimiento para interactuar con Amazon Quick Sight mediante C\$1.NET. En este ejemplo se basa en Microsoft Visual para Mac. Las instrucciones pueden variar ligeramente dependiendo del IDE y la plataforma. Sin embargo, deberían ser muy similares.



1. Descomprima el archivo `nuget.zip` en una carpeta llamada `nuget`.

1. Cree un nuevo proyecto **Aplicación de consola** en Visual Studio.

1. Dentro de la solución, busque las **Dependencias** de la aplicación y, a continuación, abra el menú contextual (clic con el botón derecho) y elija **Agregar paquetes**.

1. En la lista de orígenes, elija **Configurar orígenes**.

1. Elija **Agregar** y asigne al origen el nombre `QuickSightSDK`. Navegue hasta la carpeta `nuget` y elija **Agregar origen**.

1. Seleccione **Aceptar**. Luego, con la `QuickSightSDK` opción seleccionada, selecciona los tres paquetes de Amazon Quick Sight:
   + `AWSSDK.QuickSight`
   + `AWSSDK.Extensions.NETCore.Setup`
   + `AWSSDK.Extensions.CognitoAuthentication`

1. Haga clic en **Agregar paquete**. 

1. Copie y pegue la siguiente aplicación de ejemplo en el editor de aplicaciones de la consola.

   ```
   using System;
   using Amazon.QuickSight.Model;
   using Amazon.QuickSight;
   
   namespace DotNetQuickSightSDKTest
   {
       class Program
       {
           private static readonly string AccessKey = "insert_your_access_key";
           private static readonly string SecretAccessKey = "insert_your_secret_key";
           private static readonly string AccountID = "AWS_account_ID";
           private static readonly string Namespace = "default";  // leave this as default
   
           static void Main(string[] args)
           {
               var client = new AmazonQuickSightClient(
                   AccessKey,
                   SecretAccessKey, 
                   Amazon.RegionEndpoint.USEast1);
   
               var listUsersRequest = new ListUsersRequest
               {
                   AwsAccountId = AccountID,
                   Namespace = Namespace
               };
   
               client.ListUsersAsync(listUsersRequest).Result.UserList.ForEach(
                   user => Console.WriteLine(user.Arn)
               );
   
               var listGroupsRequest = new ListGroupsRequest
               {
                   AwsAccountId = AccountID,
                   Namespace = Namespace
               };
   
               client.ListGroupsAsync(listGroupsRequest).Result.GroupList.ForEach(
                   group => Console.WriteLine(group.Arn)
               );
           }
       }
   }
   ```

------