AWS SageMaker: PermissionError: Access Denied - Reading data from S3 bucket
AWS SageMaker: PermissionError: Access Denied - Reading data from S3 bucket
我正在使用 AWS SageMaker。我以前用过它,从 S3 存储桶读取数据时没有遇到任何问题。
因此,我设置了一个新的笔记本实例并标识为:
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:::*"
}
]
}
是不是少了什么?
您需要添加(或修改)IAM 策略以授予对存储桶用于加密的密钥的访问权限:
{
"Sid": "KMSAccess",
"Action": [
"kms:Decrypt"
],
"Effect": "Allow",
"Resource": "arn:aws:kms:example-region-1:123456789098:key/111aa2bb-333c-4d44-5555-a111bb2c33dd"
}
或者,您可以直接更改 KMS 密钥的密钥策略,以直接授予 sagemaker 角色访问权限。 https://aws.amazon.com/premiumsupport/knowledge-center/s3-bucket-access-default-encryption/
我正在使用 AWS SageMaker。我以前用过它,从 S3 存储桶读取数据时没有遇到任何问题。 因此,我设置了一个新的笔记本实例并标识为:
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:::*"
}
]
}
是不是少了什么?
您需要添加(或修改)IAM 策略以授予对存储桶用于加密的密钥的访问权限:
{
"Sid": "KMSAccess",
"Action": [
"kms:Decrypt"
],
"Effect": "Allow",
"Resource": "arn:aws:kms:example-region-1:123456789098:key/111aa2bb-333c-4d44-5555-a111bb2c33dd"
}
或者,您可以直接更改 KMS 密钥的密钥策略,以直接授予 sagemaker 角色访问权限。 https://aws.amazon.com/premiumsupport/knowledge-center/s3-bucket-access-default-encryption/