In diesem zusammenfassenden Artikel erfahren Sie, wie Sie eine mit Spring Boot entwickelte Webanwendung für die Google Cloud Platform (GCP) bereitstellen und über einen Browser darauf zugreifen. In der ersten Hälfte der Seite geht es um die Erstellung der Umgebung wie Compute Engine und Cloud SQL, die zum Ausführen der Webanwendung erforderlich ist, und in der zweiten Hälfte um die Entwicklung der Webanwendung.
Umgebung
Lokaler PC
GCP
Referenz
Die Umgebung wurde in der folgenden Reihenfolge erstellt.
Ich hatte Erfahrung mit AWS, aber da GCP ein Anfänger ist, habe ich eine Vergleichstabelle der wichtigsten Dienste erstellt.
Bedienung | GCP | AWS | Verwendung in diesem Artikel |
---|---|---|---|
Computing | Compute Engine | EC2 | Ubuntu, 1 Instanz |
Datenbank | Cloud SQL | RDS | MySQL, 1 Instanz |
Lager | Cloud Storage | S3 | Erstellen Sie 1 Eimer |
Blockspeicher | Persistente Festplatte | EBS | Keine zusätzliche Verwendung |
Netzwerk | Cloud Virtual Network | VPC | Fügen Sie eine Firewall-Regel hinzu |
Lastenausgleicher | Cloud Load Balancing | ELB | Keiner |
CDN | Cloud CDN | CloudFront | Keiner |
Zugangskontrolle | Cloud IAM | IAM | Fügen Sie ein Dienstkonto hinzu |
CLI | Cloud SDK | CLI | Fast nie benutzt |
Cloud SDK> Dokumente> Cloud SDK installieren
Von den in der offiziellen Dokumentation beschriebenen Methoden habe ich die Methode der Verwendung des "versionierten Archivs" verwendet. In diesem Artikel habe ich die browserbasierte GCP-Konsole zum Arbeiten verwendet, daher verwende ich das Cloud SDK nicht sehr häufig.
** Installieren **
Laden Sie die Archivdatei der Windows-Version herunter und extrahieren Sie sie an einen geeigneten Speicherort. Da zum Ausführen von Cloud SDK Python 2.7.x erforderlich ist, installieren Sie es separat oder verwenden Sie die Python-Bundle-Version.
Führen Sie das Installationsskript im extrahierten Verzeichnis aus. Normalerweise fügt das Installationsskript das Verzeichnis bin zum Pfad der Umgebungsvariablen hinzu, aber es scheint, dass es fehlschlägt. Legen Sie es in diesem Fall manuell fest.
> install.bat
Cloud SDK> Dokumentation> Cloud SDK initialisieren
Initialisieren Sie das SDK. Wenn Sie den folgenden Befehl ausführen, wird der Browser gestartet und Sie werden aufgefordert, sich bei Ihrem Google-Konto zu authentifizieren. (Es scheint, dass Sie das Flag --console-only hinzufügen können, um den Genehmigungsfluss auf Konsolenbasis zu starten.)
> gcloud init
Sie können die authentifizierten Kontoinformationen mit dem folgenden Befehl überprüfen. Mit dem Cloud SDK können Sie mehrere Konten verwenden, aber immer ist nur eines aktiv.
> gcloud auth list
Credentialed Accounts
ACTIVE ACCOUNT
* ********.********.********@gmail.com
To set the active account, run:
$ gcloud config set account `ACCOUNT`
Cloud SDK> Dokumentation> SDK-Komponentenverwaltung
Nach der Installation des Cloud SDK können Sie Befehlszeilentools verwenden, die als einige Komponenten bezeichnet werden. Die wichtigsten sind das gcloud-Tool, das GCP ausführt, und das gsutil-Tool, das Cloud Storage ausführt.
Sie können die installierten / deinstallierten Komponenten mit dem folgenden Befehl überprüfen.
> gcloud components list
Your current Cloud SDK version is: 194.0.0
The latest available version is: 194.0.0
+-------------------------------------------------------------------------------------------------------------+
| Components |
+---------------+------------------------------------------------------+--------------------------+-----------+
| Status | Name | ID | Size |
+---------------+------------------------------------------------------+--------------------------+-----------+
| Not Installed | App Engine Go Extensions | app-engine-go | 153.2 MiB |
| Not Installed | Cloud Bigtable Command Line Tool | cbt | 4.2 MiB |
| Not Installed | Cloud Bigtable Emulator | bigtable | 3.7 MiB |
| Not Installed | Cloud Datalab Command Line Tool | datalab | < 1 MiB |
| Not Installed | Cloud Datastore Emulator | cloud-datastore-emulator | 17.9 MiB |
| Not Installed | Cloud Datastore Emulator (Legacy) | gcd-emulator | 38.1 MiB |
| Not Installed | Cloud Pub/Sub Emulator | pubsub-emulator | 33.4 MiB |
| Not Installed | Emulator Reverse Proxy | emulator-reverse-proxy | 14.5 MiB |
| Not Installed | Google Container Registry's Docker credential helper | docker-credential-gcr | 2.4 MiB |
| Not Installed | gcloud Alpha Commands | alpha | < 1 MiB |
| Not Installed | gcloud Beta Commands | beta | < 1 MiB |
| Not Installed | gcloud app Java Extensions | app-engine-java | 118.9 MiB |
| Not Installed | gcloud app PHP Extensions | app-engine-php | 19.1 MiB |
| Not Installed | gcloud app Python Extensions | app-engine-python | 6.2 MiB |
| Not Installed | gcloud app Python Extensions (Extra Libraries) | app-engine-python-extras | 27.8 MiB |
| Not Installed | kubectl | kubectl | 12.3 MiB |
| Installed | BigQuery Command Line Tool | bq | < 1 MiB |
| Installed | Cloud SDK Core Libraries | core | 7.4 MiB |
| Installed | Cloud Storage Command Line Tool | gsutil | 3.4 MiB |
+---------------+------------------------------------------------------+--------------------------+-----------+
To install or remove components at your current SDK version [194.0.0], run:
$ gcloud components install COMPONENT_ID
$ gcloud components remove COMPONENT_ID
To update your SDK installation to the latest version [194.0.0], run:
$ gcloud components update
Wenn eine neue Version des SDK veröffentlicht wurde, können Sie es mit dem folgenden Befehl aktualisieren. Bitte beachten Sie, dass das Update fehlschlägt, wenn sich das aktuelle Verzeichnis im Installationsverzeichnis befindet.
> gcloud components update
Erstellen Sie alle VM-Instanzen (Compute Engine), Datenbanken (Cloud SQL) und Speicher (Cloud Storage), die zum Ausführen der Webanwendung im Projekt erforderlich sind.
Öffnen Sie die GCP-Konsole und erstellen Sie ein neues Projekt.
Notieren Sie sich die Projekt-ID, die beim Erstellen des Projekts ausgegeben wird. Die Projekt-ID finden Sie in den Projektinformationen im Konsolen-Dashboard.
Als Nächstes muss ich die Abrechnung für das Projekt aktivieren, habe sie jedoch verwendet, da ein kostenloser Testplatz verfügbar war.
Stellen Sie die veröffentlichte Projekt-ID so ein, dass sie mit dem Tool gcloud betrieben werden kann.
> gcloud config set project <project id>
Update property [core/project].
Compute Engine> Dokumente> Dienstkonto
Erstellen Sie ein Dienstkonto, um die VM-Instanz auszuführen. Wählen Sie im linken Menü der GCP-Konsole "IAM & Berechtigungen" -> "Dienstkonto" -> "Dienstkonto erstellen".
Das in der Liste angezeigte Konto ist das Standarddienstkonto, das automatisch erstellt wird, wenn Sie Compute Engine verwenden (es wird erstellt, wenn Sie Compute Engine nach dem Erstellen eines Projekts zum ersten Mal im Konsolenmenü öffnen, sodass es je nach Zeitpunkt möglicherweise nicht angezeigt wird. Es kann sein). Sie können dieses Konto verwenden. Da dieses Konto jedoch über eine Vielzahl von Berechtigungen verfügt, erstellen Sie ein dediziertes Konto mit den minimal erforderlichen Berechtigungen.
Klicken Sie auf Dienstkonto erstellen, um zu beginnen.
Klicken Sie auf Rollen, um die folgenden Rollen zuzuweisen:
Eine Rolle ist übrigens eine Sammlung von einer oder mehreren Behörden. Zum Beispiel hat die Rolle von "Storage Object Viewer" oben vier Berechtigungen, wie in der Abbildung gezeigt.
Nach der Erstellung wird es in der Liste angezeigt.
Wenn Sie Ihrem Dienstkonto eine Rolle hinzufügen möchten, öffnen Sie IAM & Administration-> IAM in der GCP-Konsole. Es ist etwas verwirrend, aber klicken Sie auf das Stiftsymbol (beliebig) in Ihrem Dienstkonto.
Das erste auf dieser Seite angezeigte Mitglied ist übrigens das Standardmitglied, das Compute Engine automatisch erstellt.
Compute Engine-Standarddienstkonto Aus historischen Gründen verfügen alle Projekte über ein Standard-Compute Engine-Dienstkonto, das anhand dieser E-Mail identifiziert werden kann. [PROJECT_NUMBER][email protected]
Das zweite Mitglied ist ein spezielles Konto von Google. Dieses Konto wird vom Benutzer niemals verwendet und die Rolle darf nicht geändert oder gelöscht werden.
Google API-Dienstkonto Abgesehen vom Standarddienstkonto verfügt jedes von Compute Engine aktivierte Projekt über ein Google API-Dienstkonto, das anhand dieser E-Mail identifiziert werden kann. [PROJECT_NUMBER]@cloudservices.gserviceaccount.com
Das dritte Mitglied ist mein Google-Konto, das vollen Zugriff auf alle Ressourcen hat, da die Rolle im Besitz ist. Das vierte Mitglied ist das Mitglied zum Ausführen der diesmal hinzugefügten VM-Instanz.
Klicken Sie auf Weitere Rolle hinzufügen. Sie können auch vorhandene Rollen ändern oder löschen.
Erstellen Sie einen Bucket, um die lokal erstellte JAR-Datei abzulegen. Wählen Sie im linken Menü der GCP-Konsole Speicher-> Browser-> Neuen Bucket erstellen.
Klicken Sie auf die Schaltfläche Bucket erstellen, um zu beginnen.
Ich habe Regional als Standardspeicherklasse ausgewählt. Ich dachte, es wäre in Ordnung, "Nearline" oder "Coldline" zu verwenden, da ich die JAR-Datei nur vorübergehend abgelegt habe, aber ich habe sie gestoppt, weil es den Anschein hat, als würde mir eine Gebühr berechnet, wenn ich sie vorzeitig lösche (vor der Mindestaufbewahrungsdauer löschen).
** Merkmale der Speicherklasse **
Es ist ein Merkmal ab März 2018.
Sobald der Bucket erstellt wurde, wird er in der Liste angezeigt.
Laden Sie eine entsprechende Datei hoch, um den Vorgang zu überprüfen.
Es ist auch möglich, die Berechtigungen für jeden Bucket wie in der Abbildung gezeigt zu bearbeiten. Da Sie dem Dienstkonto für die zuvor erstellte VM-Instanz "Storage Object Viewer" und "Storage Object Creator" zugewiesen haben, wird dieses Dienstkonto in den Berechtigungen dieses Buckets angezeigt.
Erstellen Sie eine DB-Instanz (MySQL 5.7) der von der Webanwendung verwendeten Datenbank. Wählen Sie SQL aus dem linken Menü der GCP-Konsole.
Klicken Sie auf die Schaltfläche Instanz erstellen, um zu beginnen.
Wählen Sie MySQL als Datenbankmodul.
Wählen Sie die zweite Generation.
Geben Sie die Instanz-ID und das Kennwort ein. Klicken Sie dann auf die Konfigurationsoption.
Einige Konfigurationen sind durch Hinzufügen eines Einstellungsoptionsflags möglich.
Es scheint, dass das Flag nur für die Elemente gesetzt werden kann, die im Voraus mit der Auswahlformel vorbereitet wurden (zumindest über die GCP-Konsole).
Der Maschinentyp und die Speichereinstellungen sind in der folgenden Abbildung dargestellt. Der ausgewählte Maschinentyp ist der Typ mit der niedrigsten Leistung für die Entwicklung.
Sobald die Instanz erstellt wurde, wird sie in der Liste angezeigt. Notieren Sie sich den auf dem Bildschirm angezeigten "Instanzverbindungsnamen", der später verwendet wird.
Sie müssen "Google Cloud SQL API" aktivieren, um von Ihrer VM-Instanz aus eine Verbindung zu MySQL herzustellen. Diese Abbildung ist bereits mit aktivierter API und wurde zunächst nicht angezeigt. "Google Cloud SQL" wird oben angezeigt, aber ich kann keine Verbindung herstellen, auch wenn dies aktiviert ist. Klicken Sie auf APIs und Dienste aktivieren, um die API zu aktivieren.
Wenn Sie "Google Cloud SQL" in das Suchfeld eingeben und suchen, wird "Google Cloud SQL API" angezeigt.
Klicken Sie auf Aktivieren, um es zu aktivieren.
Erstellen Sie eine VM-Instanz, um Ihre Webanwendung auszuführen. Wählen Sie im linken Menü der GCP-Konsole Compute Engine-> VM Instance aus.
Klicken Sie auf die Schaltfläche Erstellen, um zu beginnen.
Geben Sie die Spezifikationen der VM-Instanz ein, die Sie erstellen möchten.
Geben Sie das Startskript mit zusätzlichen Einstellungen ein
** Inhalt des Startskripts **
Im Startskript können Sie den Initialisierungsprozess beschreiben, den Sie unmittelbar nach dem Start der Instanz ausführen möchten. In diesem Beispiel werden openjdk, mysql-client und google-fluentd installiert. Obwohl auskommentiert, ist es auch möglich, die Metadaten vom Metadatenserver abzurufen und in der Umgebungsvariablen festzulegen.
#! /bin/bash
set -e
set -v
# Talk to the metadata server to get the project id
#export PROJECTID=$(curl -s "http://metadata.google.internal/computeMetadata/v1/project/project-id" -H "Metadata-Flavor: Google")
#export BUCKET=$(curl -s "http://metadata.google.internal/computeMetadata/v1/project/attributes/MY_BUCKET" -H "Metadata-Flavor: Google")
#echo "Project ID: ${PROJECTID} Bucket: ${BUCKET}"
# Install dependencies from apt
sudo apt-get update
sudo apt-get --only-upgrade install -yq google-cloud-sdk
sudo apt-get install -yq openjdk-8-jdk
# Make Java8 the default
sudo update-alternatives --set java /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
# MySQL
sudo apt-get install -yq mysql-client
# Install logging monitor. The monitor will automatically pickup logs sent to syslog.
curl -sSO "https://dl.google.com/cloudagents/install-logging-agent.sh"
sudo bash install-logging-agent.sh
echo "Startup Complete"
Geben Sie "Web-App" für das Netzwerk-Netzwerk-Tag ein. Dieses Tag wird später beim Hinzufügen von Firewall-Regeln verwendet. Klicken Sie abschließend auf die Schaltfläche "Erstellen".
Sobald die VM-Instanz erstellt wurde, wird sie in der Liste angezeigt. Sie können auf diese VM-Instanz zugreifen, indem Sie auf die externe IP zugreifen. Es handelt sich jedoch um eine kurzlebige (temporäre) IP-Adresse. Sie können eine statische IP-Adresse auch separat reservieren und zuweisen.
Wählen Sie im SSH-Pulldown-Menü der Verbindung die Option Show gcloud-Befehle aus.
Die für die Verbindung erforderliche gcloud-Befehlszeile wird angezeigt.
Wenn Sie die in der Abbildung gezeigte Befehlszeile an der Windows-Eingabeaufforderung ausführen, wird die Terminalsoftware automatisch gestartet und stellt eine Verbindung zur VM-Instanz her.
> gcloud compute --project "project-********" ssh --zone "us-east1-b" "web-app-instance-1"
Das Cloud SDK ist bereits auf der VM-Instanz installiert.
$ gcloud components list
Your current Cloud SDK version is: 194.0.0
The latest available version is: 194.0.0
┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ Components │
├───────────────┬──────────────────────────────────────────────────────┬──────────────────────────┬───────────┤
│ Status │ Name │ ID │ Size │
├───────────────┼──────────────────────────────────────────────────────┼──────────────────────────┼───────────┤
│ Not Installed │ App Engine Go Extensions │ app-engine-go │ 151.9 MiB │
│ Not Installed │ Cloud Bigtable Command Line Tool │ cbt │ 4.5 MiB │
│ Not Installed │ Cloud Bigtable Emulator │ bigtable │ 3.7 MiB │
│ Not Installed │ Cloud Datalab Command Line Tool │ datalab │ < 1 MiB │
│ Not Installed │ Cloud Datastore Emulator │ cloud-datastore-emulator │ 17.9 MiB │
│ Not Installed │ Cloud Datastore Emulator (Legacy) │ gcd-emulator │ 38.1 MiB │
│ Not Installed │ Cloud Pub/Sub Emulator │ pubsub-emulator │ 33.4 MiB │
│ Not Installed │ Emulator Reverse Proxy │ emulator-reverse-proxy │ 14.5 MiB │
│ Not Installed │ Google Container Local Builder │ container-builder-local │ 3.8 MiB │
│ Not Installed │ Google Container Registry\'s Docker credential helper│ docker-credential-gcr │ 3.3 MiB │
│ Not Installed │ gcloud app Java Extensions │ app-engine-java │ 118.9 MiB │
│ Not Installed │ gcloud app PHP Extensions │ app-engine-php │ │
│ Not Installed │ gcloud app Python Extensions │ app-engine-python │ 6.2 MiB │
│ Not Installed │ gcloud app Python Extensions (Extra Libraries) │ app-engine-python-extras │ 27.8 MiB │
│ Not Installed │ kubectl │ kubectl │ 12.3 MiB │
│ Installed │ BigQuery Command Line Tool │ bq │ < 1 MiB │
│ Installed │ Cloud SDK Core Libraries │ core │ 7.4 MiB │
│ Installed │ Cloud Storage Command Line Tool │ gsutil │ 3.4 MiB │
│ Installed │ gcloud Alpha Commands │ alpha │ < 1 MiB │
│ Installed │ gcloud Beta Commands │ beta │ < 1 MiB │
└───────────────┴──────────────────────────────────────────────────────┴──────────────────────────┴───────────┘
To install or remove components at your current SDK version [194.0.0], run:
$ gcloud components install COMPONENT_ID
$ gcloud components remove COMPONENT_ID
To update your SDK installation to the latest version [194.0.0], run:
$ gcloud components update
Überprüfen Sie die Java-Version
$ java -version
openjdk version "1.8.0_162"
OpenJDK Runtime Environment (build 1.8.0_162-8u162-b12-1~deb9u1-b12)
OpenJDK 64-Bit Server VM (build 25.162-b12, mixed mode)
Überprüfen Sie die Version von MySQL Client
$ mysql --version
mysql Ver 15.1 Distrib 10.1.26-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
Überprüfen Sie, ob das von IAM und google-fluentd zugewiesene "Protokollschreiben", das vom Startskript installiert wurde, effektiv funktioniert.
$ ps -aux | grep google-fluentd
Schreiben Sie ein Bestätigungsprotokoll. Öffnen Sie "Protokollierung" -> "Protokolle" in der Konsole und überprüfen Sie, ob die folgende Meldung im Protokoll dieser VM-Instanz enthalten ist.
$ logger "test log message"
Cloud SQL> Dokumente> MySQL> MySQL-Client über Compute Engine verbinden
Es gibt verschiedene Möglichkeiten, eine Verbindung von einer Compute Engine-VM-Instanz zu einer Cloud SQL DB-Instanz herzustellen. In diesem Artikel wurde jedoch cloud_sql_proxy verwendet.
Installieren Sie cloud_sql_proxy.
$ wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy
$ chmod +x cloud_sql_proxy
Starten Sie den Proxy am TCP-Socket. Die für Instanzen angegebene Zeichenfolge lautet "Name der Instanzverbindung".
$ ./cloud_sql_proxy -instances=project-********:us-east1:mysql-********-********=tcp:3306 &
[1] 1415
2018/03/28 05:03:00 Listening on 127.0.0.1:3306 for project-********:us-east1:mysql-********-*********
2018/03/28 05:03:00 Ready for new connections
Überprüfen Sie, ob Sie eine Verbindung mit dem MySQL-Client herstellen können.
$ mysql -h 127.0.0.1 -u root -p
Enter password:
2018/03/28 05:03:20 New connection for "project-********:us-east1:mysql-********-*********"
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 178
Server version: 5.7.14-google-log (Google)
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [(none)]>
Erstellen Sie eine Datenbank zur Verwendung in Webanwendungen.
CREATE DATABASE IF NOT EXISTS demo_db
CHARACTER SET = utf8mb4
COLLATE = utf8mb4_general_ci;
CREATE USER IF NOT EXISTS 'demo_user'@'%'
IDENTIFIED BY 'demo_pass'
PASSWORD EXPIRE NEVER;
GRANT ALL ON demo_db.* TO 'demo_user'@'%';
DROP TABLE IF EXISTS memo;
CREATE TABLE IF NOT EXISTS memo (
id BIGINT AUTO_INCREMENT,
title VARCHAR(255) NOT NULL,
description TEXT NOT NULL,
done BOOLEAN NOT NULL DEFAULT FALSE,
updated TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
PRIMARY KEY (id)
)
ENGINE = INNODB,
CHARACTER SET = utf8mb4,
COLLATE utf8mb4_general_ci;
INSERT INTO memo (id, title, description, done, updated) VALUES
(1, 'memo shopping', 'memo1 description', false, '2018-01-04 12:01:00'),
(2, 'memo job', 'memo2 description', false, '2018-01-04 13:02:10'),
(3, 'memo private', 'memo3 description', false, '2018-01-04 14:03:21'),
(4, 'memo job', 'memo4 description', false, '2018-01-04 15:04:32'),
(5, 'memo private', 'memo5 description', false, '2018-01-04 16:05:43'),
(6, 'memo travel', 'memo6 description', false, '2018-01-04 17:06:54'),
(7, 'memo travel', 'memo7 description', false, '2018-01-04 18:07:05'),
(8, 'memo shopping', 'memo8 description', false, '2018-01-04 19:08:16'),
(9, 'memo private', 'memo9 description', false, '2018-01-04 20:09:27'),
(10,'memo hospital', 'memoA description', false, '2018-01-04 21:10:38')
;
Stellen Sie sicher, dass Sie sich mit demo_user anmelden können.
$ mysql -h 127.0.0.1 -D demo_db -u demo_user -p
** Verbinde dich mit gcloud **
Sie können auch eine Verbindung zu einer DB-Instanz mit dem Tool gcloud anstelle des MySQL-Clients herstellen. Die zu diesem Zeitpunkt verwendeten Informationen sind die ID der DB-Instanz und nicht der Name der Instanzverbindung.
> gcloud sql connect <db instance id> -u root
Whitelisting your IP for incoming connection for 5 minutes...done.
Connecting to database with SQL user [root].Enter password: ********
** Verbinde dich mit cloud_sql_proxy **
Cloud SQL> Dokumentation> MySQL> Schnellstart bei Verwendung von Proxy für lokale Tests
Eine Windows-Version von cloud_sql_proxy wird bereitgestellt. Die Verbindungsmethode entspricht der Verbindung von einer VM-Instanz.
> cloud_sql_proxy_x64.exe -instances=project-********:us-east1:mysql-********=tcp:3306
Verwenden Sie das Tool gsutil, um festzustellen, ob die Bucket-Objekte sichtbar sind.
$ gsutil ls gs://<my_bucket_name>
gs://<my_bucket_name>/test.txt
Überprüfen Sie, ob Sie die Datei aus dem Bucket herunterladen können.
$ gsutil cp gs://<my_bucket_name>/test.txt .
Copying gs://<my_bucket_name>/test.txt...
/ [1 files][ 6.0 B/ 6.0 B]
Operation completed over 1 objects/6.0 B.
Überprüfen Sie, ob Sie die Datei in den Bucket hochladen können.
$ echo "test" > test2.xt
$ gsutil test2.txt gs://<my_bucket_name>
Copying file://test2.txt [Content-Type=text/plain]...
/ [1 files][ 6.0 B/ 6.0 B]
Operation completed over 1 objects/6.0 B.
Da die Webanwendung Port 9000 überwacht, fügen Sie eine Regel hinzu, um 9000 zu übergeben. Wählen Sie im linken Menü der GCP-Konsole VPC-Netzwerk-> Firewall-Regeln aus.
Klicken Sie auf Firewall-Regel erstellen, um zu beginnen.
Geben Sie für das Ziel-Tag das Netzwerk-Tag ein, das beim Erstellen der VM-Instanz festgelegt wurde. Durch die Angabe eines Tags wird festgelegt, für was diese Regel gilt.
Das Verfahren zum Ausführen einer Webanwendung, die mit Spring Boot auf einer VM-Instanz entwickelt wurde, ist wie folgt.
Bauen Sie auf einem lokalen PC auf und generieren Sie eine JAR-Datei
> mvn clean package
Laden Sie die generierte JAR-Datei in den Bucket hoch
> gsutil cp .\target\demo-gcp-spring2-0.0.1-SNAPSHOT.jar gs://<my_bucket_name>
Laden Sie die JAR-Datei aus dem Bucket auf die VM-Instanz herunter
$ gsutil cp gs://<my_bucket_name>/demo-gcp-spring2-0.0.1-SNAPSHOT.jar .
Führen Sie die JAR-Datei auf der VM-Instanz aus
$ java -jar demo-gcp-spring2-0.0.1-SNAPSHOT.jar
Zugriff mit einem Browser
http://<Externe IP der VM-Instanz>:9000/<Anwendungs-API>
** JAR-Datei senden **
Compute Engine> Dokumente> Dateien an Instanzen übertragen
Die JAR-Datei wird über einen Bucket an die VM-Instanz gesendet. Es gibt jedoch auch eine Möglichkeit, den Befehl gcloud compute scp zu verwenden.
> gcloud compute scp <local_file_name> <instance_id>:/tmp
Eine REST-API, die mit json eine oder mehrere Daten in der Memotabelle zurückgibt.
/app/memo/{id}
** Antwortbeispiel **
{
"id": 1,
"title": "memo shopping",
"description": "memo1 description",
"done": false,
"updated": "2018-01-04T12:01:00"
}
/app/memo/list?size=3
** Antwortbeispiel **
[
{
"id": 1,
"title": "memo shopping",
"description": "memo1 description",
"done": false,
"updated": "2018-01-04T12:01:00"
},
{
"id": 2,
"title": "memo job",
"description": "memo2 description",
"done": false,
"updated": "2018-01-04T13:02:10"
},
{
"id": 3,
"title": "memo private",
"description": "memo3 description",
"done": false,
"updated": "2018-01-04T14:03:21"
}
]
Cloud Storage JSON API
Cloud-Speicher> Dokumentation> Übersicht über die JSON-API für Google Cloud-Speicher
Abrufen von Bucket-Informationen von einer VM-Instanz mithilfe von Curl. Die API-Authentifizierung verwendet OAuth 2.0.
Beziehen Sie das für die Authentifizierung erforderliche Zugriffstoken. Dieses Token wird vom Dienstkonto der VM-Instanz ausgegeben.
$ gcloud auth list
Credentialed Accounts
ACTIVE ACCOUNT
* compute-engine-web-application@project-********.iam.gserviceaccount.com
To set the active account, run:
$ gcloud config set account `ACCOUNT`
$ gcloud auth print-access-token
<access_token>
Geben Sie das erhaltene Zugriffstoken im Authorization-Header an.
Diese / b / <Bucket> / o
JSON-API gibt eine Liste von Objekten in dem durch \ <Bucket > angegebenen Bucket zurück.
$ curl 'https://www.googleapis.com/storage/v1/b/<bucket>/o' \
-H 'Authorization: Bearer <access_token>' \
-H 'Accept: application/json' \
--compressed
Recommended Posts