

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.

# Compatibilidad con el modo local en Amazon SageMaker Studio
<a name="studio-updated-local"></a>

**importante**  
Las políticas de IAM personalizadas que permiten a Amazon SageMaker Studio o Amazon SageMaker Studio Classic crear SageMaker recursos de Amazon también deben conceder permisos para añadir etiquetas a esos recursos. El permiso para añadir etiquetas a los recursos es necesario porque Studio y Studio Classic etiquetan automáticamente todos los recursos que crean. Si una política de IAM permite a Studio y Studio Classic crear recursos, pero no permite el etiquetado, se pueden producir errores de tipo AccessDenied «» al intentar crear recursos. Para obtener más información, consulte [Proporcione permisos para etiquetar los recursos de SageMaker IA](security_iam_id-based-policy-examples.md#grant-tagging-permissions).  
[AWS políticas gestionadas para Amazon SageMaker AI](security-iam-awsmanpol.md)que otorgan permisos para crear SageMaker recursos ya incluyen permisos para añadir etiquetas al crear esos recursos.

Las aplicaciones de Amazon SageMaker Studio admiten el uso del modo local para crear estimadores, procesadores y canalizaciones y, a continuación, implementarlos en un entorno local. Con el modo local, puede probar los scripts de aprendizaje automático antes de ejecutarlos en entornos de alojamiento o formación gestionados por Amazon SageMaker AI. Studio admite el modo local en las aplicaciones siguientes:
+ Amazon SageMaker Studio Clásico
+ JupyterLab
+ Editor de código, basado en Code-OSS, Visual Studio Code: Open Source

El modo local en las aplicaciones de Studio se invoca mediante el SDK de SageMaker Python. En las aplicaciones de Studio, el modo local funciona de forma similar a como funciona en las instancias de Amazon SageMaker Notebook, con algunas diferencias. Si la opción [Configuración de Docker sin raíz](studio-updated-local-get-started.md#studio-updated-local-rootless) está habilitada, también puede acceder a registros de Docker adicionales a través de su configuración de VPC, incluidos los repositorios en las instalaciones y los registros públicos. Para obtener más información sobre el uso del modo local con el SDK de SageMaker Python, consulte [Modo local](https://sagemaker.readthedocs.io/en/stable/overview.html#local-mode).

**nota**  
Las aplicaciones de Studio no admiten trabajos de varios contenedores en modo local. Los trabajos en modo local se limitan a una sola instancia para trabajos de entrenamiento, inferencia y procesamiento. Al crear un trabajo en modo local, la configuración del recuento de instancias debe ser `1`. 

## Compatibilidad con Docker
<a name="studio-updated-local-docker"></a>

En el marco de la compatibilidad con el modo local, las aplicaciones de Studio admiten capacidades limitadas de acceso a Docker. Con esta compatibilidad, los usuarios pueden interaccionar con la API de Docker desde los cuadernos de Jupyter o desde el terminal de imágenes de la aplicación. Los clientes pueden interactuar Docker mediante una de las interfaces siguientes:
+ [CLI de Docker](https://docs.docker.com/engine/reference/run/)
+ [CLI de Docker Compose](https://docs.docker.com/compose/reference/)
+ Clientes de Docker SDK específicos de cada lenguaje

Studio también admite capacidades de acceso limitado a Docker con las siguientes restricciones:
+ No se admite el uso de redes de Docker.
+ No se admite el uso de [volúmenes](https://docs.docker.com/storage/volumes/) de Docker durante la ejecución del contenedor. Durante la orquestación del contenedor, solo se permiten las entradas de montaje de unión de volúmenes. Las entradas de montaje de unión de volúmenes deben estar ubicadas en el volumen de Amazon Elastic File System (Amazon EFS) de Studio Classic. Para las aplicaciones JupyterLab y el editor de código, debe estar ubicado en el volumen Amazon Elastic Block Store (Amazon EBS).
+ Se permiten las operaciones de inspección de contenedores.
+ No se permite el mapeo del puerto del contenedor al host. Sin embargo, se puede especificar un puerto para el alojamiento. A continuación, se puede obtener acceso al punto de conexión desde Studio mediante la siguiente URL:

  ```
  http://localhost:port
  ```

### Operaciones de Docker admitidas
<a name="studio-updated-local-docker-supported"></a>

En la tabla siguiente se enumeran todos los puntos de conexión de la Docker API compatibles con Studio, incluidas las limitaciones de compatibilidad. Si algún punto de conexión de la API no figura en la tabla, Studio no lo admite.


|  Documentación de la API  |  Limitaciones  | 
| --- | --- | 
|  [SystemAuth](https://docs.docker.com/engine/api/v1.43/#tag/System/operation/SystemAuth)  |   | 
|  [SystemEvents](https://docs.docker.com/engine/api/v1.43/#tag/System/operation/SystemEvents)  |   | 
|  [SystemVersion](https://docs.docker.com/engine/api/v1.43/#tag/System/operation/SystemVersion)  |   | 
|  [SystemPing](https://docs.docker.com/engine/api/v1.43/#tag/System/operation/SystemPing)  |   | 
|  [SystemPingHead](https://docs.docker.com/engine/api/v1.43/#tag/System/operation/SystemPingHead)  |   | 
|  [ContainerCreate](https://docs.docker.com/engine/api/v1.43/#tag/Container/operation/ContainerCreate)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/studio-updated-local.html)  | 
|  [ContainerStart](https://docs.docker.com/engine/api/v1.43/#tag/Container/operation/ContainerStart)  |   | 
|  [ContainerStop](https://docs.docker.com/engine/api/v1.43/#tag/Container/operation/ContainerStop)  |   | 
|  [ContainerKill](https://docs.docker.com/engine/api/v1.43/#tag/Container/operation/ContainerKill)  |   | 
|  [ContainerDelete](https://docs.docker.com/engine/api/v1.43/#tag/Container/operation/ContainerDelete)  |   | 
|  [ContainerList](https://docs.docker.com/engine/api/v1.43/#tag/Container/operation/ContainerList)  |   | 
|  [ContainerLogs](https://docs.docker.com/engine/api/v1.43/#tag/Container/operation/ContainerLogs)  |   | 
|  [ContainerInspect](https://docs.docker.com/engine/api/v1.43/#tag/Container/operation/ContainerInspect)  |   | 
|  [ContainerWait](https://docs.docker.com/engine/api/v1.43/#tag/Container/operation/ContainerWait)  |   | 
|  [ContainerAttach](https://docs.docker.com/engine/api/v1.43/#tag/Container/operation/ContainerAttach)  |   | 
|  [ContainerPrune](https://docs.docker.com/engine/api/v1.43/#tag/Container/operation/ContainerPrune)  |   | 
|  [ContainerResize](https://docs.docker.com/engine/api/v1.43/#tag/Container/operation/ContainerResize)  |   | 
|  [ImageCreate](https://docs.docker.com/engine/api/v1.43/#tag/Image/operation/ImageCreate)  |  La compatibilidad con el modo VPC-only se limita a las imágenes de Amazon ECR en las cuentas incluidas en la lista de permitidos. Si la opción [Configuración de Docker sin raíz](studio-updated-local-get-started.md#studio-updated-local-rootless) está habilitada, también puede acceder a registros de Docker adicionales a través de su configuración de VPC, incluidos los repositorios en las instalaciones y los registros públicos. | 
|  [ImagePrune](https://docs.docker.com/engine/api/v1.43/#tag/Image/operation/ImagePrune)  |   | 
|  [ImagePush](https://docs.docker.com/engine/api/v1.43/#tag/Image/operation/ImagePush)  |  La compatibilidad con el modo VPC-only se limita a las imágenes de Amazon ECR en las cuentas incluidas en la lista de permitidos. Si la opción [Configuración de Docker sin raíz](studio-updated-local-get-started.md#studio-updated-local-rootless) está habilitada, también puede acceder a registros de Docker adicionales a través de su configuración de VPC, incluidos los repositorios en las instalaciones y los registros públicos. | 
|  [ImageList](https://docs.docker.com/engine/api/v1.43/#tag/Image/operation/ImageList)  |   | 
|  [ImageInspect](https://docs.docker.com/engine/api/v1.43/#tag/Image/operation/ImageInspect)  |   | 
|  [ImageGet](https://docs.docker.com/engine/api/v1.43/#tag/Image/operation/ImageGet)  |   | 
|  [ImageDelete](https://docs.docker.com/engine/api/v1.43/#tag/Image/operation/ImageDelete)  |   | 
|  [ImageBuild](https://docs.docker.com/engine/api/v1.43/#tag/Image/operation/ImageBuild)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/studio-updated-local.html)  | 

**Topics**
+ [Compatibilidad con Docker](#studio-updated-local-docker)
+ [Introducción al modo local](studio-updated-local-get-started.md)

# Introducción al modo local
<a name="studio-updated-local-get-started"></a>

En las siguientes secciones se describen los pasos necesarios para empezar a utilizar el modo local en Amazon SageMaker Studio, entre los que se incluyen:
+ Cumplimiento de los requisitos previos
+ Configuración de `EnableDockerAccess`
+ Instalación de Docker

## Requisitos previos
<a name="studio-updated-local-prereq"></a>

Complete los siguientes requisitos previos para usar el modo local en las aplicaciones de Studio:
+ Para extraer imágenes de un repositorio de Amazon Elastic Container Registry, la cuenta en la que se aloja la imagen de Amazon ECR debe proporcionar permiso de acceso para el rol de ejecución del usuario. El rol de ejecución del dominio también debe permitir el acceso a Amazon ECR.
+ Compruebe que está utilizando la versión más reciente del Studio Python SDK mediante el siguiente comando: 

  ```
  pip install -U sagemaker
  ```
+ Para usar el modo local y las capacidades de Docker, establezca el siguiente parámetro de la `DockerSettings` del dominio mediante la AWS Command Line Interface (AWS CLI): 

  ```
  EnableDockerAccess : ENABLED
  ```
+ Con `EnableDockerAccess`, también puede controlar si los usuarios del dominio pueden usar el modo local. De forma predeterminada, el modo local y las capacidades de Docker no están permitidos en las aplicaciones de Studio. Para obtener más información, consulte [Configuración de `EnableDockerAccess`](#studio-updated-local-enable).
+ Instale la Docker CLI en la aplicación de Studio siguiendo los pasos que se indican en [Instalación de Docker](#studio-updated-local-docker-installation).
+ Para [Configuración de Docker sin raíz](#studio-updated-local-rootless), asegúrese de que su VPC tenga configurados los puntos de conexión y el enrutamiento adecuados para los registros de Docker que desee.

## Configuración de `EnableDockerAccess`
<a name="studio-updated-local-enable"></a>

En las siguientes secciones se muestra cómo configurar `EnableDockerAccess` cuándo el dominio tiene acceso público a Internet o está en modo `VPC-only`.

**nota**  
Los cambios de `EnableDockerAccess` se aplicarán únicamente a las aplicaciones creadas después de actualizar el dominio. Debe crear una nueva aplicación después de actualizar el dominio.

**Acceso público a Internet**

Los siguientes comandos de ejemplo muestran cómo configurar `EnableDockerAccess` al crear un nuevo dominio o actualizar un dominio existente con acceso público a Internet:

```
# create new domain
aws --region region \
    sagemaker create-domain --domain-name domain-name \
    --vpc-id vpc-id \
    --subnet-ids subnet-ids \
    --auth-mode IAM \
    --default-user-settings "ExecutionRole=execution-role" \
    --domain-settings '{"DockerSettings": {"EnableDockerAccess": "ENABLED"}}' \
    --query DomainArn \
    --output text

# update domain
aws --region region \
    sagemaker update-domain --domain-id domain-id \
    --domain-settings-for-update '{"DockerSettings": {"EnableDockerAccess": "ENABLED"}}'
```

**Modo `VPC-only`**

Cuando se utiliza un dominio en modo `VPC-only`, las solicitudes de inserción y extracción de imágenes de Docker se enrutan a través de la VPC del servicio en lugar de a través de la VPC configurada por el cliente. Gracias a esta funcionalidad, los administradores pueden configurar una lista de Cuentas de AWS de confianza a las que los usuarios pueden enviar solicitudes de operaciones de Docker de inserción y extracción de Amazon ECR.

Si se envía una solicitud de inserción o extracción de Docker imágenes a un usuario Cuenta de AWS que no figura en la lista de sitios de confianza Cuentas de AWS, se produce un error en la solicitud. DockerLas operaciones de arrastrar y empujar fuera de Amazon Elastic Container Registry (Amazon ECR) no se admiten en este modo. `VPC-only`

De forma predeterminada, Cuentas de AWS se confía en los siguientes elementos:
+ La cuenta que aloja el dominio de SageMaker IA.
+ SageMaker Cuentas de IA que alojan las siguientes SageMaker imágenes:
  + Imágenes de marco de trabajo de DLC
  + SklearnSpark, XGBoost procesando imágenes

Para configurar una lista de fuentes de confianza adicionales Cuentas de AWS, especifique el `VpcOnlyTrustedAccounts` valor de la siguiente manera:

```
aws --region region \
    sagemaker update-domain --domain-id domain-id \
    --domain-settings-for-update '{"DockerSettings": {"EnableDockerAccess": "ENABLED", "VpcOnlyTrustedAccounts": ["account-list"]}}'
```

**nota**  
Cuando la [Configuración de Docker sin raíz](#studio-updated-local-rootless) está habilitada, `VpcOnlyTrustedAccounts` se ignora y el tráfico de Docker se redirige a través de la configuración de la VPC, lo que permite el acceso a cualquier registro al que pueda acceder la VPC.

## Configuración de Docker sin raíz
<a name="studio-updated-local-rootless"></a>

Cuando [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DockerSettings.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DockerSettings.html) está habilitado, Studio usa un [daemon de Docker sin raíz](https://docs.docker.com/engine/security/rootless/) que enruta el tráfico a través de la VPC. Esto mejora la seguridad y permite acceder a registros de Docker adicionales. Las principales diferencias con `RootlessDocker` son:
+ Se puede acceder a los puertos de los contenedores mediante la IP de la puerta de enlace de Docker (`172.17.0.1`) en lugar de mediante localhost.
+ La configuración de la VPC determina a qué registros pueden acceder las operaciones de Docker. `VpcOnlyTrustedAccounts` se ignora y el tráfico de Docker se enruta a través de la configuración de su VPC.

Para usar Docker sin raíz, tendrá que configurar `EnableDockerAccess` y `RootlessDocker` en `ENABLED` para la `DockerSettings`. Por ejemplo, en los ejemplos de [Configuración de `EnableDockerAccess`](#studio-updated-local-enable) anteriores, puede modificar la configuración del dominio para que incluya:

```
'{"DockerSettings": {"EnableDockerAccess": "ENABLED", "RootlessDocker": "ENABLED"}}'
```

## Instalación de Docker
<a name="studio-updated-local-docker-installation"></a>

Para utilizar Docker, debe instalar manualmente Docker desde el terminal de su aplicación de Studio. Los pasos para instalar Docker son diferentes si el dominio tiene acceso a Internet o no.

### Acceso a Internet
<a name="studio-updated-local-docker-installation-internet"></a>

Si el dominio se crea con acceso público a Internet o en un modo `VPC-only` con acceso limitado a Internet, siga estos pasos para instalar Docker.

1. (Opcional) Si el dominio se crea en modo `VPC-only` con acceso limitado a Internet, cree una puerta de enlace NAT pública con acceso al sitio web de Docker. Para obtener instrucciones, consulte [Gateways NAT](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html).

1. Vaya al terminal de la aplicación de Studio en la que desee instalar Docker.

1. Para devolver el sistema operativo de la aplicación, ejecute el siguiente comando desde el terminal:

   ```
   cat /etc/os-release
   ```

1. Realice la instalación Docker siguiendo las instrucciones del sistema operativo de la aplicación en el [repositorio Amazon SageMaker AI Local Mode Examples](https://github.com/aws-samples/amazon-sagemaker-local-mode/tree/main/sagemaker_studio_docker_cli_install).

   Por ejemplo, instálelo Ubuntu siguiendo Docker el script que se encuentra en [https://github.com/aws-samples/amazon-sagemaker-local-mode/blob/main/sagemaker\$1studio\$1docker\$1cli\$1install/sagemaker- ubuntu-focal-docker-cli -install.sh](https://github.com/aws-samples/amazon-sagemaker-local-mode/blob/main/sagemaker_studio_docker_cli_install/sagemaker-ubuntu-focal-docker-cli-install.sh) teniendo en cuenta las siguientes consideraciones:
   + Si se produce un error en los comandos encadenados, ejecute los comandos de uno en uno.
   + Studio solo admite Docker, versión `20.10.X.` y la Docker Engine API, versión `1.41`.
   + Los siguientes paquetes no son necesarios para usar la Docker CLI en Studio y su instalación se puede omitir:
     + `containerd.io`
     + `docker-ce`
     + `docker-buildx-plugin`
**nota**  
No es necesario iniciar el servicio Docker en sus aplicaciones. La instancia en la que se aloja la aplicación de Studio ejecuta el servicio Docker de forma predeterminada. Todas las llamadas a la API de Docker se enrutan automáticamente a través del servicio Docker.

1. Utilice el socket de Docker expuesto para las interacciones de Docker dentro de las aplicaciones de Studio. De forma predeterminada, se expone el siguiente socket:

   ```
   unix:///docker/proxy.sock
   ```

   La siguiente variable de entorno de la aplicación de Studio del `USER` predeterminado utiliza este socket expuesto:

   ```
   DOCKER_HOST
   ```

### Sin acceso a Internet
<a name="studio-updated-local-docker-installation-no-internet"></a>

Si el dominio se crea en modo `VPC-only` sin acceso a Internet, siga estos pasos para instalar Docker.

1. Vaya al terminal de la aplicación de Studio en la que desee instalar Docker.

1. Para devolver el sistema operativo de la aplicación, ejecute el siguiente comando desde el terminal:

   ```
   cat /etc/os-release
   ```

1. Descargue los archivos `.deb` de Docker en el equipo local. Para obtener instrucciones sobre cómo descargar los archivos necesarios para el sistema operativo de la aplicación de Studio, consulte [Install Docker Engine](https://docs.docker.com/engine/install/).

   Por ejemplo, instale Docker desde un paquete en Ubuntu siguiendo los pasos 1 a 4 de [Install from a package](https://docs.docker.com/engine/install/ubuntu/#install-from-a-package) teniendo en cuenta las siguientes consideraciones:
   + Instale Docker desde un paquete. Si se utilizan otros métodos para instalar Docker, se producirá un error.
   + Instale los paquetes más recientes correspondientes a la versión `20.10.X` de Docker.
   + Los siguientes paquetes no son obligatorios para usar la Docker CLI en Studio. No es necesario instalar lo siguiente:
     + `containerd.io`
     + `docker-ce`
     + `docker-buildx-plugin`
**nota**  
No es necesario iniciar el servicio Docker en sus aplicaciones. La instancia en la que se aloja la aplicación de Studio ejecuta el servicio Docker de forma predeterminada. Todas las llamadas a la API de Docker se enrutan automáticamente a través del servicio Docker.

1. Cargue los archivos `.deb` en el sistema de archivos de Amazon EFS o en el sistema de archivos de Amazon EBS de la aplicación.

1. Instale manualmente los paquetes `.deb` de `docker-ce-cli` y `docker-compose-plugin` desde el terminal de la aplicación de Studio. Para obtener más información e instrucciones, consulte el paso 5 de [Install from a package](https://docs.docker.com/engine/install/ubuntu/#install-from-a-package) en el sitio web de documentación de Docker.

1. Utilice el socket de Docker expuesto para las interacciones de Docker dentro de las aplicaciones de Studio. De forma predeterminada, se expone el siguiente socket:

   ```
   unix:///docker/proxy.sock
   ```

   La siguiente variable de entorno de la aplicación de Studio del `USER` predeterminado utiliza este socket expuesto:

   ```
   DOCKER_HOST
   ```