[JAVA] Google Cloud Platform avec Spring Boot 2.0.0

Aperçu

Cet article récapitulatif explique comment déployer une application Web développée à l'aide de Spring Boot sur Google Cloud Platform (GCP) et y accéder à partir d'un navigateur. La première moitié de la page traite de la création de l'environnement tel que Compute Engine et Cloud SQL requis pour exécuter l'application Web, et la seconde moitié du développement de l'application Web.

environnement

PC local

GCP

référence

Environnement

L'environnement a été construit dans l'ordre suivant.

  1. Installez le SDK Cloud sur votre PC local
  2. Créez un projet dans GCP
  3. Créez un compte de service pour l'instance de VM
  4. Créez un bucket dans Cloud Storage
  5. Créez une instance de base de données dans Cloud SQL
  6. Créez une instance de VM sur Compute Engine
  7. Ajouter une règle de pare-feu

Une simple comparaison avec AWS

J'avais de l'expérience avec AWS, mais comme GCP est un débutant, j'ai fait un tableau de comparaison des principaux services.

un service GCP AWS Utiliser dans cet article
L'informatique Compute Engine EC2 Ubuntu, 1 instance
Base de données Cloud SQL RDS MySQL, 1 instance
espace de rangement Cloud Storage S3 Créer 1 bucket
Stockage en bloc Disque persistant EBS Aucune utilisation supplémentaire
réseau Cloud Virtual Network VPC Ajouter une règle de pare-feu
Équilibreur de charge Cloud Load Balancing ELB Aucun
CDN Cloud CDN CloudFront Aucun
Contrôle d'accès Cloud IAM IAM Ajouter un compte de service
CLI Cloud SDK CLI Presque jamais utilisé

Installez le SDK Cloud sur votre PC local

SDK Cloud> Documentation> Installer le SDK Cloud

Parmi les méthodes décrites dans la documentation officielle, j'ai utilisé la méthode «archive versionnée». Dans cet article, j'ai utilisé la console GCP basée sur un navigateur pour fonctionner, je n'utilise donc pas beaucoup le SDK Cloud.

** Installer **

Téléchargez le fichier d'archive de la version Windows et extrayez-le dans un emplacement approprié. Étant donné que python 2.7.x est requis pour exécuter le SDK Cloud, installez-le séparément ou utilisez la version du bundle python.

Exécutez le script d'installation dans le répertoire extrait. Normalement, le script d'installation ajoute le répertoire bin au chemin de la variable d'environnement, mais il semble que cela puisse échouer, alors définissez-le manuellement dans ce cas.

> install.bat

Initialisation du SDK Cloud

SDK Cloud> Documentation> Initialiser le SDK Cloud

Initialisez le SDK. Lorsque vous exécutez la commande suivante, le navigateur sera lancé et il vous sera demandé de vous authentifier avec votre compte Google. (Il semble que vous puissiez ajouter l'indicateur --console-only pour démarrer le flux d'approbation sur une base de console)

> gcloud init

Confirmation des informations de compte authentifiées

Vous pouvez vérifier les informations du compte authentifié avec la commande suivante. Le SDK Cloud vous permet d'utiliser plusieurs comptes, mais un seul est toujours actif.

> gcloud auth list
        Credentialed Accounts
ACTIVE  ACCOUNT
*       ********.********.********@gmail.com

To set the active account, run:
    $ gcloud config set account `ACCOUNT`

Vérification des composants

SDK Cloud> Documentation> Gestion des composants du SDK

Après avoir installé le SDK Cloud, vous pourrez utiliser des outils de ligne de commande appelés certains composants. Les principaux sont l'outil gcloud qui exploite GCP et l'outil gsutil qui exploite Cloud Storage.

Vous pouvez vérifier les composants installés / désinstallés avec la commande suivante.

> 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

Si une nouvelle version du SDK a été publiée, vous pouvez la mettre à jour avec la commande suivante. Veuillez noter que si le répertoire actuel se trouve dans le répertoire d'installation, la mise à jour échouera.

> gcloud components update

Créer un projet

Créez toutes les instances de VM (Compute Engine), la base de données (Cloud SQL) et le stockage (Cloud Storage) nécessaires pour exécuter l'application Web dans le projet.

