我在我的子域sub.example.com
上使用Laravel框架尝试与我的网站的所有图片实现与Amazon S3的连接。
这是我的保管政策(bucket-1
)
{
"Id": "Policy************",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt***********",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::bucket-1/*",
"Principal": "*"
}
]
}
这是我的CORS
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>DELETE</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<ExposeHeader>ETag</ExposeHeader>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
我为我的用户授予了所有权限,list
只授予了Everyone
。
为什么我上传图片时,我的网站上没有显示该图片(net::ERR_INSECURE_RESPONSE
)?
如果我导航到图片的网址(https://s3.eu-west-1.amazonaws.com/bucket-1/...
),则Chrome会显示一个警告页面,其中包含Your connection is not private
s3.eu-west-1.amazonaws.com. NET::ERR_CERT_COMMON_NAME_INVALID
Subject: *.s3-eu-west-1.amazonaws.com
Issuer: DigiCert SHA2 High Assurance Server CA
让我更加困惑的是,如果我复制粘贴另一个标签上的相同链接,我可以毫无问题地看到图片。
答案 0 :(得分:2)
您正在使用s3.eu-west-1.amazonaws.com
,但您应该使用s3-eu-west-1.amazonaws.com
...您想在“s3”之后使用短划线而不是点。
http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region
S3中的不同区域的惯例有所不同,具体取决于年龄。你所做的将在eu-central-1中有效,它在两种方式都有效,但在eu-west-1中则不然。