

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á.

# Apêndice
<a name="appendix"></a>

## Comparação: multilocação
<a name="multi-tenancy-comparison"></a>

*Tabela 2 — Comparação de locação múltipla*


|  Vários domínios  |  Conta múltipla  |  Controle de acesso baseado em atributos (ABAC) em um único domínio  | 
| --- | --- | --- | 
| O isolamento de recursos é obtido usando tags. SageMaker O AI Studio marca automaticamente todos os recursos com o domínio ARN e o perfil/espaço do usuário. ARN | Cada inquilino está em sua própria conta, portanto, há isolamento absoluto de recursos. | O isolamento de recursos é obtido usando tags. Os usuários precisam gerenciar a marcação dos recursos criados paraABAC. | 
| A lista APIs não pode ser restringida por tags. A filtragem de recursos da interface do usuário é feita em espaços compartilhados, no entanto, as API chamadas de lista feitas por meio do AWS CLI ou do Boto3 SDK listarão os recursos em toda a região. | O APIs isolamento da lista também é possível, já que os inquilinos estão em suas contas dedicadas. | A lista APIs não pode ser restringida por tags. Listar API chamadas feitas por meio do AWS CLI ou do Boto3 SDK listará recursos em toda a região. | 
| SageMaker Os custos de computação e armazenamento do AI Studio por locatário podem ser facilmente monitorados usando o Domain ARN como uma etiqueta de alocação de custos. | SageMaker Os custos de computação e armazenamento do AI Studio por locatário são fáceis de monitorar com uma conta dedicada. | SageMaker Os custos de computação do AI Studio por inquilino precisam ser calculados usando tags personalizadas. <br /> SageMaker Os custos de armazenamento do AI Studio não podem ser monitorados por domínio, pois todos os locatários compartilham o mesmo EFS volume. | 
| As cotas de serviço são definidas no nível da conta, portanto, um único inquilino ainda pode usar todos os recursos.  | As cotas de serviço podem ser definidas no nível da conta para cada inquilino.  | As cotas de serviço são definidas no nível da conta, portanto, um único inquilino ainda pode usar todos os recursos.  | 
| A escalabilidade para vários locatários pode ser obtida por meio da infraestrutura como código (IaC) ou do Service Catalog. | A escalabilidade para vários inquilinos envolve Organizations e a venda de várias contas.  | O escalonamento precisa de uma função específica de inquilino para cada novo inquilino, e os perfis de usuário precisam ser marcados manualmente com os nomes dos inquilinos. | 
| A colaboração entre usuários dentro de um locatário é possível por meio de espaços compartilhados. | A colaboração entre o usuário dentro de um inquilino é possível por meio de espaços compartilhados. | Todos os inquilinos terão acesso ao mesmo espaço compartilhado para colaboração. | 

## SageMaker Backup e recuperação de domínios do AI Studio
<a name="sagemaker-studio-domain-backup-and-recovery"></a>

No caso de uma EFS exclusão acidental ou quando um domínio precisar ser recriado devido a alterações na rede ou na autenticação, siga estas instruções. 

### Opção 1: fazer backup do EFS uso existente EC2
<a name="option-1"></a>

#### SageMaker Backup de domínio do Studio
<a name="sagemaker-studio-domain-backup"></a>

1. Listar perfis de usuário e espaços no SageMaker Studio ([CLI](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/list-user-profiles.html), [SDK](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.list_user_profiles)).

1. Mapeie perfis/espaços de usuário para UIDs ativado. EFS

   1. Para cada usuário na lista de users/spaces, describe the user profile/space ([CLI](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/describe-user-profile.html), [SDK](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.describe_user_profile)).

   1. Mapeie o perfil/espaço do usuário para `HomeEfsFileSystemUid`.

   1. Mapeie o perfil do usuário para `UserSettings['ExecutionRole']` saber se os usuários têm perfis de execução distintas.

   1. Identifique o perfil padrão de execução do Space.

1. Crie um novo domínio e especifique o perfil de execução padrão do Space.

1. Crie perfis e espaços de usuário.
   + Para cada usuário na lista de usuários, crie um perfil de usuário ([CLI](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-user-profile.html), [SDK](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_user_profile)) usando o mapeamento da função de execução.

1. Crie um mapeamento para o novo EFS UIDs e.

   1. Para cada usuário na lista de usuários, descreva o perfil do usuário ([CLI](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/describe-user-profile.html), [SDK](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.describe_user_profile)).

   1. Mapeie o perfil do usuário para `HomeEfsFileSystemUid`.

1. Opcionalmente, exclua todos os aplicativos, perfis de usuário, espaços e, em seguida, exclua o domínio.

#### Backup do EFS
<a name="efs-backup"></a>

Para fazer backupEFS, use as seguintes instruções:

