Ich hatte ziemlich viel zu kämpfen, deshalb werde ich es als Memorandum schreiben.
Bitte lesen Sie hier. https://github.com/localstack/localstack https://qiita.com/rio_matsui/items/e0c2c772d4579d00a312
Schreiben Sie vorerst wie folgt in 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
Erklärung unten
SERVICES: s3
Beschreiben Sie den Dienst, den Sie hier verwenden möchten. Wenn Sie mehrere Dienste verwenden möchten, schreiben Sie diese durch Kommas getrennt.
AWS_ACCESS_KEY: 1234
AWS_SECRET_ACCESS_KEY: 12345678
Dies ist angemessen, SECRET ist wütend, wenn es nicht mehr als 8 Zeichen ist
DEFAULT_REGION: ap-northeast-1
Dies ist vorerst auch Ihre Wahl.
DATA_DIR: /data
Das Volume, der Speicherort für die Daten, die beibehalten werden sollen, wird in diesem Verzeichnis erstellt und bereitgestellt.
START_WEB: 0
LocalStack hat so etwas wie einen Verwaltungsbildschirm. Wenn Sie es verwenden möchten, müssen Sie das Image localstack / localstack-full verwenden. Der Verwaltungsbildschirm kann nicht mit localstack / localstack verwendet werden. Wenn ich mir jedoch das Protokoll ansehe, wird beim Versuch, es zu starten, ein Fehler ausgegeben. Deaktivieren Sie es daher.
HOSTNAME_EXTERNAL: localstack
Der Grund ist wahrscheinlich der gleiche wie hier geschrieben. Wenn Sie dies nicht schreiben, können Sie vom Container auf der Rails-Seite nicht darauf zugreifen. https://qiita.com/imunew/items/b74cecb7e12a9b9c4441
INIT_SCRIPTS_PATH: /root/init
Speicherort des Initialisierungsskripts Wenn Sie ein Skript wie das folgende schreiben, wird es beim Start ausgeführt.
cd /root/init
#Da aws local im Container enthalten ist, erstellen Sie damit einen Bucket
awslocal s3 mb s3://test-bucket
Dieses Mal wird das erstellte Skript auf der Containerseite bereitgestellt und ausgeführt.
- ./docker/localstack:/root/init
Hier finden Sie Umgebungsvariablen, die hier nicht geschrieben sind https://github.com/localstack/localstack#configurations
Port
ports:
- 4566:4566
LocalStack akzeptiert den Zugriff mit 4566, stellen Sie also die Portweiterleitung ein Übrigens, wenn Sie mit awscli treffen, geben Sie den Endpunkt wie unten gezeigt an.
aws --endpoint=http://localhost:4566 s3 ls s3://test-bucket --recursive
Wenn Sie sich innerhalb des Containers befinden, ist der lokale Befehl aws enthalten, sodass die Verwendung einfacher ist.
Wenn Sie damit beginnen, sollte Bucket in S3 erstellt werden.
aws --endpoint=http://localhost:4566 s3 ls
2020-11-02 10:12:10 test-bucket
Auf dieser Seite finden Sie die Einstellungen für die Verwendung von S3 mit Active Storage. https://qiita.com/tsubasan1122/items/0171fe04754a760f7e4a
Hier werden nur die Einstellungen beschrieben, die für die Verwendung von LocalStack erforderlich sind.
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
Erklärung unten
service: S3
access_key_id: 1234
secret_access_key: 12345678
region: ap-northeast-1
Dies sollte mit den Einstellungen auf der LocalStack-Seite übereinstimmen
endpoint: http://localstack:4566
force_path_style: true
Stellen Sie ein, dass das Tap-Ziel von aws api auf die Localstack-Seite geändert werden soll. Beim Zugriff auf S3 wird jedoch versucht, mit http: // # {Endpunkt}. # {Bucket-Name} darauf zuzugreifen. Vermeiden Sie dies, indem Sie die Option force_path_style auf true setzen.
Es sollte jetzt auf der LocalStack-Seite gespeichert werden. Überprüfen Sie unten
#Speichern Sie das Bild richtig
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)
#Überprüfen Sie den Schlüssel des S3-Bildes
image.image.attachment.blob.key
"p1fp3sd0mqxscrvcx960nqa7caal"
#Überprüfen Sie, ob das Bild auf der Localstack-Seite gespeichert ist
aws --endpoint=http://localhost:4566 s3 ls s3://gpa-dev-image
2020-11-02 11:59:17 14845 p1fp3sd0mqxscrvcx960nqa7caal #Der gleiche Schlüssel existiert
Ich kann die Datei speichern, aber die Domäne der URL, die beim Versuch angezeigt wird, das Bild im Browser anzuzeigen, lautet http: // localstack: 4566. Dieser Bereich wurde durch die Erstellung einer Methode unterstützt, die eine URL zurückgibt, wie auf der folgenden Seite gezeigt. https://qiita.com/shouta-dev/items/0b9569bf5522cca4cf3c
Recommended Posts