【发布时间】:2021-03-18 13:56:00
【问题描述】:
我正在使用 AWS SageMaker。我之前已经使用过它,并且从 S3 存储桶中读取数据没有问题。 所以,我设置了一个新的笔记本实例并 id 这个:
from sagemaker import get_execution_role
role = get_execution_role()
bucket='my-bucket'
data_key = 'myfile.csv'
data_location = 's3://{}/{}'.format(bucket, data_key)
df = pd.read_csv(data_location)
我得到的是这样的:
PermissionError: Access Denied
注意:我检查了 IAM 角色和政策,在我看来,我拥有访问 S3 存储桶的所有必要权限(已授予 AmazonS3FullAccess 等)。与之前的情况不同的是,我的数据是加密的。除了角色,我还有什么需要设置的吗?
编辑:
我使用的角色包含三个策略。这些是
- AmazonS3FullAccess
- AmazonSageMakerFullAccess
还有一个执行角色,我在其中添加了 kms:encrypt 和 kms:decrypt。它看起来像这样:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "xyz",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:ListBucket",
"s3:DeleteObject",
"kms:Encrypt",
"kms:Decrypt"
],
"Resource": "arn:aws:s3:::*"
}
]
}
有什么遗漏吗?
【问题讨论】:
-
您的角色需要对该存储桶的密钥拥有
kms:decrypt权限。 -
如何修改或添加此权限?
-
转到 IAM 控制台,选择合适的角色并在那里添加一个新权限,或者为 kms:decrypt for all resources * 或找出存储桶的特定 kms 密钥。
-
好的,我想我在那里添加了必要的权限,但仍然出现此错误...存储桶也可以公开访问。
-
@luk2302:我编辑了我的问题。如果您能提供帮助,我会很高兴:)
标签: amazon-web-services amazon-s3 error-handling amazon-sagemaker