Je crée une application originale avec Rails. Nous avons implémenté une fonction de publication d'images dans cette application. Cependant, lorsque je l'ai déployé avec Heroku, l'image a disparu après 24 heures (spécification). Pour résoudre ce problème, nous avons utilisé S3 (Simple Storage Service) d'AWS (Amazon Web Service). Je vais l'écrire sous forme de mémorandum parce que je pense que j'aurai l'occasion de l'utiliser à l'avenir. De plus, j'omettrai la création de compte et les mesures de sécurité sur AWS (résumées dans un autre article).
La préparation du godet est divisée en deux étapes.
** 1-1. Création d'un bucket ** Cliquez sur l'onglet Services sur le site Web officiel d'AWS et sélectionnez S3. Cliquez ensuite sur "Créer un bucket". Notez que le nom du bucket ne peut pas être enregistré si quelqu'un l'a déjà utilisé.
** 1-2. Paramètres de stratégie du bucket ** Décidez du type d'accès que vous souhaitez autoriser pour enregistrer dans S3 et lire les données. (Cette fois, définie par l'utilisateur IAM.)
-Entrez IAM dans la fenêtre de recherche à partir du numéro de service et cliquez sur le menu affiché. -Cliquez sur l'utilisateur à l'extrême gauche, puis cliquez sur le nom d'utilisateur affiché. -Copiez l'ARN. -Sélectionnez à nouveau S3 dans l'onglet service et sélectionnez le compartiment cible. -Cliquez sur l'onglet Autorisations, Modifier l'élément de stratégie du compartiment. (Voir ci-dessous)
{
"Version": "2012-10-17",
"Id": "Policy1544152951996",
"Statement": [
{
"Sid": "Stmt1544152948221",
"Effect": "Allow",
"Principal": {
"AWS": "Collez l'ARN que vous avez copié précédemment"
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::Bucket cible"
}
]
}
Cela nécessite également les quatre étapes suivantes.
** 2-1. Installation Gem requise ** Ajoutez le Gem suivant au fichier Gem et installez-le sur le terminal.
Gemfile
gem "aws-sdk-s3", require: false
Terminal
bundle install
** 2-2. Spécifiez la destination d'enregistrement ** Normalement, la destination de sauvegarde est locale. Réécrivez ceci sur amazon. Notez également que les fichiers à décrire diffèrent entre l'environnement local et l'environnement de production.
config/environments/development.rb(Environnement local)
config.active_storage.service = :amazon
config/environments/production.rb(Environnement de production)
config.active_storage.service = :amazon
** 2-3. Définir les variables d'environnement **
config/storage.yml
local:
service: Disk
root: <%= Rails.root.join("storage") %>
-------------------------------Ajoutez ce qui suit----------------------------------
amazon:
service: S3
access_key_id: <%= ENV['AWS_ACCESS_KEY_ID'] %>
secret_access_key: <%= ENV['AWS_SECRET_ACCESS_KEY'] %>
region: ap-northeast-1
bucket:Nom du compartiment cible
Définissez les variables d'environnement sur le terminal.
Terminal
vim ~/.zshrc
Terminal
export AWS_ACCESS_KEY_ID="Copiez la valeur de l'ID de clé d'accès"
export AWS_SECRET_ACCESS_KEY="Copiez la valeur de la clé d'accès secrète"
Après le réglage, appliquez à nouveau le réglage dans le terminal.
Terminal
source ~/.zshrc
** 2-4. Vérification du fonctionnement ** Essayez de l'enregistrer et c'est OK si l'objet est ajouté au compartiment pour la page d'AWS S3
c'est tout
Recommended Posts