Parte 1 - integração do Amazon FSX for NetApp ONTAP (FSX ONTAP) como um bucket privado do S3 no AWS SageMaker
Esta seção fornece um guia sobre como configurar o FSX ONTAP como um bucket privado do S3 usando o AWS SageMaker.
Autor(es): Jian Jian (Ken), cientista Sênior de dados e aplicado, NetApp
Introdução
Usando o SageMaker como exemplo, esta página fornece orientação sobre como configurar o FSX ONTAP como um bucket privado do S3.
Para obter mais informações sobre o FSX ONTAP, dê uma olhada nesta apresentação ("Link de vídeo")
Manual do utilizador
Criação do servidor
Crie uma instância do SageMaker notebook
-
Abra o console da AWS. No painel de pesquisa, procure o SageMaker e clique no serviço Amazon SageMaker.
-
Abra instâncias do notebook na guia notebook, clique no botão laranja criar instância do notebook.
-
Na página de criação, digite o nome da instância do notebook expanda o painel rede deixe outras entradas padrão e selecione VPC, Subnet e Grupo(s) de segurança. (Este VPC e sub-rede serão usados para criar o sistema de arquivos FSX ONTAP mais tarde) clique no botão laranja criar instância de notebook no canto inferior direito.
Crie um sistema de arquivos FSX ONTAP
-
Abra o console da AWS. No painel de pesquisa, pesquise no FSX e clique no serviço FSX.
-
Clique em Create file system.
-
Selecione o primeiro cartão FSX ONTAP e clique em Avançar.
-
Na página de configuração de detalhes.
-
Selecione a opção Standard Create.
-
Introduza o Nome do sistema de ficheiros e a capacidade de armazenamento SSD.
-
Certifique-se de usar a VPC e a sub-rede iguais à instância SageMaker notebook.
-
Digite o nome Storage Virtual Machine e Especifique uma senha para a sua SVM (Storage Virtual Machine).
-
Deixe outras entradas padrão e clique no botão laranja Next no canto inferior direito.
-
Clique no botão laranja Create file system no canto inferior direito da página de revisão.
-
-
Pode demorar cerca de 20-40 minutos para ativar o sistema de arquivos FSX.
Configuração do servidor
Configuração ONTAP
-
Abra o sistema de arquivos FSX criado. Certifique-se de que o status é disponível.
-
Selecione a guia Administração e mantenha o endpoint de gerenciamento - endereço IP e Nome de usuário do administrador do ONTAP.
-
Abra a instância criada do SageMaker notebook e clique em abrir o JupyterLab.
-
Na página do Jupyter Lab, abra um novo Terminal.
-
Digite o comando ssh ssh ONTAP para fazer login no sistema de arquivos FSX ONTAP. (O nome de usuário e o endereço IP são recuperados a partir da etapa 2) Use a senha usada ao criar a máquina virtual Storage.
-
Execute os comandos na seguinte ordem. Usamos fsxn-ONTAP como o nome do bucket do FSX ONTAP private S3. Use o nome da máquina virtual de armazenamento para o argumento -vserver.
vserver object-store-server create -vserver fsxn-svm-demo -object-store-server fsx_s3 -is-http-enabled true -is-https-enabled false vserver object-store-server user create -vserver fsxn-svm-demo -user s3user vserver object-store-server group create -name s3group -users s3user -policies FullAccess vserver object-store-server bucket create fsxn-ontap -vserver fsxn-svm-demo -type nas -nas-path /vol1
-
Execute os comandos abaixo para recuperar o IP do endpoint e as credenciais do FSX ONTAP private S3.
network interface show -vserver fsxn-svm-demo -lif nfs_smb_management_1 set adv vserver object-store-server user show
-
Mantenha o IP e a credencial do endpoint para uso futuro.
Configuração do cliente
-
Na instância do SageMaker notebook, crie um novo notebook Jupyter.
-
Use o código abaixo como uma solução alternativa para carregar arquivos para o bucket privado do FSX ONTAP S3. Para um exemplo de código abrangente, consulte este caderno. "fsxn_demo.ipynb"
# Setup configurations # -------- Manual configurations -------- seed: int = 77 # Random seed bucket_name: str = 'fsxn-ontap' # The bucket name in ONTAP aws_access_key_id = '<Your ONTAP bucket key id>' # Please get this credential from ONTAP aws_secret_access_key = '<Your ONTAP bucket access key>' # Please get this credential from ONTAP fsx_endpoint_ip: str = '<Your FSx ONTAP IP address>' # Please get this IP address from FSx ONTAP # -------- Manual configurations -------- # Workaround ## Permission patch !mkdir -p vol1 !sudo mount -t nfs $fsx_endpoint_ip:/vol1 /home/ec2-user/SageMaker/vol1 !sudo chmod 777 /home/ec2-user/SageMaker/vol1 ## Authentication for FSx ONTAP as a Private S3 Bucket !aws configure set aws_access_key_id $aws_access_key_id !aws configure set aws_secret_access_key $aws_secret_access_key ## Upload file to the FSx ONTAP Private S3 Bucket %%capture local_file_path: str = <Your local file path> !aws s3 cp --endpoint-url http://$fsx_endpoint_ip /home/ec2-user/SageMaker/$local_file_path s3://$bucket_name/$local_file_path # Read data from FSx ONTAP Private S3 bucket ## Initialize a s3 resource client import boto3 # Get session info region_name = boto3.session.Session().region_name # Initialize Fsxn S3 bucket object # --- Start integrating SageMaker with FSXN --- # This is the only code change we need to incorporate SageMaker with FSXN s3_client: boto3.client = boto3.resource( 's3', region_name=region_name, aws_access_key_id=aws_access_key_id, aws_secret_access_key=aws_secret_access_key, use_ssl=False, endpoint_url=f'http://{fsx_endpoint_ip}', config=boto3.session.Config( signature_version='s3v4', s3={'addressing_style': 'path'} ) ) # --- End integrating SageMaker with FSXN --- ## Read file byte content bucket = s3_client.Bucket(bucket_name) binary_data = bucket.Object(data.filename).get()['Body']
Isso conclui a integração entre o FSX ONTAP e a instância do SageMaker.
Lista de verificação de depuração útil
-
Verifique se a instância do SageMaker notebook e o sistema de arquivos FSX ONTAP estão na mesma VPC.
-
Lembre-se de executar o comando set dev no ONTAP para definir o nível de privilégio como dev.
FAQ (a partir de 27 de setembro de 2023)
P: Por que estou recebendo o erro "ocorreu um erro (NotImplementado) ao chamar a operação CreateMultipartUpload: O comando S3 que você solicitou não foi implementado" ao carregar arquivos para o FSX ONTAP?
R: Como um bucket privado do S3, o FSX ONTAP suporta o upload de arquivos até 100MBMB. Ao usar o protocolo S3, os arquivos maiores que 100MB são divididos em 100MB blocos, e a função 'CreateMultipartUpload' é chamada. No entanto, a implementação atual do FSX ONTAP private S3 não suporta esta função.
P: Por que estou recebendo o erro "ocorreu um erro (AccessDenied) ao chamar as operações PutObject: Access denied" ao carregar arquivos para o FSX ONTAP?
R: Para acessar o bucket privado do FSX ONTAP S3 de uma instância do SageMaker notebook, troque as credenciais da AWS para as credenciais do FSX ONTAP. No entanto, conceder permissão de gravação à instância requer uma solução alternativa que envolve a montagem do bucket e a execução do comando shell 'chmod' para alterar as permissões.
P: Como posso integrar o bucket privado do FSX ONTAP S3 com outros serviços do SAGEMAKER ML?
R: Infelizmente, o SDK de serviços do SageMaker não fornece uma maneira de especificar o endpoint para o bucket privado do S3. Como resultado, o FSX ONTAP S3 não é compatível com os serviços do SageMaker, como o Gerenciador de dados do SageMaker, o SageMaker clarify, o SageMaker Glue, o Gerenciador de tarefas, o Gerenciador de tarefas, o AutoML e outros.