AWS signifie Amazon Web Servises et est un service de serveur cloud fourni par Amazon. Il s'agit d'un service utilisé par de nombreuses personnes et entreprises, et il peut être utilisé entièrement gratuitement en fonction de la capacité et de la période d'utilisation.
Les images enregistrées dans Heroku sont conçues pour être réinitialisées toutes les 24 heures. En enregistrant l'image sur un serveur externe, vous pouvez empêcher le phénomène de disparition de l'image, donc cette fois nous utiliserons AWS comme serveur externe.
L'un des services AWS, vous pouvez utiliser gratuitement jusqu'à 5 Go de stockage pendant 12 mois, et vous pouvez enregistrer des images, etc.
Nous partirons du principe que vous vous êtes déjà inscrit auprès d'AWS. (Si vous n'êtes pas enregistré, veuillez rechercher sur AWS et en enregistrer un nouveau.)
IAM est l'un des services AWS. Un compte créé sur AWS devient un utilisateur root avec tous les privilèges, et il y a un risque qu'il soit mal utilisé si des informations sont divulguées. Par conséquent, créez un utilisateur avec des privilèges limités et laissez cet utilisateur faire le travail normal. IAM a la capacité de créer des utilisateurs avec ces privilèges limités.
Les utilisateurs créés par IAM sont appelés utilisateurs IAM. Tout d'abord, recherchez IAM avec la recherche de services AWS et accédez à la page IAM. Dans Utilisateurs dans la barre latérale, cliquez sur Ajouter un utilisateur. Entrez ensuite n'importe quel nom d'utilisateur, cochez Accès par programmation et cliquez sur «Étapes suivantes». Sélectionnez Attacher directement la politique existante, entrez amazones3 dans le filtre de politique, cochez «AmazonS3FullAccess» et cliquez sur «Étape suivante». Ajoutez des balises uniquement à ceux qui le souhaitent et cliquez sur «Étapes suivantes». Un écran de confirmation des paramètres apparaîtra. S'il n'y a pas de problème, cliquez sur "Créer un utilisateur". N'oubliez pas de télécharger le ".csv" qui apparaît à ce moment. (À utiliser plus tard.)
Parmi les utilisateurs IAM sur AWS créés ci-dessus, si vous cliquez sur l'onglet Informations d'identification, vous trouverez le champ de mot de passe sur la console. Sur la page qui apparaît après avoir cliqué sur Gérer ici, activez l'accès à la console et sélectionnez et appliquez un mot de passe généré automatiquement pour les paramètres de mot de passe. Cela générera un mot de passe. N'oubliez pas de télécharger le ".csv" qui apparaît à ce moment. (À utiliser plus tard.)
L'endroit où les données sont réellement stockées dans S3 est appelé un compartiment. Après vous être connecté à AWS, lorsque vous passez à la page S3 par recherche de service, le mot compartiment apparaît. Il y a un bouton appelé "Créer un bucket" dans l'élément "Bucket" dans la barre latérale, alors cliquez sur ce bouton.
Pour accéder à l'écran de saisie du nom du compartiment et de la région, entrez le nom du compartiment auquel vous avez pensé.
Région signifie région, mais ici, elle représente l'emplacement du serveur. Si vous êtes japonais, vous pouvez choisir Asie-Pacifique (Tokyo).
Si vous souhaitez définir des options, définissez-les ici. Cliquez sur Suivant lorsque vous avez terminé.
Par défaut, "Bloquer tout accès public" est coché. Si vous décochez cette case, vous pouvez définir vos préférences pour l'accès public. Cliquez sur Suivant lorsque vous avez terminé.
La page de confirmation affichera une liste des paramètres que vous avez définis jusqu'à présent, donc si vous êtes satisfait, cliquez sur "Créer un compartiment".
La politique de compartiment est un mécanisme permettant de décider quel type d'accès est autorisé à enregistrer dans S3 et à lire les données. Cette fois, autorisez l'accès à partir de l'utilisateur IAM créé précédemment.
Tout d'abord, copiez l'ARN de l'utilisateur IAM et notez-le quelque part.
Dans le compartiment que vous avez créé, cliquez sur Autorisations, cliquez sur Stratégie de compartiment et écrivez ce qui suit:
{
"Version": "2012-10-17",
"Id": "Policy1544152951996",
"Statement": [
{
"Sid": "Stmt1544152948221",
"Effect": "Allow",
"Principal": {
"AWS": "ARN de l'utilisateur IAM copié"
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::Nom du godet"
}
]
}
Enregistrez-le et vous avez terminé.
Installez un gem appelé aws-sdk-sm pour utiliser S3 avec ruby.
Gemfile
Ajoutez ce qui suit en bas
gem "aws-sdk-s3", require: false
Tapez ensuite bundle install dans le terminal.
config/environments/development.rb
config.active_storage.service = :local
La description ci-dessus a été remplacée par la suivante
config.active_storage.service = :amazon
config/storage.yml
Ajoutez le code suivant
amazon:
service: S3
access_key_id: <%= ENV['AWS_ACCESS_KEY_ID'] %>
secret_access_key: <%= ENV['AWS_SECRET_ACCESS_KEY'] %>
region: ap-northeast-1
bucket:Le nom de votre bucket
Terminal
% vim ~/.zshrc
Appuyez sur i et ajoutez ce qui suit
export AWS_ACCESS_KEY_ID="Copiez la valeur de l'ID de clé d'accès du fichier CSV ici"
export AWS_SECRET_ACCESS_KEY="Copiez ici la valeur de la clé d'accès secrète du fichier CSV"
(Le fichier CSV est le fichier téléchargé lors de la création de l'utilisateur IAM.)
:Économisez avec wq
Si vous publiez l'image à partir de l'application dans l'environnement local et confirmez qu'elle est enregistrée dans S3 sans aucun problème, modifiez également la destination d'enregistrement de l'image en S3 dans l'environnement de production.
Faites la même chose que dans l'environnement local.
config/environments/production.rb
config.active_storage.service = :local
La description ci-dessus a été remplacée par la suivante
config.active_storage.service = :amazon
Puisque Heroku est utilisé pour l'environnement de production, définissez les variables d'environnement sur Heroku. Vous pouvez définir des variables d'environnement avec la commande heroku config: set.
Terminal
% heroku config:set AWS_ACCESS_KEY_ID="Copiez la valeur de "Access key ID" dans le fichier CSV ici"
% heroku config:set AWS_SECRET_ACCESS_KEY="Copiez la valeur de "Clé d'accès secrète" dans le fichier CSV ici"
Lors de la vérification si la variable d'environnement a été définie
% heroku config
Terminal
% git push heroku master
Programme du camp technique "Télécharger des images sur AWS"
Nous espérons que cet article aidera les débutants à évaluer.
Recommended Posts