

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Utilizzo di un registro Docker privato per container di inferenza in tempo reale
<a name="your-algorithms-containers-inference-private"></a>

L'hosting Amazon SageMaker AI ti consente di utilizzare le immagini archiviate in Amazon ECR per creare contenitori per l'inferenza in tempo reale per impostazione predefinita. Facoltativamente, puoi creare container per l'inferenza in tempo reale da immagini in un registro Docker privato. Il registro privato deve essere accessibile da un Amazon VPC nel tuo account. I modelli creati in base alle immagini archiviate nel registro Docker privato devono essere configurati per connettersi allo stesso VPC in cui è accessibile il registro Docker privato. Per ulteriori informazioni sulla connessione del modello a un VPC, consulta [Offri agli endpoint ospitati dall' SageMaker intelligenza artificiale l'accesso alle risorse nel tuo Amazon VPC](host-vpc.md).

Il registro Docker deve essere protetto con un certificato TLS di un'autorità di certificazione (CA) pubblica nota.

**Nota**  
Il tuo registro Docker privato deve consentire il traffico in entrata dai gruppi di sicurezza specificati nella configurazione VPC per il tuo modello, in modo che l'hosting SageMaker AI sia in grado di estrarre le immagini del modello dal tuo registro.  
SageMaker L'intelligenza artificiale può estrarre immagini di modelli DockerHub se esiste un percorso verso una rete Internet aperta all'interno del tuo VPC.

