사용자의 아바타가 Amazon S3에 업로드되고 저장되며 mywebsite.com
이라는 도메인이 있고 CloudFlare
을 사용하여 S3 버킷에서 파일을 캐시한다고 가정 해 봅시다. 내가 어떻게 그럴 수 있니?CloudFlare를 통해 S3에서 파일을 제공하는 방법
0
A
답변
1
cloudflare 사이트에서 찾을 수있는 문서는 다소 암묵적이며 제대로 작동하려면 Google을 꽤 많이 사용해야했습니다. 그래서 여기에 내 솔루션이 포괄적이지 않을 수도 있지만 시작하기에 충분할 수 있습니다.
1)에 다음과 같은 정책을 추가)
2 avatars.mywebsite.com
라는 버킷을 만듭니다. CORS가 아닌 정책. 내가이하는 생각은 무엇
{
"Version": "2012-10-17",
"Id": "http referer policy",
"Statement": [
{
"Sid": "CloudFlare Requests",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::avatars.mywebsite.com/*",
"Condition": {
"IpAddress": {
"aws:SourceIp": [
"103.21.244.0/22",
"103.22.200.0/22",
"103.31.4.0/22",
"104.16.0.0/12",
"108.162.192.0/18",
"131.0.72.0/22",
"141.101.64.0/18",
"162.158.0.0/15",
"172.64.0.0/13",
"173.245.48.0/20",
"188.114.96.0/20",
"190.93.240.0/20",
"197.234.240.0/22",
"198.41.128.0/17"
]
}
}
}
]
}
는 만 CloudFlare
에 속하고 자신의 웹 사이트에 어딘가에 찾을 수 있습니다 된 IP로 액세스 할 수 있도록이 버킷에 대한 액세스를 제한하는 것입니다. 또한 Id
및 Sid
에는 귀하의 경우에 맞는 정보가 포함될 수 있습니다.
3) CloudFlare
DNS 관리자에 CNAME 레코드를 추가하십시오. 이름 avatars
및 값이어야합니다 avatars.mywebsite.com.s3.amazonaws.com
당신이 당신의 웹 사이트에서 user/1/avatar.jpg
같은 경로로 버킷에있는 파일에 액세스하려면
4) 이제, 다음 SRC를 사용
https://avatars.mywebsite.com/user/1/avatar.jpg
5) HTTPS가 사용되는 경우 CloudFlare
대시 보드에서 SSL 수준을 Full(Strict)
에서 Full
으로 변경해야 할 필요가 있음을 지적 할 가치가 있습니다.
나쁘지 않습니다. * "내가 생각하는 바에는 버킷에 대한 액세스를 제한하여 해당 IP로만 액세스 할 수 있습니다."기술적으로 이것은 버킷을 제한하는 것이 아니라 원본 IP가 비공개 개체에 대한 인증되지 않은 액세스를 허용하는 것입니다. 나열된 주소 중 하나입니다. 객체 ACL, 버킷 정책 및 버킷 ACL이 모든 사람에게 버킷 공개를 설정하지 않으면 넷 효과는 비슷합니다. 'Sid' (Statement ID)는 실제로 편의상 불투명 한 레이블이며, 서비스는 그것을 해석하지 않습니다. –
@ Michael-sqlbot 아, 그 점을 지적 해 주셔서 감사합니다. – JustMichael