出现此错误的原因是因为在S3对象的访问点名称中包含了无效字符,例如“/”或“.”。要解决此问题,需要修改AWS S3接入点名称。
下面是一个示例,该示例在创建S3接入点时遭遇了Resource field error - AWS S3 access point错误:
import boto3
s3_client = boto3.client('s3')
access_point_name = 'my_access_point!/subpath'
create_access_point_res = s3_client.create_access_point(
AccountId='123456789012',
Name=access_point_name,
Bucket='my-bucket',
VpcConfiguration={
'VpcId': 'vpc-0123456789abcdef0',
'SubnetId': 'subnet-0123456789abcdef',
'SecurityGroupIds': [
'sg-0123456789abcdef',
]
}
)
从上面的示例中可以看出,我们在access_point_name中定义了一个“/”字符,这是不被允许的。
为了修复此问题,我们需要删除access_point_name中的无效字符,并修改create_access_point_res:
import boto3
s3_client = boto3.client('s3')
access_point_name = 'my_access_point-subpath'
create_access_point_res = s3_client.create_access_point(
AccountId='123456789012',
Name=access_point_name,
Bucket='my-bucket',
VpcConfiguration={
'VpcId': 'vpc-0123456789abcdef0',
'SubnetId': 'subnet-0123456789abcdef',
'SecurityGroupIds': [
'sg-0123456789abcdef',
]
}
)
这样,S3接入点就可以成功创建并使用。