是否可以禁止公共访问AWS文件,但只提供特定的Origin?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了是否可以禁止公共访问AWS文件,但只提供特定的Origin?相关的知识,希望对你有一定的参考价值。

最近我使用AWS S3存储桶为我的Django项目提供静态文件。 这是我的设置:

AWS_ACCESS_KEY_ID = config('AWS_ACCESS_KEY_ID') # 
AWS_SECRET_ACCESS_KEY = config('AWS_SECRET_ACCESS_KEY') # 
AWS_STORAGE_BUCKET_NAME = 'bucket-name' 
AWS_STATIC_LOCATION = 'static'
AWS_S3_CUSTOM_DOMAIN = '%s.s3.amazonaws.com' % AWS_STORAGE_BUCKET_NAME

AWS_S3_OBJECT_PARAMETERS = {
    'CacheControl': 'max-age=86400',
}
AWS_LOCATION = 'static'

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
]
STATIC_URL = 'https://%s/%s/' % (AWS_S3_CUSTOM_DOMAIN, AWS_LOCATION)
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'

创建存储桶后,我可以看到这些选项默认为True

但是当我尝试从我的网站www.my-site.com或本地127.0.0.0.1:8000访问我的静态文件时,它显示403权限被拒绝。我错过了什么?

Request URL: https://bucket-name.s3.us-east-2.amazonaws.com/static/file-name.js
Request method: GET
Remote address: 52.0.0.0:443
Status code: 403

经过一些搜索,我试图定义一个CORS,如:

<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <CORSRule>
        <AllowedOrigin>*</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
        <MaxAgeSeconds>3000</MaxAgeSeconds>
        <AllowedHeader>*</AllowedHeader>
    </CORSRule>
</CORSConfiguration>
答案

Attach role to existing/running EC2 instance

为了能够定义IAM角色,您可以选择现有实例并将新角色附加为对EC2的S3访问

以上是关于是否可以禁止公共访问AWS文件,但只提供特定的Origin?的主要内容,如果未能解决你的问题,请参考以下文章

AWS Amplify AppSync GraphQL @Auth 指令:如何禁止为公共用户列出元素

Cloudfront 提供通过 AWS CDK Python 为 S3 存储桶来源创建的访问被拒绝响应,无需公共访问

有没有办法在 AWS S3 上托管一个静态网站而不提供公共访问权限?

授予对 s3 存储桶的公共访问权限,而不是为 aws 无服务器应用程序提供静态网站

传出流量 AWS 的公共 IP 地址

访问 aws s3 公共存储桶