

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.

# Utilice un registro privado de Docker para contenedores de inferencia en tiempo real
<a name="your-algorithms-containers-inference-private"></a>

El alojamiento Amazon SageMaker AI le permite utilizar imágenes almacenadas en Amazon ECR para crear sus contenedores para realizar inferencias en tiempo real de forma predeterminada. Si lo desea, puede crear contenedores para realizar inferencias en tiempo real a partir de imágenes en un registro privado de Docker. Debe poder acceder al registro privado desde una VPC de Amazon de su cuenta. Los modelos que cree en función de las imágenes almacenadas en su registro privado de Docker deben configurarse para conectarse a la misma VPC desde la que se puede acceder al registro privado de Docker. Para obtener más información sobre cómo conectarse a una VPC, consulte [Ofrezca a los puntos de conexión alojados en SageMaker IA acceso a los recursos de su Amazon VPC](host-vpc.md).

Su registro de Docker protegerse con un certificado TLS de una autoridad de certificación pública conocida (CA).

**nota**  
Su registro privado de Docker debe permitir el tráfico entrante de los grupos de seguridad que especifique en la configuración de VPC de su modelo, de modo que SageMaker AI hosting pueda extraer imágenes de modelos de su registro.  
SageMaker La IA puede extraer imágenes de modelos DockerHub si hay un camino hacia la Internet abierta dentro de su VPC.