Ouvrez la console GCP et créez un nouveau projet.

p0.png

Notez l'ID du projet tel qu'il sera émis lors de la création du projet. Vous pouvez trouver l'ID du projet dans les informations du projet sur le tableau de bord de la console.

p1.png

Ensuite, je dois activer la facturation pour le projet, mais je l'ai utilisé car un emplacement d'essai gratuit était disponible.

Définissez l'ID du projet publié afin qu'il puisse être utilisé avec l'outil gcloud.

> gcloud config set project <project id>
Update property [core/project].

Créer un compte de service

Compute Engine> Documents> Compte de service

Créez un compte de service pour exécuter l'instance de VM. Sélectionnez "IAM et autorisations" -> "Compte de service" -> "Créer un compte de service" dans le menu de gauche de la console GCP.

Le compte affiché dans la liste est le compte de service par défaut qui est automatiquement créé lorsque vous commencez à utiliser Compute Engine (il est créé lorsque vous ouvrez Compute Engine pour la première fois dans le menu de la console après la création d'un projet, il peut donc ne pas s'afficher en fonction du moment choisi. C'est possible). Vous pouvez utiliser ce compte, mais comme ce compte dispose d'un large éventail de privilèges, créez un compte dédié avec les privilèges minimum requis.

Cliquez sur Créer un compte de service pour commencer.

sa0.png

Cliquez sur Rôles pour attribuer les rôles suivants:

sa1b.png

À propos, un rôle est un ensemble d'une ou de plusieurs autorités. Par exemple, le rôle de "Storage Object Viewer" ci-dessus a quatre privilèges comme indiqué dans la figure.

pr0.png

Une fois créé, il apparaîtra dans la liste.

sa2.png

Si vous souhaitez ajouter un rôle à votre compte de service, ouvrez IAM et administration-> IAM dans la console GCP. C'est un peu déroutant, mais cliquez sur l'icône en forme de crayon (n'importe laquelle) dans votre compte de service.

Soit dit en passant, le premier membre affiché sur cette page est le membre par défaut que Compute Engine crée automatiquement.

Compte de service par défaut de Compute Engine Pour des raisons historiques, tous les projets disposent d'un compte de service Compute Engine par défaut qui peut être identifié à l'aide de cet e-mail. [PROJECT_NUMBER][email protected]

Le deuxième membre est un compte spécial appartenant à Google. Ce compte n'est jamais utilisé par l'utilisateur et le rôle ne doit pas être modifié ou supprimé.

Compte de service Google API Outre le compte de service par défaut, chaque projet activé par Compute Engine dispose d'un compte de service API Google qui peut être identifié à l'aide de cet e-mail. [PROJECT_NUMBER]@cloudservices.gserviceaccount.com

Le troisième membre est mon compte Google, qui a un accès complet à toutes les ressources en tant que propriétaire du rôle. Le quatrième membre est le membre pour l'exécution de l'instance de VM ajoutée cette fois.

sa3b.png

Cliquez sur Ajouter un autre rôle. Vous pouvez également modifier ou supprimer des rôles existants.

sa4b.png

Créer un bucket dans Cloud Storage

Créez un compartiment pour placer le fichier jar construit localement. Sélectionnez Stockage-> Navigateur-> Créer un bucket dans le menu de gauche de la console GCP.

Cliquez sur le bouton Créer un compartiment pour commencer.

s0.png

J'ai choisi Regional comme classe de stockage par défaut. Je pensais que ce serait correct d'utiliser "Nearline" ou "Coldline" car je n'ai mis le fichier jar que temporairement, mais je l'ai arrêté car il semble que si je le supprime tôt (le supprime avant la période de conservation minimale), je serai facturé.

s1.png

** Caractéristiques de la classe de stockage **

C'est une caractéristique en mars 2018.

Une fois le bucket créé, il apparaîtra dans la liste.

s2.png

Téléchargez un fichier approprié pour vérifier l'opération.

Il est également possible de modifier les autorisations pour chaque compartiment comme indiqué dans la figure. Étant donné que vous avez attribué "Storage Object Viewer" et "Storage Object Creator" au compte de service de l'instance de VM que vous avez créée précédemment, ce compte de service est affiché dans les autorisations de ce compartiment.

s3.png

Créer une instance de base de données dans Cloud SQL

Créez une instance de base de données (MySQL 5.7) de la base de données utilisée par l'application Web. Sélectionnez SQL dans le menu de gauche de la console GCP.

Cliquez sur le bouton Créer une instance pour commencer.

db0.png

Sélectionnez MySQL comme moteur de base de données.

db1.png

Sélectionnez la deuxième génération.

db2.png

Saisissez l'ID d'instance et le mot de passe. Cliquez ensuite sur l'option de configuration.

db3.png

Une certaine configuration est possible en ajoutant un indicateur d'option de réglage.

db31.png

Il semble que l'indicateur ne puisse être défini que pour les éléments préparés à l'avance avec la formule de sélection (au moins à partir de la console GCP).

db31b.png

Le type de machine et les paramètres de stockage sont indiqués dans la figure ci-dessous. Le type de machine sélectionné est le type le moins performant pour le développement.

db32.png

Une fois l'instance créée, elle apparaîtra dans la liste. Notez le "nom de connexion de l'instance" affiché à l'écran car il sera utilisé plus tard.

db4.png

Activer l'API Google Cloud SQL

Vous devez activer "Google Cloud SQL API" pour vous connecter à MySQL à partir de votre instance de VM. Ce chiffre est déjà avec l'API activée et n'a pas été affiché au début. "Google Cloud SQL" s'affiche ci-dessus, mais je ne parviens pas à me connecter même si cette option est activée. Cliquez sur Activer les API et les services pour activer l'API.

a0b.png

Si vous saisissez "Google Cloud SQL" dans le champ de recherche et effectuez une recherche, "Google Cloud SQL API" s'affiche.

a1.png

Cliquez sur Activer pour l'activer.

a3.png

Créer une instance de VM sur Compute Engine

Créez une instance de VM pour exécuter votre application Web. Sélectionnez Compute Engine-> VM Instance dans le menu de gauche de la console GCP.

Cliquez sur le bouton Créer pour commencer.

vm0.png

Entrez les spécifications de l'instance de VM que vous souhaitez créer.

vm1b.png

Entrez le script de démarrage avec des paramètres supplémentaires

vm2.png

** Contenu du script de démarrage **

Dans le script de démarrage, vous pouvez décrire le processus d'initialisation que vous souhaitez exécuter immédiatement après le démarrage de l'instance. Dans cet exemple, openjdk, mysql-client et google-fluentd sont installés. Bien que commenté, il est également possible d'obtenir les métadonnées du serveur de métadonnées et de les définir dans la variable d'environnement.

#! /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"

Entrez "web-app" pour la balise de réseau réseau. Cette balise sera utilisée plus tard lors de l'ajout de règles de pare-feu. Enfin, cliquez sur le bouton "Créer".

vm6.png

Une fois l'instance de VM créée, elle apparaîtra dans la liste. Vous pouvez accéder à cette instance de VM en accédant à l'adresse IP externe. Cependant, il s'agit d'une adresse IP éphémère (temporaire). Vous pouvez également réserver et attribuer une adresse IP statique séparément.

vm3.png

Connectez-vous avec SSH

Sélectionnez Afficher les commandes gcloud dans le menu déroulant SSH de la connexion.

vm4.png

La ligne de commande gcloud requise pour la connexion s'affiche.

vm5b.png

Lorsque vous exécutez la ligne de commande illustrée dans la figure à partir de l'invite Windows, le logiciel du terminal démarre automatiquement et se connecte à l'instance de VM.

> gcloud compute --project "project-********" ssh --zone "us-east1-b" "web-app-instance-1"

Le SDK Cloud est déjà installé sur l'instance de VM.

$ 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

Vérifier la version Java

$ 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)

Vérifiez la version du client MySQL

$ mysql --version
mysql  Ver 15.1 Distrib 10.1.26-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

Vérifier la journalisation

Vérifiez si le "journal d'écriture" attribué par IAM et google-fluentd installé par startup-script fonctionnent correctement.

$ ps -aux | grep google-fluentd

Rédigez un journal de confirmation. Ouvrez "Journalisation" -> "Journaux" dans la console et vérifiez si le message suivant est dans le journal de cette instance de VM.

$ logger "test log message"

Accéder à MySQL depuis une instance de VM

Cloud SQL> Documents> MySQL> Connecter le client MySQL à partir de Compute Engine

Il existe plusieurs façons de se connecter d'une instance de VM Compute Engine à une instance de base de données Cloud SQL, mais cet article a utilisé cloud_sql_proxy.

Installez cloud_sql_proxy.

$ wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy
$ chmod +x cloud_sql_proxy

Démarrez le proxy sur le socket TCP. La chaîne de caractères spécifiée pour les instances est "nom de connexion d'instance".

$ ./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

Vérifiez si vous pouvez vous connecter avec le client MySQL.

$ 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)]>
Base de données de démonstration

