

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Use um registro privado do Docker para contêineres de inferência em tempo real
<a name="your-algorithms-containers-inference-private"></a>

A hospedagem Amazon SageMaker AI permite que você use imagens armazenadas no Amazon ECR para criar seus contêineres para inferência em tempo real por padrão. Opcionalmente, você pode criar contêineres para inferência em tempo real a partir de imagens em um registro privado do Docker. O registro privado deve ser acessível a partir de uma Amazon VPC na sua conta. Os modelos que você cria com base nas imagens armazenadas no seu registro privado do Docker devem ser configurados para se conectar à mesma VPC em que o registro privado do Docker está acessível. Para obter mais informações sobre como conectar seu modelo a uma VPC, consulte [Dê aos endpoints hospedados por SageMaker IA acesso aos recursos em sua Amazon VPC](host-vpc.md).

Seu registro do Docker deve ser protegido com um certificado TLS de uma autoridade de certificação (CA) pública conhecida.

**nota**  
Seu registro privado do Docker deve permitir o tráfego de entrada dos grupos de segurança que você especifica na configuração da VPC para seu modelo, para que a hospedagem de SageMaker IA possa extrair imagens de modelo do seu registro.  
SageMaker A IA pode extrair imagens de modelos DockerHub se houver um caminho para a Internet aberta dentro da sua VPC.

