Chez Kinsta, nous aidons à soutenir des milliers de sites web de toutes tailles. Une chose les unit tous : la nécessité d’une base de données. Quelle que soit la taille de votre site, votre base de données contient ses informations. C’est pourquoi nous vous permettons de créer et de gérer des bases de données à l’aide de l’API Kinsta.
Bien que vous puissiez gérer vos bases de données à l’aide du tableau de bord MyKinsta, l’API Kinsta vous offre une plus grande flexibilité si vous avez besoin d’une approche programmatique. Elle vous permet de créer, de mettre à jour et de supprimer ces bases de données et de les lire dans une certaine mesure. Cependant, le grand avantage est l’intégration de l’API Kinsta – et, par extension, de votre base de données – à vos outils et flux de travail existants.
Cet article vous montrera comment créer et gérer des bases de données à l’aide de l’API de Kinsta. Il abordera également ses avantages, la manière d’accéder aux points de terminaison et l’intégration de cette approche dans votre flux de travail global. Commençons par les avantages et les capacités.
Comprendre les capacités de l’API Kinsta
L’API Kinsta est le moyen programmatique d’interagir avec votre serveur Kinsta. Nous offrons de nombreux points de terminaison pour couvrir les différentes façons de gérer vos sites, comme travailler avec vos environnements, les thèmes et les plugins WordPress, les métriques d’application, et plus encore.
Cela s’étend également à vos bases de données par le biais d’une architecture CRUD typique :
- En utilisant un seul point de terminaison, vous pouvez créer une nouvelle base de données pour votre site, choisir l’emplacement du serveur et définir les informations d’identification.
- Il existe une méthode pour récupérer toutes les bases de données de votre serveur à l’aide de l’identifiant de l’entreprise. À partir de là, vous pouvez récupérer une base de données spécifique et ses détails à l’aide de son identifiant individuel.
- L’API vous permet de modifier la taille et le nom d’affichage de votre base de données. Cela peut s’avérer utile dans certaines applications de mise à l’échelle des ressources.
- Vous pouvez supprimer une base de données lorsque vous n’en avez plus besoin. Cette opération est simple et n’utilise qu’une seule commande.
Dans l’ensemble, vous pouvez tirer parti de ces points de terminaison et commencer à rationaliser l’ensemble de votre flux de travail de gestion des bases de données. Nous verrons cela plus en détail ultérieurement. Tout d’abord, voyons pourquoi vous devriez utiliser l’API Kinsta pour gérer vos bases de données.
Les avantages de la gestion des bases de données via l’API Kinsta
Bien sûr, nous ne fournirions pas une API dédiée à la gestion de vos bases de données sans qu’elle ne vous offre quelques avantages convaincants par rapport au tableau de bord MyKinsta. Les deux peuvent s’intégrer dans votre flux de travail, mais l’API Kinsta offre quelques moyens spécifiques de débloquer de nouvelles possibilités.
1. Vous pouvez rationaliser vos processus de gestion actuels
L’un des principaux avantages de la gestion de vos bases de données via l’API Kinsta est la réduction des étapes que vous suivez habituellement. En utilisant le tableau de bord MyKinsta, vous avez déjà un flux de travail efficace. Par exemple, chaque site WordPress vous donne accès à la base de données de votre site via phpMyAdmin:
Vous disposez ainsi d’une interface familière pour effectuer des modifications. Pour les applications, l’écran Bases de données dans MyKinsta sera votre port d’attache :
Cependant, vous pouvez sauter toutes ces étapes en utilisant nos points de terminaison API. Cela devrait être facile à incorporer si vous utilisez d’autres services programmatiques pour votre site. Le temps que vous gagnerez en automatisant ce flux de travail pourrait également avoir un impact positif sur votre efficacité.
2. Les possibilités d’automatisation sont presque illimitées
Comme avec tous les points de terminaison de l’API Kinsta, vous pouvez automatiser des tâches qui nécessiteraient autrement un accès au tableau de bord MyKinsta. Nous reviendrons plus tard sur les possibilités d’intégration. En bref, si vous utilisez déjà des outils et des scripts existants, l’automatisation de la gestion de votre base de données peut faire partie de ce processus.
Par exemple, vous voudrez peut-être intégrer la possibilité de créer une nouvelle base de données chaque fois que vous approvisionnez un nouveau site. Vous pouvez définir des critères prédéfinis dans votre code, vos outils et vos scripts pour supprimer automatiquement les bases de données. Les flux de travail qui intègrent la mise à l’échelle de vos ressources pourraient également en bénéficier, étant donné que vous pouvez mettre à jour le type de ressource d’une base de données.
Comme pour la rationalisation ciblée, l’automatisation de votre flux de travail aura un impact supplémentaire sur le temps (et l’argent) que vous consacrez à la gestion des bases de données.
3. Intégration potentielle avec d’autres outils et plateformes
Les API, en général, offrent un excellent moyen d’intégrer presque tous les autres outils et plateformes disponibles, même lorsqu’il n’existe pas d’API. Vous pouvez utiliser des services tels que Zapier ou If This Then That (IFTTT) pour connecter des outils entre eux, dont votre serveur Kinsta pourrait faire partie.
En fait, de nombreuses configurations nécessitent que vous fassiez appel à d’autres services pour une expérience fluide. Pensez à vos pipelines d’intégration et de déploiement continus (CI/CD) qui utilisent TeamCity, Travis CI ou Buddy. L’API Kinsta, en tant qu’élément de votre chaîne d’outils, peut vous aider à créer un flux de travail cohérent du développement à la production.
Dans les prochaines sections, nous allons couvrir les différentes méthodes et requêtes que l’API Kinsta met à votre disposition. À la fin de l’article, vous apprendrez comment utiliser les informations que vous récupérez dans quelques scénarios d’exemple.
Ce dont vous avez besoin pour gérer vos bases de données avec l’API Kinsta
L’utilisation du point de terminaison databases
est un processus simple, tout comme l’utilisation de tout autre point de terminaison de l’API Kinsta. Nous ne nous pencherons pas ici sur toutes les subtilités de chaque action ou flux de travail, mais nous en discuterons plus tard.
Pour accéder au point de terminaison databases
, vous devez disposer de certaines informations, dont la principale est un jeton API valide. La génération de ce jeton vous permettra d’accéder à l’API, ce qui est vrai pour tous les points de terminaison. En fait, nous disposons d’un point de terminaison d’authentification à cette fin.
Vous pouvez créer une clé API sur l’écran Réglages de l’entreprise > Clés API dans le tableau de bord MyKinsta.
Pour accéder à la plupart des points de terminaison, vous aurez également besoin de l’identifiant de votre entreprise. Il s’agit essentiellement de l’identifiant du serveur, et vous pouvez le trouver dans la barre d’outils de votre navigateur lorsque vous êtes connecté au tableau de bord MyKinsta :
Le flux de travail typique lors de l’utilisation d’un point de terminaison de l’API Kinsta consiste à valider votre clé API, à récupérer les données associées à l’identifiant de l’entreprise, à récupérer les données associées à l’identifiant du site et à traiter ces données. Cette dernière étape nécessite que vous fournissiez les bons paramètres pour la requête.
Bien entendu, ces paramètres varieront en fonction de ce que vous souhaitez obtenir. Nous aborderons ces paramètres au fur et à mesure de la gestion de vos bases de données.
Création d’une nouvelle base de données à l’aide de l’API Kinsta
La création d’une base de données est la requête la plus complexe de toutes celles que nous abordons ici, mais elle n’en reste pas moins facile à mettre en œuvre. Pour cela, vous devez envoyer une requête POST
, et huit attributs sont nécessaires pour que cette requête soit valide. Il s’agit de l’emplacement du serveur, du type de ressource, du type de base de données et des informations d’identification de la base de données.
Une fois ces paramètres définis, vous pouvez valider votre clé API et créer votre base de données :
import fetch from 'node-fetch';
async function run() {
const resp = await fetch(
`https://api.kinsta.com/v2/databases`,
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
Authorization: 'Bearer <YOUR_TOKEN_HERE>'
},
body: JSON.stringify({
company_id: '54fb80af-576c-4fdc-ba4f-b596c83f15a1',
location: 'us-central1',
resource_type: 'db1',
display_name: 'test-db',
db_name: 'test-db',
db_password: 'example-password',
db_user: 'example-user',
type: 'postgresql',
version: '15'
})
}
);
const data = await resp.json();
console.log(data);
}
run();
Pour chaque point de terminaison, vous recevrez les données demandées au format JSON :
{
"database": {
"id": "54fb80af-576c-4fdc-ba4f-b596c83f15a1"
}
}
Notez que si la requête échoue, vous verrez cette information dans le JSON de retour :
{
"message": "No or invalid API key provided to the request",
"status": 401,
"data": null
}
Comme pour chaque requête que vous effectuez, vous devez veiller à la sécurité des données que vous envoyez et recevez. La validation de votre clé API est un moyen d’y parvenir, mais il existe d’autres facteurs importants :
- N’introduisez pas d’informations en dur dans vos requêtes, telles que des identifiants ou votre clé d’API. Utilisez plutôt des variables d’environnement pour rendre votre code presque « anonyme ».
- Vérifiez régulièrement les mises à jour de l’API Kinsta, car les détails des points de terminaison peuvent changer ou des méthodes de protection des données plus modernes peuvent être disponibles.
- Le débogage de vos requêtes API peut vous faire perdre beaucoup de temps, en particulier dans le cas d’intégrations complexes. C’est là que les codes de réponse renvoyés par votre requête, vos journaux d’erreurs Kinsta et les outils et techniques de débogage typiques vous seront utiles.
La bonne nouvelle, c’est que la plupart de ces informations peuvent être transférées à d’autres actions liées au point de terminaison databases
. Dans la section suivante, nous verrons comment les supprimer.
Récupération et suppression des bases de données existantes
La récupération et la suppression de vos bases de données ne prennent que quelques secondes et réutilisent une grande partie du code que vous avez déjà mis en œuvre lors de la création de ces bases de données. La requête GET
nécessite simplement que vous spécifiiez la méthode dans votre code :
import fetch from 'node-fetch';
async function run() {
const query = new URLSearchParams({
internal: 'true',
external: 'true'
}).toString();
const id = 'YOUR_id_PARAMETER';
const resp = await fetch(
`https://api.kinsta.com/v2/databases/${id}?${query}`,
{
method: 'GET',
headers: {
Authorization: 'Bearer <YOUR_TOKEN_HERE>'
}
}
);
const data = await resp.text();
console.log(data);
}
run();
Vous obtiendrez une liste d’informations relatives à vos bases de données, notamment les limites de votre processeur et de votre mémoire, le nom d’hôte interne et le port, et bien d’autres choses encore :
{
"database": {
"id": "54fb80af-576c-4fdc-ba4f-b596c83f15a1",
"name": "unique-db-name",
"display_name": "firstsite-db",
"status": "ready",
"created_at": 1668697088806,
"memory_limit": 250,
"cpu_limit": 250,
"storage_size": 1000,
"type": "postgresql",
"version": "14",
"cluster": {
"id": "54fb80af-576c-4fdc-ba4f-b596c83f15a1",
"location": "europe-west3",
"display_name": "Frankfurt, Germany Europe"
},
"resource_type_name": "db1",
"internal_hostname": "some-name.dns.svc.cluster.local",
"internal_port": "5432",
"internal_connections": [
{
"id": "54fb80af-576c-4fdc-ba4f-b596c83f15a1",
"type": "appResource"
}
],
"data": {
"db_name": "firstsite-db",
"db_password": "password",
"db_root_password": "password",
"db_user": "username"
},
"external_connection_string": "postgresql://username:password@localhost:31866/firstsite-db",
"external_hostname": "firstsite-db-postgresql.external.kinsta.app",
"external_port": "31866"
}
}
La suppression d’une base de données est tout aussi simple. Vous envoyez la méthode DELETE
et l’ID au point de terminaison databases
:
…
const resp = await fetch(
`https://api.kinsta.com/v2/databases/${id}`,
{
method: 'DELETE',
headers: {
…
Cependant, contrairement au tableau de bord MyKinsta, vous devez faire preuve de prudence lorsque vous supprimez des bases de données avec l’API. Ici, vous n’obtiendrez pas de message de confirmation ou de « tampon » Vous pouvez donc intégrer une gestion des erreurs ou des vérifications pour vous assurer que vous souhaitez réellement supprimer la base de données pour de bon.
Comment l’API Kinsta vous aide à mettre à jour les bases de données
Nous gardons les mises à jour de bases de données pour la fin car, bien qu’elles semblent simples et limitées à première vue, cette requête peut également offrir des opportunités uniques.
En apparence, les mises à jour offrent peu de possibilités de changement. Les seuls paramètres modifiables sont le nom de la base de données et son type de ressource :
{
"resource_type": "db1",
"display_name": "test-db"
}
C’est là que les mises à jour de bases de données peuvent s’intégrer dans l’ensemble de votre processus de développement ou de gestion des systèmes. Par exemple, la base de données peut passer d’un état à l’autre et d’un environnement à l’autre. À différents moments, vous pouvez effectuer une mise à jour qui renomme la base de données en fonction des conventions du projet, de l’état d’avancement d’un sprint ou de tout ce que vous souhaitez.
Le type de ressource est un moyen simple de modifier la taille et les performances de votre base de données à la volée. Cela vous permet d’adapter cette base de données aux variables changeantes du projet ou même à la demande du public pour votre site. Nous allons maintenant en parler plus en détail.
L’importance de resource_type dans la mise à l’échelle verticale
L’évolutivité est un élément essentiel d’un site web moderne, et il devrait en être de même pour le vôtre. C’est pourquoi l’API Kinsta propose le paramètre resource_type. Lorsqu’il s’agit de mise à l’échelle verticale, ce paramètre pourrait être au premier plan de votre stratégie. Mieux encore, il suffit d’une ligne pour modifier les ressources de votre base de données afin d’en allouer plus ou moins :
import fetch from 'node-fetch';
async function run() {
const id = 'YOUR_id_PARAMETER';
const resp = await fetch(
`https://api.kinsta.com/v2/databases/${id}`,
{
method: 'PUT',
headers: {
'Content-Type': 'application/json',
Authorization: 'Bearer <YOUR_TOKEN_HERE>'
},
body: JSON.stringify({
resource_type: 'db1',
display_name: 'test-db'
})
}
);
const data = await resp.json();
console.log(data);
}
run();
Vous avez le choix entre huit types différents et, en général, plus le nombre est élevé, plus les ressources allouées sont importantes – ainsi, db8
vous donnera plus que db1
.
Vous disposez ainsi d’un moyen très rapide d’augmenter ou de réduire les ressources, en fonction de vos besoins actuels.
Par exemple, si vous avez plus de trafic ou si vous devez effectuer des tâches de base de données plus intensives, vous pouvez augmenter vos ressources à un niveau supérieur.
Intégration avec d’autres points de terminaison de l’API Kinsta
Par extension, vous pouvez utiliser le point de terminaison databases avec d’autres points de terminaison de l’API Kinsta pour construire un système de gestion de base de données complet ou incorporer cette gestion dans vos autres flux de travail.
L’opportunité de mise à l’échelle verticale présentée dans la dernière section constitue une excellente approche. Cependant, il y en a beaucoup d’autres en fonction des besoins de votre site :
- Vous pouvez créer une base de données en même temps qu’une nouvelle application. Celle-ci peut contenir toutes les informations pertinentes, telles que l’emplacement du serveur et les informations d’identification.
- Dans le cadre de votre processus de déploiement, vous pouvez mettre à jour le type de ressource de la base de données en fonction de la charge que vous prévoyez de recevoir.
- En demandant vos fichiers journaux et les mesures de votre site, vous pouvez créer une méthode automatisée et programmatique de mise à l’échelle des ressources de la base de données de votre site sans que vous n’ayez à intervenir.
Cela soulève un élément crucial de votre flux de travail de gestion de base de données, à savoir l’utilisation des informations que vous demandez tout au long du processus. Nous allons explorer cet aspect dans l’avant-dernière section.
Utilisation des informations de base de données de l’API Kinsta dans votre flux de travail
De nombreux projets comportent plusieurs étapes, telles que le développement initial, le staging, les tests et la production. La disponibilité de l’API Kinsta peut vous aider à gérer de nombreuses tâches en association avec vos autres outils. La création et la gestion de bases de données peuvent être un rouage essentiel de ce processus.
Par exemple, lorsque vous créez une nouvelle branche de fonctionnalité dans le système de contrôle de version (VCS) de votre choix, vous pouvez déclencher un processus de création d’une nouvelle base de données à l’aide de l’API Kinsta.
Voici un exemple simplifié de la manière dont vous pouvez déclencher la création d’une base de données à l’aide de l’API :
import fetch from 'node-fetch';
async function createDatabase(databaseName) {
const apiToken = 'your_api_token';
const companyId = 'your_company_id';
const response = await fetch('https://api.kinsta.com/v2/databases', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${apiToken}`
},
body: JSON.stringify({
company_id: companyId,
location: 'us-central1',
resource_type: 'db1',
display_name: databaseName,
db_name: databaseName,
db_password: 'example-password',
db_user: 'example-user',
type: 'postgresql',
version: '15'
})
});
if (response.ok) {
const data = await response.json();
console.log(`Database '${databaseName}' created successfully.`);
console.log('Database details:', data);
} else {
console.error(`Error creating database '${databaseName}':`, response.statusText);
}
}
// Usage example
const featureBranchName = 'feature/new-blog-section';
const databaseName = `db_${featureBranchName}`;
createDatabase(databaseName);
Voici un exemple typique à usages multiples dans lequel nous définissons une fonction pour créer une base de données qui fait une demande POST
au point de terminaison databases
. Notre exemple d’utilisation montre le processus : une variable contient le chemin de la branche de la fonctionnalité Git, que nous utilisons ensuite comme paramètre pour databaseName
. À partir de là, nous pouvons déclencher le processus de création en fonction du nom dynamique de la base de données.
Grâce à cette approche de l’automatisation de la création de bases de données, vous pouvez vous assurer que les étapes ou les fonctionnalités disposent d’une base de données dédiée. Cela peut faciliter la gestion du flux de développement, vous donner une base de travail plus propre et réduire le risque de conflits.
Intégration des informations de la base de données dans les outils de collaboration
Un autre cas d’utilisation courant et utile pour la gestion de vos bases de données avec l’API Kinsta consiste à fournir des mises à jour de statut à vos outils de collaboration, tels que Slack ou Microsoft Teams. Par exemple, vous pouvez gérer un canal distinct qui ne publie que des états de base de données.
Vous pouvez ainsi tenir votre équipe au courant de l’état et de la disponibilité des bases de données. Non seulement cela favorise une meilleure communication et une meilleure collaboration, mais cela peut également accroître votre proactivité face aux erreurs et aux problèmes.
Ce type d’intégration présente de nombreux autres avantages :
- Améliorer la visibilité. Vous pouvez informer tout le monde de l’état de vos bases de données. Ainsi, tout le monde est au courant des problèmes potentiels ou des activités de maintenance à venir.
- Améliorer la réactivité. Vous pouvez également informer les membres de l’équipe concernés lorsqu’une base de données nécessite une attention particulière. C’est le catalyseur direct de la proactivité dont nous avons parlé.
- Faciliter la discussion. La plateforme centralisée vous permet, à vous et à votre équipe, de discuter de sujets liés à la base de données en question. Cet effort de collaboration peut favoriser le dépannage, le partage des connaissances et bien d’autres choses encore.
- Rationaliser la communication. Grâce au flux automatisé de messages, vous n’avez plus besoin de notifications et de mises à jour manuelles.
Lier l’API Kinsta à un outil d’authentification de point de terminaison semble complexe sur le papier, mais en pratique, cela ne prend pas beaucoup de temps :
import fetch from 'node-fetch';
const { IncomingWebhook } = require('@slack/webhook');
// Set up the Slack webhook URL (using an environment variable)
const slackWebhookUrl = process.env.SLACK_WEBHOOK_URL;
const webhook = new IncomingWebhook(slackWebhookUrl);
async function sendSlackNotification(message) {
try {
await webhook.send({
text: message
});
console.log('Slack notification sent successfully.');
} catch (error) {
console.error('Error sending Slack notification:', error);
}
}
async function getDatabases() {
const apiToken = process.env.KINSTA_API_TOKEN;
const companyId = process.env.KINSTA_COMPANY_ID;
const query = new URLSearchParams({
company: companyId,
limit: '10',
offset: '3'
}).toString();
try {
const response = await fetch(`https://api.kinsta.com/v2/databases?${query}`, {
method: 'GET',
headers: {
'Authorization': `Bearer ${apiToken}`
}
});
if (response.ok) {
const data = await response.json();
console.log('Retrieved databases:', data);
// Check the status of each database and send Slack notifications if necessary
data.forEach(database => {
if (database.status !== 'ready') {
const message = `Database '${database.display_name}' is in status '${database.status}'. Please check.`;
sendSlackNotification(message);
}
});
} else {
console.error('Error retrieving databases:', response.statusText);
}
} catch (error) {
console.error('Error retrieving databases:', error);
}
}
// Usage example
getDatabases();
Dans cet extrait de code, nous définissons une fonction qui utilise un webhook Slack pour envoyer des messages à un canal Slack. Ensuite, nous lançons une requête GET
pour récupérer une liste de bases de données associées à notre serveur. Pour les bases de données dont l’état n’est pas « ready », nous envoyons une notification au canal Slack.
Il ne s’agit là que de deux façons rapides d’intégrer l’API Kinsta à d’autres plateformes pour gérer vos bases de données. Quoi qu’il en soit, vous pouvez naviguer vers de meilleurs résultats de projet et une plus grande efficacité tout en développant un meilleur service global.
Résumé
La gestion de vos bases de données est un aspect tellement vital de la gestion d’un projet ou d’une application WordPress que nous vous donnons le point de terminaison databases dans l’API Kinsta. Vous pouvez l’utiliser pour rationaliser votre processus de gestion de base de données et automatiser des tâches spécifiques pour lesquelles vous auriez autrement besoin du tableau de bord MyKinsta.
Bien que les méthodes pour réaliser ces tâches soient simples, vous avez beaucoup de contrôle au bout des doigts. Par exemple, vous pouvez simplement approvisionner ou supprimer de nouvelles bases de données si vous le souhaitez. Il existe de nombreuses façons créatives d’utiliser ces requêtes, telles que la mise à l’échelle des ressources, l’entretien général des bases de données, et bien plus encore.
Nous aimerions savoir ce que vous pensez de la création et de la gestion de bases de données à l’aide de l’API Kinsta. Partagez vos expériences et vos idées dans la section des commentaires ci-dessous !
Laisser un commentaire