Créez une base de données à utiliser dans les applications Web.

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')
;

Assurez-vous que vous pouvez vous connecter avec demo_user.

$ mysql -h 127.0.0.1 -D demo_db -u demo_user -p
Connectez-vous à partir de votre PC local (Windows)

** Connectez-vous en utilisant gcloud **

Vous pouvez également vous connecter à une instance de base de données avec l'outil gcloud au lieu du client MySQL. Les informations utilisées à ce stade sont l'ID de l'instance de base de données, et non le nom de connexion de l'instance.

> 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: ********

** Connectez-vous en utilisant cloud_sql_proxy **

Cloud SQL> Documentation> MySQL> Démarrage rapide lors de l'utilisation du proxy pour les tests locaux

Une version Windows de cloud_sql_proxy est fournie. La méthode de connexion est identique à la connexion à partir d'une instance de VM.

> cloud_sql_proxy_x64.exe -instances=project-********:us-east1:mysql-********=tcp:3306

Accéder au stockage à partir d'une instance de VM

Utilisez l'outil gsutil pour voir si les objets du compartiment sont visibles.

$ gsutil ls gs://<my_bucket_name>
gs://<my_bucket_name>/test.txt

Vérifiez si vous pouvez télécharger le fichier à partir du bucket.

$ 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.

