

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.

# Paso 4: Configure y AWS CLI AWS SDKs
<a name="su-awscli-sdk"></a>

Puede utilizar las etiquetas AWS Command Line Interface personalizadas Amazon Rekognition con () y.AWS CLI AWS SDKs Si necesita ejecutar las operaciones de Etiquetas personalizadas de Amazon Rekognition a través del terminal, instale la AWS CLI. Si va a crear una aplicación, descargue el AWS SDK del lenguaje de programación que utilice. 

**Topics**
+ [Instale los AWS SDK](#sdk-install-sdk)
+ [Concesión de acceso programático](su-sdk-programmatic-access.md)
+ [Configuración de permisos de SDK](su-sdk-permissions.md)
+ [Llamar a una operación de Etiquetas personalizadas de Amazon Rekognition](su-sdk-list-projects.md)

## Instale los AWS SDK
<a name="sdk-install-sdk"></a>

Siga los pasos para descargar y configurar la AWS SDKs.

**Para configurar el AWS CLI y el AWS SDKs**
+ Descargue e instale el [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)y el AWS SDKs que desee usar. Esta guía proporciona ejemplos AWS CLI de [Java](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/setup.html) y [Python](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html#installation). Para obtener información sobre la instalación AWS SDKs, consulte [Herramientas para Amazon Web Services](https://aws.amazon.com/tools/).

# Concesión de acceso programático
<a name="su-sdk-programmatic-access"></a>

Puede ejecutar los ejemplos de código AWS CLI y los ejemplos de código de esta guía en su ordenador local o en otros AWS entornos, como una instancia de Amazon Elastic Compute Cloud. Para ejecutar los ejemplos, debes conceder acceso a las operaciones del AWS SDK que utilizan los ejemplos. 

**Topics**
+ [Ejecución del código en su equipo local](#su-sdk-programmatic-access-general)
+ [Ejecutar código en AWS entornos](#su-sdk-aws-environments)

## Ejecución del código en su equipo local
<a name="su-sdk-programmatic-access-general"></a>

Para ejecutar código en un equipo local, te recomendamos que utilices credenciales de corta duración para conceder al usuario acceso a las operaciones AWS del SDK. Para obtener información específica sobre la ejecución del código AWS CLI y los ejemplos de código en un equipo local, consulte[Uso de un perfil en su equipo local](#su-sdk-programmatic-access-customlabels-examples).

Los usuarios necesitan acceso mediante programación si quieren interactuar con personas AWS ajenas a. Consola de administración de AWS La forma de conceder el acceso programático depende del tipo de usuario que acceda. AWS

Para conceder acceso programático a los usuarios, elija una de las siguientes opciones.


****  

| ¿Qué usuario necesita acceso programático? | Para | Mediante | 
| --- | --- | --- | 
| IAM | (Recomendado) Utilice las credenciales de la consola como credenciales temporales para firmar las solicitudes programáticas dirigidas al AWS CLI AWS SDKs, o. AWS APIs |  Siga las instrucciones de la interfaz que desea utilizar: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/rekognition/latest/customlabels-dg/su-sdk-programmatic-access.html)  | 
|  Identidad del personal (Usuarios administrados en el IAM Identity Center)  | Utilice credenciales temporales para firmar las solicitudes programáticas dirigidas al AWS CLI, AWS SDKs, o AWS APIs. |  Siga las instrucciones de la interfaz que desea utilizar: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/rekognition/latest/customlabels-dg/su-sdk-programmatic-access.html)  | 
| IAM | Utilice credenciales temporales para firmar las solicitudes programáticas dirigidas al AWS CLI AWS SDKs, o. AWS APIs | Siga las instrucciones de [Uso de credenciales temporales con AWS recursos](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html) de la Guía del usuario de IAM. | 
| IAM | (No recomendado)Utilice credenciales de larga duración para firmar las solicitudes programáticas dirigidas al AWS CLI AWS SDKs, o. AWS APIs |  Siga las instrucciones de la interfaz que desea utilizar: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/rekognition/latest/customlabels-dg/su-sdk-programmatic-access.html)  | 

### Uso de un perfil en su equipo local
<a name="su-sdk-programmatic-access-customlabels-examples"></a>

Puedes ejecutar los ejemplos AWS CLI y códigos de esta guía con las credenciales a corto plazo que hayas creado. [Ejecución del código en su equipo local](#su-sdk-programmatic-access-general) Para obtener las credenciales y otra información de configuración, en los ejemplos se utiliza un perfil denominado `custom-labels-access`. Por ejemplo: 

```
session = boto3.Session(profile_name='custom-labels-access')
rekognition_client = session.client("rekognition")
```

El usuario que representa el perfil debe tener permisos para llamar a las operaciones del SDK de Amazon Rekognition Custom Labels AWS y a otras operaciones del SDK que se necesitan en los ejemplos. Para obtener más información, consulte [Configuración de permisos de SDK](su-sdk-permissions.md). Para asignar permisos, consulte [Configuración de permisos de SDK](su-sdk-permissions.md).

Para crear un perfil que funcione con los ejemplos de código AWS CLI y, elija una de las siguientes opciones. Asegúrese de que el nombre del perfil que haya creado es `custom-labels-access`.
+ Usuarios administrados por IAM: siga las instrucciones que aparecen en [Cambiar a un rol de IAM (AWS CLI)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-cli.html). 
+ Identidad de la fuerza laboral (usuarios gestionados por AWS IAM Identity Center): siga las instrucciones que se indican en [Configuración de la AWS CLI que va a utilizar AWS IAM Identity Center](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html). Para los ejemplos de código, le recomendamos usar un entorno de desarrollo integrado (IDE), que sea compatible con el kit de herramientas de AWS y que permita la autenticación a través del IAM Identity Center. Para ver los ejemplos de Java, consulte [Comenzar a crear con Java](https://aws.amazon.com/developer/language/java/). Para ver los ejemplos de Java, consulte [Comenzar a crear con Python](https://aws.amazon.com/developer/tools/#IDE_and_IDE_Toolkits). Para obtener más información, consulte [Credenciales de IAM Identity Center](https://docs.aws.amazon.com/sdkref/latest/guide/feature-sso-credentials.html).

**nota**  
Puede usar el código para obtener las credenciales a corto plazo. Para obtener más información, consulte [Cambiar a un rol de IAM (AWS API)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_use_switch-role-api.html). En el caso del Identity Center IAM, consiga las credenciales a corto plazo de un rol siguiendo las instrucciones que se indican en [Obtener las credenciales de rol de IAM para el acceso a la CLI](https://docs.aws.amazon.com/singlesignon/latest/userguide/howtogetcredentials.html). 

## Ejecutar código en AWS entornos
<a name="su-sdk-aws-environments"></a>

No debes usar las credenciales de usuario para firmar las llamadas al AWS SDK en AWS entornos, como el código de producción que se ejecuta en una AWS Lambda función. En su lugar, debe configurar un rol que defina los permisos que necesita el código. Tras esto, asocie la función al entorno en el que se ejecute el código. La forma de asignar el rol y hacer que las credenciales temporales estén disponibles varía en función del entorno en el que se ejecute el código:
+ AWS Lambda función: utilice las credenciales temporales que Lambda proporciona automáticamente a la función cuando asume la función de ejecución de la función Lambda. Las credenciales están disponibles en las variables de entorno de Lambda. No es necesario especificar un perfil. Para obtener más información, consulte [Rol de ejecución de Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html).
+ Amazon EC2: utilice el proveedor de credenciales de punto de conexión de metadatos de la instancia de Amazon EC2. El proveedor generará y actualizará automáticamente las credenciales por usted mediante el *perfil de instancia* de Amazon EC2 que asocie a la instancia de Amazon EC2. Para obtener más información, consulte [Uso de un rol de IAM para conceder permisos a aplicaciones que se ejecutan en instancias de Amazon EC2](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html).
+ Amazon Elastic Container Service: utilice el proveedor de credenciales de Container. Amazon ECS envía y actualiza las credenciales a un punto de conexión de metadatos. Un *rol de IAM de tarea* que indique proporcionará una estrategia para administrar las credenciales que utilice su aplicación. Para obtener más información, consulte [Interacción con servicios de AWS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html).

Para obtener más información sobre los proveedores de credenciales, consulte [Proveedores de credenciales estandarizados](https://docs.aws.amazon.com/sdkref/latest/guide/standardized-credentials.html).

# Configuración de permisos de SDK
<a name="su-sdk-permissions"></a>

Para utilizar las operaciones del SDK de Etiquetas personalizadas de Amazon Rekognition, necesita permisos de acceso a la API de Etiquetas personalizadas de Amazon Rekognition y al bucket de Amazon S3 que se utilice para el entrenamiento de modelos.

**Topics**
+ [Otorgar permisos de operaciones del SDK](#su-grant-sdk-permissions)
+ [Actualizaciones de políticas para el uso del AWS SDK](#su-sdk-policy-update)
+ [Asignación de permisos](#su-sdk-assign-permissions)

## Otorgar permisos de operaciones del SDK
<a name="su-grant-sdk-permissions"></a>

Se recomienda conceder solo los permisos necesarios para realizar una tarea (permisos de privilegios mínimos). Por ejemplo, para llamar [DetectCustomLabels](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_DetectCustomLabels.html), necesita permiso para realizar una llamada. `rekognition:DetectCustomLabels` Para buscar los permisos de una operación, consulte la [referencia de API](https://docs.aws.amazon.com/rekognition/latest/APIReference/Welcome.html). 

Cuando esté comenzando con una aplicación, es posible que no conozca los permisos concretos que necesite, por lo que puede empezar con los permisos más amplios. Las políticas administradas de AWS otorgan permisos que le servirán como punto de partida. Puede utilizar la política `AmazonRekognitionCustomLabelsFullAccess` AWS gestionada para obtener acceso completo a la API de etiquetas personalizadas de Amazon Rekognition. Para obtener más información, consulte la [política administrada de AWS: AmazonRekognitionCustomLabelsFullAccess](https://docs.aws.amazon.com/rekognition/latest/dg/security-iam-awsmanpol.html#security-iam-awsmanpol-custom-labels-full-access). Cuando conozca los permisos que necesita su aplicación, cree políticas administradas por el cliente según la finalidad de uso para reducir aún más el número de permisos. Para obtener más información, consulte [Políticas administradas por el cliente](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#customer-managed-policies). 

Para asignar permisos, consulte [Asignación de permisos](#su-sdk-assign-permissions).

## Actualizaciones de políticas para el uso del AWS SDK
<a name="su-sdk-policy-update"></a>

Para usar el AWS SDK con la última versión de Amazon Rekognition Custom Labels, ya no necesita conceder permisos a Amazon Rekognition Custom Labels para acceder al bucket de Amazon S3 que contiene sus imágenes de formación y pruebas. Si ha añadido permisos anteriormente, no deberá eliminarlos. Si lo desea, elimine cualquier política del bucket donde el servicio de la entidad principal sea `rekognition.amazonaws.com`. Por ejemplo:

```
"Principal": {
    "Service": "rekognition.amazonaws.com"
}
```

Para obtener más información, consulte [Uso de políticas de buckets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-policies.html).

## Asignación de permisos
<a name="su-sdk-assign-permissions"></a>

Para dar acceso, agregue permisos a los usuarios, grupos o roles:
+ Usuarios y grupos en: AWS IAM Identity Center

  Cree un conjunto de permisos. Siga las instrucciones de [Creación de un conjunto de permisos](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html) en la *Guía del usuario de AWS IAM Identity Center *.
+ Usuarios gestionados en IAM a través de un proveedor de identidades:

  Cree un rol para la federación de identidades. Siga las instrucciones descritas en [Creación de un rol para un proveedor de identidad de terceros (federación)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html) en la *Guía del usuario de IAM*.
+ Usuarios de IAM:
  + Cree un rol que el usuario pueda aceptar. Siga las instrucciones descritas en [Creación de un rol para un usuario de IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html) en la *Guía del usuario de IAM*.
  + (No recomendado) Adjunte una política directamente a un usuario o agregue un usuario a un grupo de usuarios. Siga las instrucciones descritas en [Adición de permisos a un usuario (consola)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) de la *Guía del usuario de IAM*.

# Llamar a una operación de Etiquetas personalizadas de Amazon Rekognition
<a name="su-sdk-list-projects"></a>

Ejecute el siguiente código para confirmar que puede realizar llamadas a la API de Etiquetas personalizadas de Amazon Rekognition. El código muestra los proyectos de tu AWS cuenta, en la AWS región actual. Si no ha creado ningún proyecto anteriormente, la respuesta saldrá vacía, pero le confirmará que puede llamar a la operación `DescribeProjects`. 

En general, para llamar a una función de ejemplo es necesario un cliente de Rekognition del AWS SDK y cualquier otro parámetro obligatorio. El cliente del AWS SDK se declara en la función principal. 

Si el código no funciona, compruebe que el usuario tenga los permisos adecuados. Comprueba también que la AWS región que utilizas como etiquetas personalizadas de Amazon Rekognition no esté disponible en todas las regiones. AWS 

**Cómo llamar a una operación de Etiquetas personalizadas de Amazon Rekognition**

1. Si aún no lo ha hecho, instale y configure el y el AWS CLI . AWS SDKs Para obtener más información, consulte [Paso 4: Configure y AWS CLI AWS SDKs](su-awscli-sdk.md).

1. Utilice el siguiente código de ejemplo para ver sus proyectos.

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

   Usa el comando `describe-projects` para ver los proyectos en su cuenta.

   ```
   aws rekognition describe-projects \
   --profile custom-labels-access
   ```

------
#### [ Python ]

   ```
   # Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
   # SPDX-License-Identifier: Apache-2.0
   
   """
   This example shows how to describe your Amazon Rekognition Custom Labels projects.
   If you haven't previously created a project in the current AWS Region,
   the response is an empty list, but does confirm that you can call an
   Amazon Rekognition Custom Labels operation.
   """
   from botocore.exceptions import ClientError
   import boto3
   
   def describe_projects(rekognition_client):
       """
       Lists information about the projects that are in in your AWS account
       and in the current AWS Region.
   
       : param rekognition_client: A Boto3 Rekognition client.
       """
       try:
           response = rekognition_client.describe_projects()
           for project in response["ProjectDescriptions"]:
               print("Status: " + project["Status"])
               print("ARN: " + project["ProjectArn"])
               print()
           print("Done!")
       except ClientError as err:
           print(f"Couldn't describe projects. \n{err}")
           raise
   
   
   def main():
       """
       Entrypoint for script.
       """
   
       session = boto3.Session(profile_name='custom-labels-access')
       rekognition_client = session.client("rekognition")
   
       describe_projects(rekognition_client)
   
   
   if __name__ == "__main__":
       main()
   ```

------
#### [ Java V2 ]

   ```
   /*
      Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
      SPDX-License-Identifier: Apache-2.0
   */
   
   package com.example.rekognition;
   
   import java.util.ArrayList;
   import java.util.List;
   import java.util.logging.Level;
   import java.util.logging.Logger;
   
   import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
   import software.amazon.awssdk.regions.Region;
   import software.amazon.awssdk.services.rekognition.RekognitionClient;
   import software.amazon.awssdk.services.rekognition.model.DatasetMetadata;
   import software.amazon.awssdk.services.rekognition.model.DescribeProjectsRequest;
   import software.amazon.awssdk.services.rekognition.model.DescribeProjectsResponse;
   import software.amazon.awssdk.services.rekognition.model.ProjectDescription;
   import software.amazon.awssdk.services.rekognition.model.RekognitionException;
   
   public class Hello {
   
       public static final Logger logger = Logger.getLogger(Hello.class.getName());
   
       public static void describeMyProjects(RekognitionClient rekClient) {
   
           DescribeProjectsRequest descProjects = null;
   
           // If a single project name is supplied, build projectNames argument
   
           List<String> projectNames = new ArrayList<String>();
   
   
           descProjects = DescribeProjectsRequest.builder().build();
   
           // Display useful information for each project.
   
           DescribeProjectsResponse resp = rekClient.describeProjects(descProjects);
   
           for (ProjectDescription projectDescription : resp.projectDescriptions()) {
   
               System.out.println("ARN: " + projectDescription.projectArn());
               System.out.println("Status: " + projectDescription.statusAsString());
               if (projectDescription.hasDatasets()) {
                   for (DatasetMetadata datasetDescription : projectDescription.datasets()) {
                       System.out.println("\tdataset Type: " + datasetDescription.datasetTypeAsString());
                       System.out.println("\tdataset ARN: " + datasetDescription.datasetArn());
                       System.out.println("\tdataset Status: " + datasetDescription.statusAsString());
                   }
               }
               System.out.println();
           }
   
       }
   
       public static void main(String[] args) {
   
           try {
   
               // Get the Rekognition client
               RekognitionClient rekClient = RekognitionClient.builder()
                   .credentialsProvider(ProfileCredentialsProvider.create("custom-labels-access"))
                   .region(Region.US_WEST_2)
                   .build();
               
               // Describe projects
   
               describeMyProjects(rekClient);
   
               rekClient.close();
   
           } catch (RekognitionException rekError) {
               logger.log(Level.SEVERE, "Rekognition client error: {0}", rekError.getMessage());
               System.exit(1);
           }
   
       }
   
   }
   ```

------