繁体   English   中英

无法将文件从 sagemaker 笔记本上传到 S3

[英]Unable to upload a file from sagemaker notebook to S3

我正在尝试将我清理过的(并使用 kfold 拆分数据)上传到 s3,以便我可以使用 sagemaker 创建一个使用它的模型(因为 sagemaker 想要一个包含训练和测试数据的 s3 文件)。 但是,每当我尝试将 csv 上传到 s3 时,它都会运行,但我在 s3 中看不到该文件。

我曾尝试更改我在 sagemaker 中访问的文件夹,或者尝试上传不同类型的文件,但这些文件都不起作用。 此外,我在类似的 Stack Overflow 帖子中尝试了这些方法,但没有成功。

另请注意,我可以手动将我的 csv 上传到 s3,而不是通过 sagemaker 自动上传。

下面的代码是我目前必须上传到 s3 的,我是直接从 AWS 文档中复制的,用于使用 sagemaker 上传文件。

import io
import csv
import boto3

#key = "{}/{}/examples".format(prefix,data_partition_name)
#url = 's3n://{}/{}'.format(bucket, key)
name = boto3.Session().resource('s3').Bucket('nc-demo-sagemaker').name
print(name)
boto3.Session().resource('s3').Bucket('nc-demo-sagemaker').upload_file('train', '/')
print('Done writing to {}'.format('sagemaker bucket'))

我希望当我运行该代码片段时,我能够将训练和测试数据上传到我想要用于创建 sagemaker 模型的文件夹中。

该问题可能是由于您的 SageMaker 笔记本缺乏适当的 S3 权限。

您的 IAM 用户具有具有权限的角色,这决定了您是否可以通过 S3 控制台手动上传 CSV。

SageMaker 笔记本实际上有自己的 IAM 角色,这将要求您明确添加 S3 权限。 您可以在 SageMaker 控制台中看到这一点,默认 IAM 角色以SageMaker-XXX开头。 您可以编辑此 SageMaker 创建的 IAM 角色,也可以附加包含 S3 读/写权限的现有 IAM 角色。

我总是使用此代码将文件从 Sagemaker 笔记本实例上传到 S3。 这会将所有指定文件夹的内容上传到 S3。 或者,您可以指定要上传的单个文件。

import sagemaker


s3_path_to_data = sagemaker.Session().upload_data(bucket='my_awesome_bucket', 
                                                  path='local/path/data/train', 
                                                  key_prefix='my_crazy_project_name/data/train')

我希望这有帮助!

导入 sagemaker 库并使用 sagemaker 会话向/从 s3 存储桶上传和下载文件。

import sagemaker

sagemaker_session = sagemaker.Session(default_bucket='MyBucket')
upload_data = sagemaker_session.upload_data(path='local_file_path', key_prefix='my_prefix')

print('upload_data : {}'.format(upload_data))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM