J'ai eu beaucoup de mal, alors je vais l'écrire sous forme de mémorandum.
Veuillez lire ici. https://github.com/localstack/localstack https://qiita.com/rio_matsui/items/e0c2c772d4579d00a312
Pour le moment, écrivez comme suit dans docker-compose.yml
localstack:
image: localstack/localstack:0.12.1
environment:
SERVICES: s3
AWS_ACCESS_KEY: 1234
AWS_SECRET_ACCESS_KEY: 12345678
DEFAULT_REGION: ap-northeast-1
DATA_DIR: /data
START_WEB: 0
HOSTNAME_EXTERNAL: localstack
INIT_SCRIPTS_PATH: /root/init
volumes:
- localstack-data:/data
- ./docker/localstack:/root/init
ports:
- 4566:4566
volumes:
localstack-data:
driver: local
Explication ci-dessous
SERVICES: s3
Décrivez ici le service que vous souhaitez utiliser, et si vous souhaitez en utiliser plusieurs, écrivez-les séparés par des virgules.
AWS_ACCESS_KEY: 1234
AWS_SECRET_ACCESS_KEY: 12345678
Ceci est approprié, SECRET est en colère s'il ne contient pas plus de 8 caractères
DEFAULT_REGION: ap-northeast-1
Pour le moment, c'est aussi votre choix.
DATA_DIR: /data
Volume, l'emplacement de stockage des données à conserver, est créé et monté dans ce répertoire.
START_WEB: 0
LocalStack a quelque chose comme un écran de gestion, Si vous souhaitez l'utiliser, vous devez utiliser l'image localstack / localstack-full. S'il s'agit de localstack / localstack, l'écran de gestion ne peut pas être utilisé, mais lorsque je regarde le journal, je lance une erreur en essayant de le démarrer, alors désactivez-le.
HOSTNAME_EXTERNAL: localstack
La raison est probablement la même que celle écrite ici. Si vous n'écrivez pas ceci, vous ne pourrez pas accéder à partir du conteneur côté Rails. https://qiita.com/imunew/items/b74cecb7e12a9b9c4441
INIT_SCRIPTS_PATH: /root/init
Emplacement du script d'initialisation Si vous écrivez un script comme celui ci-dessous ici, il sera exécuté au démarrage.
cd /root/init
#Comme aws local est inclus dans le conteneur, créez un Bucket en utilisant
awslocal s3 mb s3://test-bucket
Cette fois, le script créé est monté côté conteneur et exécuté.
- ./docker/localstack:/root/init
Voir ici pour les variables d'environnement non écrites ici https://github.com/localstack/localstack#configurations
Port
ports:
- 4566:4566
LocalStack accepte l'accès avec 4566, alors définissez la redirection de port À propos, lorsque vous utilisez awscli, spécifiez Endpoint comme indiqué ci-dessous.
aws --endpoint=http://localhost:4566 s3 ls s3://test-bucket --recursive
Si vous venez de l'intérieur du conteneur, la commande aws local est incluse, il est donc plus facile de l'utiliser.
Lorsque vous le démarrez avec cela, Bucket doit être créé dans S3.
aws --endpoint=http://localhost:4566 s3 ls
2020-11-02 10:12:10 test-bucket
Consultez cette page pour les paramètres d'utilisation de S3 avec Active Storage. https://qiita.com/tsubasan1122/items/0171fe04754a760f7e4a
Seuls les paramètres requis pour utiliser LocalStack sont décrits ici.
storage.yml
localstack:
service: S3
access_key_id: 1234
secret_access_key: 12345678
region: ap-northeast-1
endpoint: http://localstack:4566
force_path_style: true
bucket: test-bucket
Explication ci-dessous
service: S3
access_key_id: 1234
secret_access_key: 12345678
region: ap-northeast-1
Cela doit correspondre aux paramètres du côté LocalStack
endpoint: http://localstack:4566
force_path_style: true
Réglez pour changer la destination de prise de l'api aws vers le côté de la pile locale. Cependant, tel quel, lors de l'accès à S3, il essaiera d'accéder avec http: // # {endpoint}. # {Bucket name}. Évitez en définissant l'option force_path_style sur true.
Il devrait maintenant être enregistré du côté LocalStack. Vérifiez ci-dessous
#Enregistrez correctement l'image
file = "1.jpg "
content_type = 'image/jpg'
image = Image.first
image.image.attach(io: File.open(file), filename: File.basename(file), content_type: content_type)
#Vérifiez la clé de l'image S3
image.image.attachment.blob.key
"p1fp3sd0mqxscrvcx960nqa7caal"
#Vérifiez si l'image est enregistrée du côté de la pile locale
aws --endpoint=http://localhost:4566 s3 ls s3://gpa-dev-image
2020-11-02 11:59:17 14845 p1fp3sd0mqxscrvcx960nqa7caal #La même clé existe
Je peux enregistrer le fichier, mais le domaine de l'URL obtenu lorsque j'essaie d'afficher l'image sur le navigateur est http: // localstack: 4566. Cette zone a été prise en charge par la création d'une méthode qui renvoie une URL comme indiqué dans la page ci-dessous. https://qiita.com/shouta-dev/items/0b9569bf5522cca4cf3c
Recommended Posts