第1部分—将Amazon FSx for NetApp ONTAP (FSx ONTAP)作为私有S3存储分段集成到AWS SageMaker中
本节提供了有关使用AWS SageMaker将FSx ONTAP配置为私有S3存储分段的指南。
作者:
Jian Jian (Ken)、NetApp高级数据和应用科学人员
简介
本页以SageMaker为例、提供了将FSx ONTAP配置为私有S3存储分段的指导。
有关FSx ONTAP的更多信息,请观看此演示文稿("视频链接")
用户指南
创建服务器
创建SageMaker笔记本实例
-
打开AWS控制台。在搜索面板中、搜索SageMaker并单击服务*亚马逊SageMaker *。
-
打开“笔记本”选项卡下的“笔记本实例”,单击橙色按钮*创建笔记本实例*。
-
在创建页面中,输入*笔记本实例名称*展开*网络*面板保留其他条目默认值,然后选择*VPC*、Subnet*和*Security group(s)。(稍后将使用此*VPC*和*Subnet*来创建FSx ONTAP文件系统)单击右下角的橙色按钮*Create nbook Instance。
创建FSx ONTAP文件系统
-
打开AWS控制台。在搜索面板中,搜索FSx并单击服务*FSX*。
-
单击*创建文件系统*。
-
选择第一张卡*FSx ONTAP,然后单击*Next*。
-
在详细信息配置页面中。
-
选择*标准创建*选项。
-
输入*文件系统名称*和* SSD存储容量*。
-
确保使用与*SageMaker记事本*实例相同的*vpc*和*subnet*。
-
输入SVM (Storage Virtual Machine)的* Storage Virtual Machine*名称和*指定密码*。
-
保留其它条目的默认值,然后单击右下角的橙色按钮*Next*。
-
单击查看页面右下角的橙色按钮*创建文件系统*。
-
-
启动FSx文件系统可能需要大约*20-40分钟*。
服务器配置
ONTAP配置
-
打开创建的FSx文件系统。请确保状态为*可用*。
-
选择*管理*选项卡并保留*管理端点- IP地址*和* ONTAP管理员用户名*。
-
打开创建的*SageMaker笔记本实例*,然后单击*Open JupyterLab*。
-
在Jupyter Lab页面中,打开一个新的*Terminal *。
-
输入ssh命令ssh <admin user name>@<FSx server IP>登录到ONTAP ONTAP文件系统。(用户名和IP地址从步骤2中检索)请使用创建* Storage Virtual Machine*时使用的密码。
-
按以下顺序执行命令。我们使用*fsxn-FS*作为*FSx ONTAP Private ONTAP存储分段名称*的名称。请使用*Storage Virtual Machine name*作为*-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
-
执行以下命令检索FSx ONTAP Private S3的端点IP和凭据。
network interface show -vserver fsxn-svm-demo -lif nfs_smb_management_1 set adv vserver object-store-server user show
-
保留端点IP和凭据以供将来使用。
客户端配置
-
在SageMaker笔记本实例中、创建新的Jupyter笔记本。
-
使用以下代码作为解决方案、将文件上传到FSx ONTAP Private S3存储分段。有关完整的代码示例、请参阅本笔记本。"fsxn_dema.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笔记本实例和FSx ONTAP文件系统位于同一个VPC中。
-
请记得在ONTAP上运行*set dev*命令,将权限级别设置为*dev*。
常见问题解答(截至2023年9月27日)
问:为什么在将文件上传到FSx ONTAP时、调用CreateMultipartUpload操作时收到错误"发生错误(未实施):您请求的S3命令未实施"?
答:作为私有S3存储分段、FSx ONTAP支持上传高达100 MB的文件。使用S3协议时、大于100 MB的文件会划分为100 MB的区块、并调用"CreateMultipartUpload"函数。但是、FSx ONTAP Private S3的当前实施不支持此功能。
问:为什么在将文件上传到FSx ONTAP时、我收到错误"* An error cred (AccessDenied)" when calling the PutObject opers: Access denied*"?
答:要从SageMaker笔记本实例访问FSx ONTAP Private S3存储分段、请将AWS凭据切换到FSx ONTAP凭据。但是、要为实例授予写入权限、需要使用 临时解决策 解决方案 挂载存储分段并运行"chmod" shell命令来更改权限。
问:如何将FSx ONTAP Private S3存储分段与其他SageMaker ML服务集成?
答:遗憾的是、SageMaker服务SDK无法为专用S3存储分段指定端点。因此、FSx ONTAP S3与SageMaker服务不兼容、例如、SagMaker Data Rangler、SagMaker Clarify、SagMaker Glue、SagMaker Athena、SagMaker AutoML等。