**Topics**
+ [Archiviazione delle immagini in un registro Docker privato diverso da Amazon Elastic Container Registry](#your-algorithms-containers-inference-private-registry)
+ [Utilizzo di un'immagine da un registro Docker privato per l'inferenza in tempo reale](#your-algorithms-containers-inference-private-use)
+ [Consenti all' SageMaker IA di autenticarsi in un registro Docker privato](#inference-private-docker-authenticate)
+ [Creazione della funzione Lambda](#inference-private-docker-lambda)
+ [Concedi a Lamba l’autorizzazione per il tuo ruolo di esecuzione](#inference-private-docker-perms)
+ [Creazione di un endpoint VPC di interfaccia per Lambda](#inference-private-docker-vpc-interface)

## Archiviazione delle immagini in un registro Docker privato diverso da Amazon Elastic Container Registry
<a name="your-algorithms-containers-inference-private-registry"></a>

Per utilizzare un registro Docker privato per archiviare le tue immagini per l'inferenza SageMaker AI in tempo reale, crea un registro privato accessibile dal tuo Amazon VPC. Per informazioni sulla creazione di un registro Docker, consulta [Deploy a registry server](https://docs.docker.com/registry/deploying/) nella documentazione Docker. Il registro Docker deve rispettare quanto segue:
+ Il registro deve essere un registro [Registro Docker HTTP API V2](https://docs.docker.com/registry/spec/api/).
+ Il registro Docker deve essere accessibile dallo stesso VPC specificato nel parametro `VpcConfig` al momento della creazione del modello.

## Utilizzo di un'immagine da un registro Docker privato per l'inferenza in tempo reale
<a name="your-algorithms-containers-inference-private-use"></a>

Quando crei un modello e lo distribuisci su un hosting SageMaker AI, puoi specificare che utilizzi un'immagine del tuo registro Docker privato per creare il contenitore di inferenza. Specificalo nell'oggetto `ImageConfig` nel parametro `PrimaryContainer` che inoltri a una chiamata alla funzione [create\$1model](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_model).

**Per utilizzare un'immagine archiviata nel registro Docker privato per il container di inferenza**

1. Crea l'oggetto di configurazione dell'immagine e specifica un valore `Vpc` per il campo `RepositoryAccessMode`.

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

1. Se il registro Docker privato richiede l'autenticazione, aggiungi un oggetto `RepositoryAuthConfig` all'oggetto di configurazione dell'immagine. Per il `RepositoryCredentialsProviderArn` campo dell'`RepositoryAuthConfig`oggetto, specifica l'Amazon Resource Name (ARN) di una AWS Lambda funzione che fornisce credenziali che consentono all' SageMaker IA di autenticarsi nel tuo registro Docker privato. Per informazioni su come creare la funzione Lambda per fornire l'autenticazione, consulta [Consenti all' SageMaker IA di autenticarsi in un registro Docker privato](#inference-private-docker-authenticate).

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

1. Crea l'oggetto container principale da trasferire a `create_model`, utilizzando l'oggetto di configurazione dell'immagine creato nella fase precedente. 

   Fornisci la tua immagine in formato [digest](https://docs.docker.com/engine/reference/commandline/pull/#pull-an-image-by-digest-immutable-identifier). Se fornisci l'immagine utilizzando il `:latest` tag, c'è il rischio che l' SageMaker intelligenza artificiale recuperi una versione dell'immagine più recente di quella prevista. L'utilizzo del modulo riepilogativo garantisce che l' SageMaker intelligenza artificiale estragga la versione dell'immagine desiderata.

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

1. Specifica il nome del modello e il ruolo di esecuzione che desideri inoltrare a `create_model`.

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

1. Specifica uno o più gruppi di sicurezza e sottoreti per la configurazione VPC per il tuo modello. Il registro Docker privato deve consentire il traffico in ingresso dai gruppi di sicurezza specificati. Le sottoreti specificate devono trovarsi nello stesso VPC del registro Docker privato.

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

1. Ottieni un client AI Boto3 SageMaker .

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

1. Crea il modello richiamando `create_model`, utilizzando i valori specificati nelle fasi precedenti per i parametri `PrimaryContainer` e `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. Infine, richiama [create\$1endpoint\$1config](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_endpoint_config) e [create\$1endpoint](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_endpoint) per creare l'endpoint di hosting, utilizzando il modello creato nella fase precedente.

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

## Consenti all' SageMaker IA di autenticarsi in un registro Docker privato
<a name="inference-private-docker-authenticate"></a>

[Per estrarre un'immagine di inferenza da un registro Docker privato che richiede l'autenticazione, crea una AWS Lambda funzione che fornisca le credenziali e fornisci l'Amazon Resource Name (ARN) della funzione Lambda quando chiami create\$1model.](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_model) Quando l' SageMaker intelligenza artificiale viene eseguita`create_model`, chiama la funzione Lambda specificata per ottenere le credenziali per l'autenticazione nel registro Docker.

## Creazione della funzione Lambda
<a name="inference-private-docker-lambda"></a>

Crea una AWS Lambda funzione che restituisca una risposta con il seguente modulo:

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

A seconda di come configuri l'autenticazione per il tuo registro Docker privato, le credenziali restituite dalla funzione Lambda possono significare una delle seguenti cose:
+ Se configuri il registro Docker privato per utilizzare l'autenticazione di base, fornisci le credenziali di accesso per l'autenticazione nel registro.
+ Se configuri il tuo registro Docker privato per utilizzare l'autenticazione con token bearer, le credenziali di accesso vengono inviate al tuo server di autorizzazione, che restituisce un token bearer che può quindi essere utilizzato per l'autenticazione nel registro Docker privato.

## Concedi a Lamba l’autorizzazione per il tuo ruolo di esecuzione
<a name="inference-private-docker-perms"></a>

Il ruolo di esecuzione utilizzato per chiamare `create_model` deve disporre delle autorizzazioni per chiamare AWS Lambda le funzioni. Aggiungi quanto segue alla policy sulle autorizzazioni del tuo ruolo di esecuzione.

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

*myLambdaFunction*Dov'è il nome della tua funzione Lambda. Per informazioni su come modificare le autorizzazioni per un ruolo, consulta [Modifying a role permissions policy (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-managingrole-editing-console.html#roles-modify_permissions-policy) nella *Guida per l’utente AWS Identity and Access Management *.

**Nota**  
Un ruolo di esecuzione a cui è associata la policy `AmazonSageMakerFullAccess` gestita è autorizzato a chiamare qualsiasi funzione Lambda con **SageMaker**nel suo nome.

## Creazione di un endpoint VPC di interfaccia per Lambda
<a name="inference-private-docker-vpc-interface"></a>

Crea un endpoint di interfaccia in modo che Amazon VPC possa comunicare con la tua funzione AWS Lambda senza inviare traffico su Internet. Per informazioni su come svolgere questa operazione, consulta [Configuring interface VPC endpoints for Lambda](https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc-endpoints.html) nella *AWS Lambda Guida per gli sviluppatori*.

SageMaker L'hosting AI invia una richiesta tramite il tuo VPC a`lambda.region.amazonaws.com`, per chiamare la tua funzione Lambda. Se scegli il Nome DNS privato quando crei l'endpoint di interfaccia, Amazon Route 53 indirizza la chiamata all'endpoint dell'interfaccia Lambda. Se utilizzi un provider DNS diverso, assicurati di mappare `lambda.region.amazonaws.com` all'endpoint dell'interfaccia Lambda.