在AWS S3中托管静态网站时,可以使用ACL(访问控制列表)和权限来定义对网站内容的访问权限。以下是一个解决方法,包含了代码示例:
import boto3
s3 = boto3.client('s3')
bucket_name = 'your-bucket-name'
# 创建存储桶
s3.create_bucket(Bucket=bucket_name)
# 启用静态网站托管
s3.put_bucket_website(
Bucket=bucket_name,
WebsiteConfiguration={
'IndexDocument': {'Suffix': 'index.html'}
}
)
# 设置公有读取ACL权限
s3.put_bucket_acl(
Bucket=bucket_name,
ACL='public-read'
)
# 配置存储桶策略
s3.put_bucket_policy(
Bucket=bucket_name,
Policy='''{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::%s/*"
}
]
}''' % bucket_name
)
# 上传静态网站内容
s3.upload_file('index.html', bucket_name, 'index.html')
请注意,在上述示例中,your-bucket-name应替换为您自己的存储桶名称,index.html是您要上传的网站内容文件。