좋아, 그래서 나는이 작업을 수행하기 위해 관리 : 나는 특정 폴더가 작은 버전의 것이며, 이는 공개되며, 나머지는 개인이 될 것이며, carrierwave를 구성한다는 나의 버킷에 대한 정책을 만들어
이미지를 다른 경로에 저장합니다.
먼저 carrierwave에서 기본 설정 인 store_dir (기본 버전을 저장 했음)을 설정하면 원하는대로 경로를 변경할 수 있습니다.
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}/public"
end
그리고 버전 블록 내부에 나는이 같은 여기서 store_dir 방법 오버라이드 (override) :
version :thumb do
process :resize_to_fill => [200, 200]
process :optimize
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}/private"
end
end
당신이 기본 버전에 대한이 같은 것을하게 될 겁니다이 방법 :
/uploads/model/attribute/id/private/000564cf-c7e9-3d7b-bf7f-48dd-1910667-e0bbd8b3.jpg
을 이 버전의 다른 버전에서는 기본 store_dir을 덮어 씁니다.
/uploads/model/attribute/id/public/thumb_000564cf-c7e9-3d7b-bf7f-48dd-1910667-e0bbd8b3.jpg
/uploads/model/attribute/id/public/display_000564cf-c7e9-3d7b-bf7f-48dd-1910667-e0bbd8b3.jpg
그런 다음 경로를 통해 와일드 카드를 사용하여 공용 폴더에 공용 액세스 권한을 부여하면서 amazon s3 버킷에 정책을 정의합니다.
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "AllowPublicRead",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::BUCKETNAME/uploads/*/*/*/public/*"
}
]
}
동일한 요구 사항을 가진 다른 사용자에게 도움이되기를 바랍니다.