1. Inicie a EC2 instância e anexe os grupos de segurança de entrada/saída do antigo domínio do SageMaker Studio à nova EC2 instância (permita o NFS tráfego na porta 2049). TCP Consulte [Connect SageMaker Studio Notebooks em Recursos Externos](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-notebooks-and-internet-access.html#:~:text=NFS%20traffic%20over%20TCP%20on%20port%202049%20between%20the%20domain%20and%20the%20Amazon%20EFS%20volume.). VPC

1. Monte o EFS volume do SageMaker Studio na nova EC2 instância. Consulte [Montagem de sistemas de EFS arquivos](https://docs.aws.amazon.com/efs/latest/ug/mounting-fs.html).

1. Copie os arquivos para o armazenamento EBS local: `>sudo cp -rp /efs /studio-backup:`

   1. Anexe os novos grupos de segurança do domínio à EC2 instância.

   1. Monte o novo EFS volume na EC2 instância.

   1. Copie os arquivos para o novo EFS volume.

   1. Para cada usuário na coleção do usuário:

      1. Crie o diretório: `mkdir new_uid`.

      1. Copie arquivos do UID diretório antigo para o novo UID diretório.

      1. Alterar a propriedade de todos os arquivos: `chown <new_UID>` de todos os arquivos.

### Opção 2: fazer backup do existente EFS usando o S3 e a configuração do ciclo de vida
<a name="option-2"></a>

1. Consulte [Migrar seu trabalho para uma instância de SageMaker notebook da Amazon com o Amazon Linux 2](https://aws.amazon.com/blogs/machine-learning/migrate-your-work-to-amazon-sagemaker-notebook-instance-with-amazon-linux-2/).

1. Crie um bucket do S3 para backup (como `>studio-backup`.

1. Liste todos os perfis de usuário com perfis de execução.

1. No domínio atual do SageMaker Studio, defina um LCC script padrão no nível do domínio.
   + NoLCC, copie tudo `/home/sagemaker-user` para o prefixo do perfil do usuário no S3 (por exemplo,`s3://studio-backup/studio-user1`).

1. Reinicie todos os aplicativos padrão do Jupyter Server (para LCC que sejam executados).

1. Exclua todos os aplicativos, perfis de usuário e domínios.

1. Crie um novo domínio do SageMaker Studio.

1. Crie novos perfis de usuário a partir da lista de perfis de usuário e perfis de execução.

1. Configure um LCC no nível do domínio:
   + NoLCC, copie tudo no prefixo do perfil do usuário no S3 para `/home/sagemaker-user`

1. Crie aplicativos padrão do Jupyter Server para todos os usuários com a [LCCconfiguração](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateApp.html#:~:text=%22ResourceSpec%22%3A%20%7B%20%0A%20%20%20%20%20%20%22InstanceType%22%3A%20%22string%22%2C%0A%20%20%20%20%20%20%22LifecycleConfigArn%22%3A%20%22string%22%2C) ([CLI](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-app.html), [SDK](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_app)).

## SageMaker Acesso ao estúdio usando SAML asserção
<a name="sagemaker-studio-access-using-saml"></a>

Configuração da solução:

1. Crie um SAML aplicativo em seu IdP externo.

1. Configure o IdP externo como um provedor de identidade em. IAM

1. Crie uma função `SAMLValidator` Lambda que possa ser acessada pelo IdP (por meio de uma função URL ou Gateway). API

1. Crie uma função `GeneratePresignedUrl` Lambda e um API Gateway para acessar a função.

1. Crie uma IAM função que os usuários possam assumir para invocar o API Gateway. Essa função deve ser passada em SAML asserção como um atributo no seguinte formato:
   + Nome do atributo: https://aws.amazon.com/SAML/ Atributos/Função
   + Valores de atributo `<IdentityProviderARN>`, `<RoleARN>`

1. Atualize o endpoint SAML Assertion Consumer Service (ACS) para a `SAMLValidator` invocação. URL

SAMLcódigo de exemplo do validador:

```
import requests
import os
import boto3
from urllib.parse import urlparse, parse_qs
import base64
import requests
from aws_requests_auth.aws_auth import AWSRequestsAuth
import json


# Config for calling AssumeRoleWithSAML
idp_arn = "arn:aws:iam::0123456789:saml-provider/MyIdentityProvider"
api_gw_role_arn = 'arn:aws:iam:: 0123456789:role/APIGWAccessRole'
studio_api_url = "abcdef.execute-api.us-east-1.amazonaws.com"
studio_api_gw_path = "https://" + studio_api_url + "/Prod "

# Every customer will need to get SAML Response from the POST call
def get_saml_response(event):
    saml_response_uri = base64.b64decode(event['body']).decode('ascii')
    request_body = parse_qs(saml_response_uri)
    print(f"b64 saml response: {request_body['SAMLResponse'][0]}")
    return request_body['SAMLResponse'][0]


def lambda_handler(event, context):
    sts = boto3.client('sts')
    
    # get temporary credentials 
    response = sts.assume_role_with_saml(
                    RoleArn=api_gw_role_arn,
                    PrincipalArn=durga_idp_arn,
                    SAMLAssertion=get_saml_response(event)
                )    
    auth = AWSRequestsAuth(aws_access_key=response['Credentials']['AccessKeyId'],
                      aws_secret_access_key=response['Credentials']['SecretAccessKey'],
                      aws_host=studio_api_url,
                      aws_region='us-west-2',
                      aws_service='execute-api',
                      aws_token=response['Credentials']['SessionToken'])
                      
    presigned_response = requests.post(
        studio_api_gw_path,
        data=saml_response_data,
        auth=auth)
        
    return presigned_response
```