Verbindung zu Managed Services herstellen
Sobald der Managed Service bereitgestellt ist, kann von den Codesphere Workspaces aus eine Verbindung dazu aufgebaut werden. Jeder Service listet nicht-sensible Verbindungsdetails auf der jeweiligen Einstellungsseite im Overview-Tab (oder in der details-Eigenschaft im Public-API-Payload) auf. Dieser Leitfaden bietet Beispiele für die Verbindung zu gängigen Services.
Voraussetzungen
Stelle sicher, dass sich der Workspace und der Managed Service im selben Team befinden, damit der Netzwerkzugriff möglich ist.
PostgreSQL
Codesphere bietet einen Standard-PostgreSQL-Service. Die Verbindung kann mit jedem PostgreSQL-kompatiblen Client hergestellt werden, wie zum Beispiel psql oder Node.js-Bibliotheken wie pg.
Verbindungsdetails
Diese Informationen finden sich auf der Service-Details-Seite:
- Host/DSN: Der interne Hostname oder der vollständige Connection String mit unkenntlich gemachtem Passwort.
- Port:
5432(Standard-PostgreSQL-Port). - Benutzername: Während der Einrichtung festgelegt (für den Root-Benutzer
postgresoder den selbst angegebenen benutzerdefinierten Benutzernamen). - Passwort: Das während der Einrichtung für den angegebenen Benutzernamen vergebene Secret.
- Terminal (psql)
- Node.js
Das psql-Kommandozeilenwerkzeug kann direkt aus dem Workspace-Terminal verwendet werden.
# psql installieren
nix-env -iA nixpkgs.postgresql
# Allgemeine Syntax
psql "postgres://<username>@<hostname>:5432/<database>" -W
# Beispiel
psql "postgres://[email protected]:5432/mydb" -W
Verwendung der pg-Bibliothek:
const { Client } = require('pg');
const client = new Client({
});
await client.connect();
const res = await client.query('SELECT $1::text as message', ['Hello Codesphere!']);
console.log(res.rows[0].message); // Hello Codesphere!
await client.end();
Babelfish (SQL-Server-kompatibel)
Babelfish für PostgreSQL ermöglicht es, das T-SQL-Protokoll zu verstehen, wodurch es mit SQL-Server-Clients kompatibel wird.
Verbindungsdetails
- Host/DSN: Der interne Hostname oder der vollständige Connection String mit unkenntlich gemachtem Passwort.
- Port:
1433(Standard-SQL-Server-Port). - Benutzername:
postgres(weitere Benutzer können nach der Bereitstellung angelegt werden). - Passwort: Wie konfiguriert.
- Terminal (tsql)
- Node.js
Für die Verbindung kann tsql (Teil des FreeTDS-Pakets) verwendet werden. Hinweis: tsql muss unter Umständen erst im Workspace installiert werden.
# FreeTDS installieren
nix-env -iA nixpkgs.freetds
# Syntax
tsql -H <hostname> -p 1433 -U <username> -D <database>
# Beispiel
tsql -H 10.0.0.12 -p 1433 -U admin -D myDatabase
Verwendung der mssql-Bibliothek:
const sql = require('mssql');
const config = {
user: 'admin',
password: 'superSecret',
server: '10.0.0.12',
port: 1433,
database: 'myDatabase',
options: {
encrypt: false, // Oft erforderlich für interne Verbindungen
trustServerCertificate: true
}
};
await sql.connect(config);
const result = await sql.query`SELECT 1 as val`;
console.log(result.recordset[0].val);
S3 (Object Storage)
Der S3 Managed Service bietet eine S3-kompatible Object-Storage-API.
Verbindungsdetails
- Endpoint: Die URL des Services (z. B.
http://10.0.0.20:9000). - Access Key: Während der Einrichtung generiert.
- Secret Key: Während der Einrichtung generiert.
- Terminal (mc)
- Node.js
Der MinIO Client (mc) ist ein robustes Werkzeug für die Interaktion mit S3-kompatiblen APIs.
# 1. Installieren
nix-env -iA nixpkgs.minio-client
# 2. Alias konfigurieren
mc alias set my-storage http://10.0.0.20:9000 "$ACCESS_KEY" "$SECRET_KEY"
# 3. Buckets auflisten
mc ls my-storage
# 4. Datei kopieren
mc cp myfile.txt my-storage/my-bucket/
Verwendung des AWS SDK für JavaScript v3 (@aws-sdk/client-s3):
const { S3 } = require("@aws-sdk/client-s3");
const s3 = new S3({
endpoint: "http://10.0.0.20:9000",
region: "us-east-1", // Dummy-Region, vom SDK benötigt
credentials: {
accessKeyId: "YOUR_ACCESS_KEY",
secretAccessKey: "YOUR_SECRET_KEY"
},
forcePathStyle: true, // Entscheidend für benutzerdefinierte S3-Provider
tls: false, // Die initiale Verbindung ist intern oft HTTP
});
// Buckets auflisten
const { Buckets } = await s3.listBuckets({});
console.log(Buckets);