rails로 만든 앱의 프로덕션 환경의 이미지 저장 대상을 S3로 변경
개발 환경
Mac OS Catalina 10.15.7
루비 2.6계
rails 6.0계
프로덕션 환경
nginx 1.18.0
AWS(EC2, S3, ALB, Route53)
전제
nginx 1.18.0
AWS(EC2, S3, ALB, Route53)
전제
버킷 만들기
먼저 AWS에 로그인하고 헤더에서 서비스를 클릭합니다.
나열된 서비스 이름 중에서 S3을 선택합시다.
S3을 선택한 후 버킷 만들기를 클릭하여 버킷을 만듭니다.
원하는 버킷 이름을 입력하고 지역을 '아시아 태평양(도쿄)'로 설정합니다.
그런 다음 블록 공개 액세스의 버킷 설정을 합니다.
다음과 같이 확인하십시오.
맨 위의 "블록 공개 액세스 버킷 설정"을 선택 취소하면 다음 확인란을 선택할 수 있습니다.
확인할 수 있으면 다른 것은 특별히 변경하지 않고 버킷을 만듭니다.
버킷 정책 설정
방금 만든 버킷을 클릭하여 사용 권한에서 버킷 정책을 편집합니다.
버킷 정책에 다음을 붙여넣습니다.
{
"Version": "2012-10-17",
"Id": "Policy1544152951996",
"Statement": [
{
"Sid": "Stmt1544152948221",
"Effect": "Allow",
"Principal": {
"AWS": "ユーザーのARN"
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::作成したバケット名"
}
]
}
가능하면 변경사항 저장을 클릭합니다.
aws-sdk-s3 도입
여기에서 rails 쪽입니다.
먼저 S3을 사용하는 데 필요한 Gemfile을 소개합니다.
Gemfile에 다음을 추가
gem "aws-sdk-s3", require: false
#gemfile記述後
bundle install
production.rb 편집
production.rb의 이미지 저장 대상을 amazon으로 변경합니다.
config/environments/production.rbconfig.active_storage.service = :amazon
storage.yml 편집
strage.yml을 편집합니다. access_key_id와 secret_access_key는 이후 환경 변수로 설정됩니다.
storage.ymllocal:
service: Disk
root: <%= Rails.root.join("storage") %>
## 以下を追記
amazon:
service: S3
region: ap-northeast-1
bucket: 作成した自身の「バケット名」を入力
access_key_id: <%= ENV['AWS_ACCESS_KEY_ID'] %>
secret_access_key: <%= ENV['AWS_SECRET_ACCESS_KEY'] %>
환경 변수 설정
터미널에서 환경 변수를 설정합니다.
이미 설정한 경우 날려 줘도 괜찮습니다.
vim ~/.zshrc
i를 눌러 인서트 모드로 전환한 후 다음을 추가
export AWS_ACCESS_KEY_ID="ご自身のCSVファイルのAccess key ID"
export AWS_SECRET_ACCESS_KEY="ご自身のCSVファイルのSecret access key"
추기 후 esc 키로 인서트 모드를 종료한 후 :wq로 저장합시다.
그런 다음 터미널에서 다음 명령을 입력합니다.
source ~/.zshrc
Heroku에 환경 변수 설정 (Heroku를 사용하는 경우)
Heroku에 올리면 환경 변수를 추가해야합니다. (EC2에 배포하는 사람은 아마 이미 설정되어 있다고 생각합니다)
# ターミナル
% heroku config:set AWS_ACCESS_KEY_ID="自身のCSVファイルのAccess key ID"
# ターミナル
% heroku config:set AWS_SECRET_ACCESS_KEY="自身のCSVファイルのSecret access key"
#ターミナル
% git push heroku master
EC2이면 다시 배포하면 S3에 이미지가 저장됩니다.
이상입니다.
Reference
이 문제에 관하여(rails로 만든 앱의 프로덕션 환경의 이미지 저장 대상을 S3로 변경), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/toto_public/items/b9c9bc93a1dfd03a2cbb
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
방금 만든 버킷을 클릭하여 사용 권한에서 버킷 정책을 편집합니다.
버킷 정책에 다음을 붙여넣습니다.
{
"Version": "2012-10-17",
"Id": "Policy1544152951996",
"Statement": [
{
"Sid": "Stmt1544152948221",
"Effect": "Allow",
"Principal": {
"AWS": "ユーザーのARN"
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::作成したバケット名"
}
]
}
가능하면 변경사항 저장을 클릭합니다.
aws-sdk-s3 도입
여기에서 rails 쪽입니다.
먼저 S3을 사용하는 데 필요한 Gemfile을 소개합니다.
Gemfile에 다음을 추가
gem "aws-sdk-s3", require: false
#gemfile記述後
bundle install
production.rb 편집
production.rb의 이미지 저장 대상을 amazon으로 변경합니다.
config/environments/production.rbconfig.active_storage.service = :amazon
storage.yml 편집
strage.yml을 편집합니다. access_key_id와 secret_access_key는 이후 환경 변수로 설정됩니다.
storage.ymllocal:
service: Disk
root: <%= Rails.root.join("storage") %>
## 以下を追記
amazon:
service: S3
region: ap-northeast-1
bucket: 作成した自身の「バケット名」を入力
access_key_id: <%= ENV['AWS_ACCESS_KEY_ID'] %>
secret_access_key: <%= ENV['AWS_SECRET_ACCESS_KEY'] %>
환경 변수 설정
터미널에서 환경 변수를 설정합니다.
이미 설정한 경우 날려 줘도 괜찮습니다.
vim ~/.zshrc
i를 눌러 인서트 모드로 전환한 후 다음을 추가
export AWS_ACCESS_KEY_ID="ご自身のCSVファイルのAccess key ID"
export AWS_SECRET_ACCESS_KEY="ご自身のCSVファイルのSecret access key"
추기 후 esc 키로 인서트 모드를 종료한 후 :wq로 저장합시다.
그런 다음 터미널에서 다음 명령을 입력합니다.
source ~/.zshrc
Heroku에 환경 변수 설정 (Heroku를 사용하는 경우)
Heroku에 올리면 환경 변수를 추가해야합니다. (EC2에 배포하는 사람은 아마 이미 설정되어 있다고 생각합니다)
# ターミナル
% heroku config:set AWS_ACCESS_KEY_ID="自身のCSVファイルのAccess key ID"
# ターミナル
% heroku config:set AWS_SECRET_ACCESS_KEY="自身のCSVファイルのSecret access key"
#ターミナル
% git push heroku master
EC2이면 다시 배포하면 S3에 이미지가 저장됩니다.
이상입니다.
Reference
이 문제에 관하여(rails로 만든 앱의 프로덕션 환경의 이미지 저장 대상을 S3로 변경), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/toto_public/items/b9c9bc93a1dfd03a2cbb
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
gem "aws-sdk-s3", require: false
#gemfile記述後
bundle install
production.rb의 이미지 저장 대상을 amazon으로 변경합니다.
config/environments/production.rb
config.active_storage.service = :amazon
storage.yml 편집
strage.yml을 편집합니다. access_key_id와 secret_access_key는 이후 환경 변수로 설정됩니다.
storage.ymllocal:
service: Disk
root: <%= Rails.root.join("storage") %>
## 以下を追記
amazon:
service: S3
region: ap-northeast-1
bucket: 作成した自身の「バケット名」を入力
access_key_id: <%= ENV['AWS_ACCESS_KEY_ID'] %>
secret_access_key: <%= ENV['AWS_SECRET_ACCESS_KEY'] %>
환경 변수 설정
터미널에서 환경 변수를 설정합니다.
이미 설정한 경우 날려 줘도 괜찮습니다.
vim ~/.zshrc
i를 눌러 인서트 모드로 전환한 후 다음을 추가
export AWS_ACCESS_KEY_ID="ご自身のCSVファイルのAccess key ID"
export AWS_SECRET_ACCESS_KEY="ご自身のCSVファイルのSecret access key"
추기 후 esc 키로 인서트 모드를 종료한 후 :wq로 저장합시다.
그런 다음 터미널에서 다음 명령을 입력합니다.
source ~/.zshrc
Heroku에 환경 변수 설정 (Heroku를 사용하는 경우)
Heroku에 올리면 환경 변수를 추가해야합니다. (EC2에 배포하는 사람은 아마 이미 설정되어 있다고 생각합니다)
# ターミナル
% heroku config:set AWS_ACCESS_KEY_ID="自身のCSVファイルのAccess key ID"
# ターミナル
% heroku config:set AWS_SECRET_ACCESS_KEY="自身のCSVファイルのSecret access key"
#ターミナル
% git push heroku master
EC2이면 다시 배포하면 S3에 이미지가 저장됩니다.
이상입니다.
Reference
이 문제에 관하여(rails로 만든 앱의 프로덕션 환경의 이미지 저장 대상을 S3로 변경), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/toto_public/items/b9c9bc93a1dfd03a2cbb
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
local:
service: Disk
root: <%= Rails.root.join("storage") %>
## 以下を追記
amazon:
service: S3
region: ap-northeast-1
bucket: 作成した自身の「バケット名」を入力
access_key_id: <%= ENV['AWS_ACCESS_KEY_ID'] %>
secret_access_key: <%= ENV['AWS_SECRET_ACCESS_KEY'] %>
터미널에서 환경 변수를 설정합니다.
이미 설정한 경우 날려 줘도 괜찮습니다.
vim ~/.zshrc
i를 눌러 인서트 모드로 전환한 후 다음을 추가
export AWS_ACCESS_KEY_ID="ご自身のCSVファイルのAccess key ID"
export AWS_SECRET_ACCESS_KEY="ご自身のCSVファイルのSecret access key"
추기 후 esc 키로 인서트 모드를 종료한 후 :wq로 저장합시다.
그런 다음 터미널에서 다음 명령을 입력합니다.
source ~/.zshrc
Heroku에 환경 변수 설정 (Heroku를 사용하는 경우)
Heroku에 올리면 환경 변수를 추가해야합니다. (EC2에 배포하는 사람은 아마 이미 설정되어 있다고 생각합니다)
# ターミナル
% heroku config:set AWS_ACCESS_KEY_ID="自身のCSVファイルのAccess key ID"
# ターミナル
% heroku config:set AWS_SECRET_ACCESS_KEY="自身のCSVファイルのSecret access key"
#ターミナル
% git push heroku master
EC2이면 다시 배포하면 S3에 이미지가 저장됩니다.
이상입니다.
Reference
이 문제에 관하여(rails로 만든 앱의 프로덕션 환경의 이미지 저장 대상을 S3로 변경), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/toto_public/items/b9c9bc93a1dfd03a2cbb
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
# ターミナル
% heroku config:set AWS_ACCESS_KEY_ID="自身のCSVファイルのAccess key ID"
# ターミナル
% heroku config:set AWS_SECRET_ACCESS_KEY="自身のCSVファイルのSecret access key"
#ターミナル
% git push heroku master
Reference
이 문제에 관하여(rails로 만든 앱의 프로덕션 환경의 이미지 저장 대상을 S3로 변경), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/toto_public/items/b9c9bc93a1dfd03a2cbb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)