Skip to main content
NetApp artificial intelligence solutions
简体中文版经机器翻译而成,仅供参考。如与英语版出现任何冲突,应以英语版为准。

第 1 部分 - 将Amazon FSx for NetApp ONTAP (FSx ONTAP) 作为私有 S3 存储桶集成到 AWS SageMaker

本节提供了使用 AWS SageMaker 将 FSx ONTAP配置为私有 S3 存储桶的指南。

简介

以 SageMaker 为例,本页面提供了将 FSx ONTAP配置为私有 S3 存储桶的指导。

有关 FSx ONTAP的更多信息,请查看此演示文稿("视频链接" )

用户指南

服务器创建

创建 SageMaker Notebook 实例

  1. 打开 AWS 控制台。在搜索面板中,搜索 SageMaker 并单击服务 Amazon SageMaker

    打开 AWS 控制台

  2. 打开 Notebook 选项卡下的 Notebook 实例,点击橙色按钮 创建笔记本实例

    AWS SageMaker Notebook实例控制台

  3. 在创建页面中,输入*笔记本实例名称*展开*网络*面板保留其他条目的默认值,并选择*VPC*、子网*和*安全组。 (此*VPC*和*Subnet*稍后将用于创建 FSx ONTAP文件系统)单击右下角的橙色按钮*创建笔记本实例*。

    创建笔记本实例

创建 FSx ONTAP文件系统

  1. 打开 AWS 控制台。在搜索面板中,搜索 Fsx 并单击服务 FSx

    FSx 面板

  2. 单击*创建文件系统*。

    创建文件系统

  3. 选择第一张卡 FSx ONTAP 并单击 下一步

    选择文件系统类型

  4. 在详细信息配置页面中。

    1. 选择*标准创建*选项。

      创建文件系统面板

    2. 输入*文件系统名称*和*SSD存储容量*。

      指定文件系统详细信息

    3. 确保使用与 SageMaker Notebook 实例相同的 VPCsubnet

      网络和安全配置

    4. 为您的 SVM(存储虚拟机)输入*存储虚拟机*名称和*指定密码*。

      默认存储虚拟机配置

    5. 保留其他条目的默认值,然后单击右下角的橙色按钮“下一步”。

      确认配置

    6. 点击审核页面右下角的橙色按钮*创建文件系统*。

      检查配置并确认创建

  5. 启动 FSx 文件系统可能需要大约 20-40 分钟

    检查 FSx 控制台

服务器配置

ONTAP 配置

  1. 打开创建的FSx文件系统。请确保状态为*可用*。

    等待后端创建

  2. 选择*管理*选项卡并保留*管理端点 - IP 地址*和* ONTAP管理员用户名*。

    文件系统详细信息控制台

  3. 打开创建的*SageMaker Notebook实例*,然后单击*打开JupyterLab*。

    AWS SageMaker Notebook 实例控制台

  4. 在 Jupyter Lab 页面中,打开一个新的*终端*。

    Jupyter Lab 欢迎页面

  5. 输入 ssh 命令 ssh <管理员用户名>@< ONTAP服务器 IP> 登录 FSx ONTAP文件系统。 (用户名和 IP 地址从步骤 2 中检索)请使用创建 存储虚拟机 时使用的密码。

    Jupyter Lab 终端

  6. 按以下顺序执行命令。我们使用 fsxn-ontap 作为 FSx ONTAP私有 S3 存储桶名称 的名称。请使用*存储虚拟机名称*作为*-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

    Jupyter Lab 终端输出

  7. 执行以下命令来检索 FSx ONTAP私有 S3 的端点 IP 和凭据。

    network interface show -vserver fsxn-svm-demo -lif nfs_smb_management_1
    
    set adv
    
    vserver object-store-server user show
  8. 保留端点 IP 和凭证以供将来使用。

    Jupyter Lab 终端

客户端配置

  1. 在 SageMaker Notebook 实例中,创建一个新的 Jupyter 笔记本。

    打开一个新的 Jupyter 笔记本

  2. 使用以下代码作为解决方案将文件上传到 FSx ONTAP私有 S3 存储桶。有关全面的代码示例,请参阅此笔记本。"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']

这完成了 FSx ONTAP和 SageMaker 实例之间的集成。

有用的调试清单

  • 确保 SageMaker Notebook 实例和 FSx ONTAP文件系统位于同一个 VPC 中。

  • 记得在ONTAP上运行 set dev 命令将权限级别设置为 dev

常见问题解答(截至 2023 年 9 月 27 日)

问:为什么我在将文件上传到 FSx ONTAP时收到错误“调用 CreateMultipartUpload 操作时发生错误(未实现):您请求的 s3 命令未实现”?

答:作为私有 S3 存储桶,FSx ONTAP支持上传最大 100MB 的文件。使用S3协议时,大于100MB的文件会被分成100MB的块,并调用‘CreateMultipartUpload’函数。但是,FSx ONTAP私有 S3 的当前实现不支持此功能。

问:为什么在将文件上传到 FSx ONTAP时出现错误“调用 PutObject 操作时发生错误(AccessDenied):访问被拒绝”?

答:要从 SageMaker Notebook 实例访问 FSx ONTAP私有 S3 存储桶,请将 AWS 凭证切换到 FSx ONTAP凭证。但是,授予实例写入权限需要一种解决方法,即安装存储桶并运行“chmod”shell 命令来更改权限。

问:如何将 FSx ONTAP私有 S3 存储桶与其他 SageMaker ML 服务集成?

答:遗憾的是,SageMaker 服务 SDK 没有提供指定私有 S3 存储桶端点的方法。因此,FSx ONTAP S3 与 Sagemaker Data Wrangler、Sagemaker Clarify、Sagemaker Glue、Sagemaker Athena、Sagemaker AutoML 等 SageMaker 服务不兼容。