1

在 SageMaker 中运行 k-means 示例

from sagemaker import KMeans

data_location = 's3://{}/kmeans_highlevel_example/data'.format(bucket)
output_location = 's3://{}/kmeans_example/output'.format(bucket)

kmeans = KMeans(role=role, 
                train_instance_count=2,
                train_instance_type='ml.c4.8xlarge',
                output_path=output_location,
                k=10, 
                data_location=data_location)

当我运行此行时,出现访问被拒绝错误。

%%time

kmeans.fit(kmeans.record_set(train_set[0]))

错误返回:

ClientError:调用 PutObject 操作时发生错误 (AccessDenied):访问被拒绝

我还阅读了其他问题,但他们的答案并没有解决我的问题。
请你看看我的案子好吗?

4

4 回答 4

4

为了能够在 SageMaker 中训练作业,您需要传入一个AWS IAM 角色,以允许 SageMaker 访问您的 S3 存储桶。

该错误表示 SageMaker 无权在您指定的存储桶中写入文件。

您可以在此处找到您需要添加到您的角色的权限L https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html#sagemaker-roles-createtrainingjob-perms

于 2018-04-09T04:23:36.077 回答
1

要考虑的另一件事是,如果您使用需要 kms 解密的加密存储桶,请确保还包括与 kms 相关的权限,我注意到有时显示的错误是PutObject operation: Access Denied失败实际上与 KMS 相关。

于 2020-08-20T08:52:01.543 回答
1

我遇到了同样的问题。我的Sagemaker Notebook 实例无法读取文件或将文件写入我的 S3 存储桶。故障排除的第一步是为您的 **Sagemaker 实例 ** 定位角色。您可以通过检查此部分来做到这一点这是有关您的 sagemaker 实例的信息

然后从 IAM 转到此特定角色并将另一个策略附加到该角色 这是 IAM 中的角色

我附加了 S3 完全访问权限,但您可以创建自定义策略。我很困惑,因为我使用管理员用户登录。但是,当您使用 Sagemaker 实例时,您的用户策略/角色将不会用于执行操作。

于 2021-01-26T17:47:02.693 回答
0

就我而言,我刚刚忘记将 s3 存储桶名称从默认值重命名为唯一的名称

于 2021-12-14T22:28:32.127 回答