**Topics**
+ [Armazene imagens em um registro privado do Docker que não seja o registro de contêiner do Amazon Elastic](#your-algorithms-containers-inference-private-registry)
+ [Use uma imagem de um registro privado do Docker para inferência em tempo real](#your-algorithms-containers-inference-private-use)
+ [Permitir que a SageMaker IA se autentique em um registro privado do Docker](#inference-private-docker-authenticate)
+ [Criar a função do Lambda](#inference-private-docker-lambda)
+ [Dê permissão ao seu perfil de execução para o Lambda](#inference-private-docker-perms)
+ [Criar um endpoint de interface da VPC para o Lambda](#inference-private-docker-vpc-interface)

## Armazene imagens em um registro privado do Docker que não seja o registro de contêiner do Amazon Elastic
<a name="your-algorithms-containers-inference-private-registry"></a>

Para usar um registro privado do Docker para armazenar suas imagens para inferência de SageMaker IA em tempo real, crie um registro privado que seja acessível a partir da sua Amazon VPC. Para obter informações sobre como criar um registro do Docker, consulte [Implantar um servidor de registro](https://docs.docker.com/registry/deploying/) na documentação do Docker. O registro do Docker deve estar em conformidade com o seguinte:
+ O registro deve ser um registro da [API HTTP V2](https://docs.docker.com/registry/spec/api/) do registro do Docker.
+ O registro do Docker deve estar acessível a partir da mesma VPC que você especificar no parâmetro `VpcConfig` que você especificou ao criar seu modelo.

## Use uma imagem de um registro privado do Docker para inferência em tempo real
<a name="your-algorithms-containers-inference-private-use"></a>

Ao criar um modelo e implantá-lo na hospedagem de SageMaker IA, você pode especificar que ele use uma imagem do seu registro privado do Docker para criar o contêiner de inferência. Especifique isso no objeto `ImageConfig` no parâmetro `PrimaryContainer` que você passa para uma chamada para a função [create\$1model](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_model).

**Usando uma imagem armazenada no seu registro privado do Docker para seu contêiner de inferência**

1. Crie o objeto de configuração de imagem e especifique um valor de `Vpc` para o campo `RepositoryAccessMode`.

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

1. Se o seu registro privado do Docker exigir autenticação, adicione um objeto `RepositoryAuthConfig` ao objeto de configuração de imagem. Para o `RepositoryCredentialsProviderArn` campo do `RepositoryAuthConfig` objeto, especifique o Amazon Resource Name (ARN) de uma AWS Lambda função que fornece credenciais que permitem que a SageMaker IA se autentique em seu Docker Registry privado. Para obter informações sobre como criar a função do Lambda para fornecer autenticação, consulte [Permitir que a SageMaker IA se autentique em um registro privado do Docker](#inference-private-docker-authenticate).

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

1. Crie o objeto de contêiner primário que você deseja passar para `create_model`, usando o objeto de configuração de imagem que você criou na etapa anterior. 

   Forneça sua imagem em formato de [resumo](https://docs.docker.com/engine/reference/commandline/pull/#pull-an-image-by-digest-immutable-identifier). Se você fornecer sua imagem usando a `:latest` tag, existe o risco de a SageMaker IA extrair uma versão mais recente da imagem do que a pretendida. O uso do formulário de resumo garante que a SageMaker IA obtenha a versão de imagem pretendida.

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

1. Especifique o nome do modelo e o perfil de execução para o qual você quer passar para `create_model`.

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

1. Especifique um ou mais grupos de segurança e sub-redes para a configuração da VPC do seu modelo. Seu registro particular do Docker deve permitir o tráfego de entrada dos grupos de segurança que você especifica. As sub-redes que você especifica devem estar na mesma VPC do seu registro particular do Docker.

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

1. Obtenha um cliente de SageMaker IA Boto3.

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

1. Crie o modelo chamando `create_model`, usando os valores que você especificou nas etapas anteriores para os parâmetros `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. Por fim, chame [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) para criar o endpoint de hospedagem, usando o modelo que você criou na etapa 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)
   ```

## Permitir que a SageMaker IA se autentique em um registro privado do Docker
<a name="inference-private-docker-authenticate"></a>

[Para extrair uma imagem de inferência de um registro privado do Docker que requer autenticação, crie uma AWS Lambda função que forneça credenciais e forneça o Amazon Resource Name (ARN) da função Lambda ao chamar create\$1model.](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_model) Quando a SageMaker IA é executada`create_model`, ela chama a função Lambda que você especificou para obter credenciais para se autenticar no seu registro do Docker.

## Criar a função do Lambda
<a name="inference-private-docker-lambda"></a>

Crie uma AWS Lambda função que retorne uma resposta com o seguinte formato:

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

Dependendo de como você configura a autenticação para seu registro privado do Docker, as credenciais que sua função do Lambda retorna podem significar uma das seguintes opções:
+ Se você configurar seu registro privado do Docker para usar a autenticação básica, forneça as credenciais de login para se autenticar no registro.
+ Se você configurar seu registro privado do Docker para usar a autenticação do token do portador, as credenciais de login serão enviadas ao seu servidor de autorização, que retornará um token do portador que pode ser usado para autenticar no registro privado do Docker.

## Dê permissão ao seu perfil de execução para o Lambda
<a name="inference-private-docker-perms"></a>

A função de execução que você usa para chamar `create_model` deve ter permissões para chamar AWS Lambda funções. Adicione as políticas de permissões a seguir como o seu ao perfil de execução.

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

Onde *myLambdaFunction*está o nome da sua função Lambda. Para saber mais sobre como editar a política de permissões de uma função, consulte [Modificar a política de permissões de um perfil (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-managingrole-editing-console.html#roles-modify_permissions-policy) no *Guia do usuário do IAM AWS Identity and Access Management *.

**nota**  
Uma função de execução com a política `AmazonSageMakerFullAccess` gerenciada anexada a ela tem permissão para chamar qualquer função Lambda com **SageMaker**seu nome.

## Criar um endpoint de interface da VPC para o Lambda
<a name="inference-private-docker-vpc-interface"></a>

Crie um endpoint de interface para que sua Amazon VPC possa se comunicar com sua função AWS Lambda sem enviar tráfego pela Internet. Para obter mais informações sobre como fazer isso, consulte [Configurar endpoints da VPC da interface para o Lambda](https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc-endpoints.html) no *Guia do desenvolvedor AWS Lambda *.

SageMaker A hospedagem de IA envia uma solicitação por meio de sua VPC para`lambda.region.amazonaws.com`, para chamar sua função Lambda. Se você escolher o nome DNS privado ao criar seu endpoint de interface, o Amazon Route 53 roteará a chamada para o endpoint da interface Lambda. Se você usa um provedor de DNS diferente, certifique-se de mapear `lambda.region.amazonaws.com` para o seu endpoint da interface Lambda.