Vérifiez si vous pouvez télécharger le fichier dans le compartiment.

$ 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.

Ajouter une règle de pare-feu

Comme l'application Web écoute sur le port 9000, ajoutez une règle pour passer 9000. Sélectionnez Réseau VPC-> Règles de pare-feu dans le menu de gauche de la console GCP.

Cliquez sur Créer une règle de pare-feu pour commencer.

f0.png

Pour la balise cible, saisissez la balise réseau qui a été définie lors de la création de l'instance de VM. La spécification d'une balise détermine à quoi s'applique cette règle.

f1.png

Application Web exécutée sur GCP

La procédure pour exécuter une application Web développée à l'aide de Spring Boot sur une instance de VM est la suivante.

Construisez sur un PC local et générez un fichier jar

> mvn clean package

Téléchargez le fichier JAR généré dans le bucket

> gsutil cp .\target\demo-gcp-spring2-0.0.1-SNAPSHOT.jar gs://<my_bucket_name>

Téléchargez le fichier jar du bucket vers l'instance de VM

$ gsutil cp gs://<my_bucket_name>/demo-gcp-spring2-0.0.1-SNAPSHOT.jar .

Exécutez le fichier jar sur l'instance de VM

$ java -jar demo-gcp-spring2-0.0.1-SNAPSHOT.jar

Accès avec un navigateur

http://<IP externe de l'instance de VM>:9000/<API d'application>

** Envoyer le fichier jar **

Compute Engine> Documents> Transférer des fichiers vers des instances

Le fichier jar est envoyé à l'instance de VM via un bucket, mais vous pouvez également utiliser la commande gcloud compute scp.

> gcloud compute scp <local_file_name> <instance_id>:/tmp

Spécifications d'application

Une API REST qui renvoie une ou plusieurs données dans la table mémo avec json.

API pour obtenir 1

/app/memo/{id}

** Exemple de réponse **