**Topics**
+ [Almacene las imágenes en un registro de Docker privado que no sea Amazon Elastic Container Registry](#your-algorithms-containers-inference-private-registry)
+ [Utilice una imagen de un registro privado de Docker para contenedores de inferencia en tiempo real](#your-algorithms-containers-inference-private-use)
+ [Permita que SageMaker AI se autentique en un registro privado de Docker](#inference-private-docker-authenticate)
+ [Crear la función de Lambda](#inference-private-docker-lambda)
+ [Conceder permiso de rol de ejecución a Lambda](#inference-private-docker-perms)
+ [Crear un punto de conexión de VPC de la interfaz para Lambda](#inference-private-docker-vpc-interface)

## Almacene las imágenes en un registro de Docker privado que no sea Amazon Elastic Container Registry
<a name="your-algorithms-containers-inference-private-registry"></a>

Si desea utilizar un registro de Docker privado para almacenar sus imágenes para su inferencia SageMaker mediante IA en tiempo real, cree un registro privado al que pueda acceder desde su Amazon VPC. Para obtener información sobre cómo crear un registro de Docker, consulte [Implementar un servidor de registro](https://docs.docker.com/registry/deploying/) en la documentación de Docker. El registro de Docker debe cumplir con lo siguiente:
+ El registro debe ser [Docker Registry HTTP API V2](https://docs.docker.com/registry/spec/api/).
+ Se debe poder acceder al registro de Docker desde la misma VPC que especificó en el parámetro `VpcConfig` que especificó al crear el modelo.

## Utilice una imagen de un registro privado de Docker para contenedores de inferencia en tiempo real
<a name="your-algorithms-containers-inference-private-use"></a>

Al crear un modelo y desplegarlo en un alojamiento de SageMaker IA, puede especificar que utilice una imagen de su registro privado de Docker para crear el contenedor de inferencias. Especifique esto en el objeto `ImageConfig` del parámetro `PrimaryContainer` que pase a una llamada a la función [create\$1model](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_model).

**Para usar una imagen almacenada en su registro privado de Docker como contenedor de inferencias**

1. Cree el objeto de configuración de la imagen y especifique un valor de `Vpc` para el campo `RepositoryAccessMode`.

   ```
   image_config = {
                       'RepositoryAccessMode': 'Vpc'
                  }
   ```

1. Si su registro privado de Docker requiere autenticación, debe añadir un objeto `RepositoryAuthConfig` al objeto de configuración de la imagen. En el `RepositoryCredentialsProviderArn` campo del `RepositoryAuthConfig` objeto, especifique el nombre de recurso de Amazon (ARN) de una AWS Lambda función que proporcione credenciales que permitan a SageMaker AI autenticarse en su Docker Registry privado. Para obtener información acerca de cómo crear la función de Lambda para proporcionar autenticación, consulte [Permita que SageMaker AI se autentique en un registro privado de Docker](#inference-private-docker-authenticate).

   ```
   image_config = {
                       'RepositoryAccessMode': 'Vpc',
                       'RepositoryAuthConfig': {
                          'RepositoryCredentialsProviderArn': 'arn:aws:lambda:Region:Acct:function:FunctionName'
                        }
                  }
   ```

1. Cree el objeto contenedor principal que desee pasar a `create_model`, utilizando el objeto de configuración de imagen que creó en el paso anterior. 

   Proporcione la imagen en forma de [resumen](https://docs.docker.com/engine/reference/commandline/pull/#pull-an-image-by-digest-immutable-identifier). Si proporciona su imagen con la `:latest` etiqueta, existe el riesgo de que SageMaker AI extraiga una versión de la imagen más reciente de lo previsto. El uso del formulario de resumen garantiza que SageMaker AI extraiga la versión de imagen deseada.

   ```
   primary_container = {
       'ContainerHostname': 'ModelContainer',
       'Image': 'myteam.myorg.com/docker-local/my-inference-image:<IMAGE-TAG>',
       'ImageConfig': image_config
   }
   ```

1. Especifique el nombre del modelo y el rol de ejecución que desea pasar a `create_model`.

   ```
   model_name = 'vpc-model'
   execution_role_arn = 'arn:aws:iam::123456789012:role/SageMakerExecutionRole'
   ```

1. Especifique uno o más grupos de seguridad y subredes para la configuración de VPC de su modelo. Su registro privado de Docker debe permitir el tráfico entrante de los grupos de seguridad que especifique. Las subredes que especifique deben estar en la misma VPC que su registro privado de Docker.

   ```
   vpc_config = {
       'SecurityGroupIds': ['sg-0123456789abcdef0'],
       'Subnets': ['subnet-0123456789abcdef0','subnet-0123456789abcdef1']
   }
   ```

1. Obtenga un cliente Boto3 AI SageMaker .

   ```
   import boto3
   sm = boto3.client('sagemaker')
   ```

1. Cree el modelo mediante una llamada a `create_model`, utilizando los valores que especificó en los pasos anteriores para los parámetros `PrimaryContainer` y `VpcConfig`.

   ```
   try:
       resp = sm.create_model(
           ModelName=model_name,
           PrimaryContainer=primary_container,
           ExecutionRoleArn=execution_role_arn,
           VpcConfig=vpc_config,
       )
   except Exception as e:
       print(f'error calling CreateModel operation: {e}')
   else:
       print(resp)
   ```

1. Por último, llame [create\$1endpoint\$1config](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_endpoint_config) y [create\$1endpoint](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_endpoint) para crear el punto de conexión de alojamiento con el modelo creado en el paso anterior.

   ```
   endpoint_config_name = 'my-endpoint-config'
   sm.create_endpoint_config(
       EndpointConfigName=endpoint_config_name,
       ProductionVariants=[
           {
               'VariantName': 'MyVariant',
               'ModelName': model_name,
               'InitialInstanceCount': 1,
               'InstanceType': 'ml.t2.medium'
           },
       ],
   )
   
   endpoint_name = 'my-endpoint'
   sm.create_endpoint(
       EndpointName=endpoint_name,
       EndpointConfigName=endpoint_config_name,
   )
   
   sm.describe_endpoint(EndpointName=endpoint_name)
   ```

## Permita que SageMaker AI se autentique en un registro privado de Docker
<a name="inference-private-docker-authenticate"></a>

[Para extraer una imagen de inferencia de un registro de Docker privado que requiera autenticación, cree una AWS Lambda función que proporcione credenciales y proporcione el nombre de recurso de Amazon (ARN) de la función Lambda cuando llame a create\$1model.](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_model) Cuando se ejecuta la SageMaker IA`create_model`, llama a la función Lambda que especificó para obtener las credenciales necesarias para autenticarse en el registro de Docker.

## Crear la función de Lambda
<a name="inference-private-docker-lambda"></a>

Cree una AWS Lambda función que devuelva una respuesta con el siguiente formulario:

```
def handler(event, context):
   response = {
      "Credentials": {"Username": "username", "Password": "password"}
   }
   return response
```

Según cómo configure la autenticación para su registro privado de Docker, las credenciales que devuelva la función de Lambda pueden significar alguna de las siguientes opciones:
+ Si configura su registro privado de Docker para usar la autenticación básica, proporcione las credenciales de inicio de sesión para autenticarse en el registro.
+ Si configura su registro privado de Docker para usar la autenticación con token de portador, las credenciales de inicio de sesión se envían a su servidor de autorización, que devuelve un token de portador que luego se puede usar para autenticarse en el registro privado de Docker.

## Conceder permiso de rol de ejecución a Lambda
<a name="inference-private-docker-perms"></a>

La función de ejecución que utilice para llamar `create_model` debe tener permisos para llamar a AWS Lambda funciones. Agregue los siguientes permisos como una política en línea al rol de IAM de ejecución de tareas.

```
{
    "Effect": "Allow",
    "Action": [
        "lambda:InvokeFunction"
    ],
    "Resource": [
        "arn:aws:lambda:*:*:function:*myLambdaFunction*"
    ]
}
```

¿Dónde *myLambdaFunction*está el nombre de la función Lambda? Para obtener más información acerca de cómo editar la política de permisos, consulte [Modificación de una política de permisos de rol (consola)](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-managingrole-editing-console.html#roles-modify_permissions-policy) en la *Guía del usuario de AWS Identity and Access Management *.

**nota**  
Un rol de ejecución con la política `AmazonSageMakerFullAccess` gestionada adjunta tiene permiso para llamar a cualquier función de Lambda que tenga **SageMaker**en su nombre.

## Crear un punto de conexión de VPC de la interfaz para Lambda
<a name="inference-private-docker-vpc-interface"></a>

Cree un punto de conexión de interfaz para que su VPC de Amazon pueda comunicarse con su función AWS Lambda sin enviar tráfico a través de Internet. Para obtener más información sobre cómo hacerlo, consulte [Conexión de puntos de conexión de VPC de la interfaz de entrada para Lambda](https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc-endpoints.html) en la *AWS Lambda Guía para desarrolladores*.

SageMaker El alojamiento de IA envía una solicitud a través de su VPC a`lambda.region.amazonaws.com`, para llamar a su función Lambda. Si elige un nombre de DNS privado al crear el punto de conexión de la interfaz, Amazon Route 53 dirige la llamada al punto de conexión de la interfaz Lambda. Si utiliza un proveedor de DNS diferente, asegúrese de asignar `lambda.region.amazonaws.com` al punto de conexión de la interfaz Lambda.