{
    "id": 1,
    "title": "memo shopping",
    "description": "memo1 description",
    "done": false,
    "updated": "2018-01-04T12:01:00"
}

API pour obtenir plusieurs enregistrements

/app/memo/list?size=3

** Exemple de réponse **

[
    {
        "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"
    }
]

Supplément

Cloud Storage JSON API

Cloud Storage> Documentation> Présentation de l'API JSON Google Cloud Storage

Comment obtenir des informations de compartiment à partir d'une instance de VM à l'aide de curl. L'authentification API utilise OAuth 2.0.

Obtenez le jeton d'accès requis pour l'authentification. Ce jeton est généré par le compte de service de l'instance de VM.

$ 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>

Spécifiez le jeton d'accès obtenu dans l'en-tête d'autorisation. Cette API / b / <bucket> / oJSON renvoie une liste d'objets dans le bucket spécifié par \ <bucket >.

$ curl 'https://www.googleapis.com/storage/v1/b/<bucket>/o' \
  -H 'Authorization: Bearer <access_token>' \
  -H 'Accept: application/json' \
  --compressed

Recommended Posts

Google Cloud Platform avec Spring Boot 2.0.0
Télécharger avec Spring Boot
Créez un serveur Spring Cloud Config en toute sécurité avec Spring Boot 2.0
Générer un code à barres avec Spring Boot
Hello World avec Spring Boot
Implémenter GraphQL avec Spring Boot
Démarrez avec Spring Boot
Bonjour tout le monde avec Spring Boot!
Exécutez LIFF avec Spring Boot
Connexion SNS avec Spring Boot
Téléchargement de fichiers avec Spring Boot
Spring Boot commençant par copie
Spring Boot à partir de Docker
Hello World avec Spring Boot
Définir des cookies avec Spring Boot
Utiliser Spring JDBC avec Spring Boot
Ajouter un module avec Spring Boot
Premiers pas avec Spring Boot
Créer un micro service avec Spring Boot
Envoyer du courrier avec Spring Boot
Utiliser l'authentification de base avec Spring Boot
gRPC sur Spring Boot avec grpc-spring-boot-starter
Créez une application avec Spring Boot 2
Déploiement à chaud avec le développement Spring Boot
Liaison de base de données avec doma2 (Spring boot)
Programmation Spring Boot avec VS Code
Jusqu'à "Hello World" avec Spring Boot
Créer une application d'enquête avec Spring Boot
Obtenez des résultats de validation avec Spring Boot
Utiliser Java 11 avec Google Cloud Functions
Authentification Oauth2 avec Spring Cloud Gateway
[Google Cloud] Premiers pas avec Docker
Créez une application avec Spring Boot
J'ai essayé GraphQL avec Spring Boot
[Java] Intégration LINE avec Spring Boot
À partir de Spring Boot 0. Utilisez Spring CLI
J'ai essayé Flyway avec Spring Boot
La coopération des messages a commencé avec Spring Boot
Traitement lors du démarrage d'une application avec Spring Boot
Envoyez des notifications régulières avec LineNotify + Spring Boot
Effectuer un test de confirmation de transaction avec Spring Boot
HTTPS avec Spring Boot et Let's Encrypt
Démarrez le développement d'applications Web avec Spring Boot
Lancez l'application Nginx + Spring Boot avec docker-compose
J'ai essayé l'initialisation paresseuse avec Spring Boot 2.2.0
Implémenter CRUD avec Spring Boot + Thymeleaf + MySQL
Traitement asynchrone avec Spring Boot en utilisant @Async
Implémenter la fonction de pagination avec Spring Boot + Thymeleaf
(IntelliJ + gradle) Hello World avec Spring Boot
Utiliser le cache avec EhCashe 2.x avec Spring Boot
Test de validation de classe de formulaire avec Spring Boot
Configurer des microservices avec Spring Cloud (4): API Gateway
Exécutez l'application WEB avec Spring Boot + Thymeleaf
Obtenez une authentification BASIC avec Spring Boot + Spring Security
Défi Spring Boot
Forme de botte de printemps
Spring Boot Rappelez-vous
gae + botte à ressort
Créez un site Web avec Spring Boot + Gradle (jdk1.8.x)