Bereitstellung von
Vonage Cloud Runtime ermöglicht es Ihnen, schnell eine laufende Instanz auf der Plattform zu erstellen, indem Sie sie bereitstellen. Beim Deployment wird Ihr Quellcode mit einer Konfigurationsdatei gebündelt, wodurch ein Paket entsteht. Das Paket wird dann auf die Plattform hochgeladen und zu einer laufenden Instanz.
Konfigurationsdatei
Die Konfigurationsdateien geben der Plattform Informationen darüber, wie Ihre Anwendung zu debuggen und einzusetzen ist. Hier ein Beispiel für eine Konfigurationsdatei:
project:
name: app
instance:
name: dev
runtime: nodejs22
region: aws.use1
application-id: 773c2b45-c20a-4d6b-8afe-24ce29ba6f92
entrypoint: [node, index.js]
build-script: "./build.sh"
capabilities:
- voice
- messages-v1
environment:
- name: VONAGE_NUMBER
value: "44700000000"
- name: INTEGRATION_API_KEY
secret: MY_SECRET_API_KEY
secrets:
- MY_SECRET_API_KEY
debug:
name: debug
application-id: 884c2b45-c20a-4d6b-8afe-24ce29ba6f93
environment:
- name: DEBUG_VONAGE_NUMBER
value: "4471111111"
entrypoint: [nodemon, --inspect, index.js]
preserve-data: false
- Der Projektname ist der eindeutige Namensraum für Ihr Projekt, das viele Instanzen enthalten kann.
- Der Instanzname ist ein eindeutiger Bezeichner für Ihre Instanz.
regionist der Ort, an dem die Instanz ausgeführt wird.entrypointgibt der Vonage Cloud Runtime-Plattform Informationen darüber, wie Sie Ihre Anwendung starten können.build-scriptermöglicht es Ihnen, ein Skript anzugeben, das ausgeführt wird, während die Plattform Ihre Anwendung erstellt.
Weitere Informationen über die Möglichkeiten, die Ihnen zur Verfügung stehen, finden Sie in der Konfigurationsdatei-Leitfaden.
Injizierte Umgebungsvariablen
Wenn Sie Ihr Projekt auf Cloud Runtime bereitstellen (oder mit vcr debug), wird die Plattform einige Umgebungsvariablen für Sie zusammen mit dem environment Objekt aus Ihrer Konfigurationsdatei.
VCR_PORT
VCR_REGION
VCR_DEBUG
VCR_CODE_DIR
VCR_REGION_ID
VCR_PRIVATE_KEY
VCR_API_REGION_ID
VCR_API_ACCOUNT_ID
VCR_API_ACCOUNT_SECRET
VCR_API_APPLICATION_ID
VCR_INSTANCE_PUBLIC_URL
VCR_INSTANCE_SERVICE_NAME
Adresse und Anschluss der Applikation
Ihre Anwendung muss auf den Port hören, der von der VCR_PORT Umgebungsvariable und binden an 0.0.0.0. VCR leitet den eingehenden Verkehr über einen internen Proxy weiter, der sich an localhost oder 127.0.0.1 wird Ihre Anwendung unerreichbar machen.
Node.js (Express):
const port = process.env.VCR_PORT || 8080;
app.listen(port, '0.0.0.0');
Python (FastAPI):
import os, uvicorn
port = int(os.environ.get('VCR_PORT', 8080))
uvicorn.run(app, host='0.0.0.0', port=port)
Gehen Sie:
port := os.Getenv("VCR_PORT")
if port == "" { port = "8080" }
http.ListenAndServe("0.0.0.0:"+port, nil)
Java (Spring Boot):
# application.properties
server.port=${VCR_PORT:8080}
server.address=0.0.0.0
Ruby (Sinatra):
PHP:
# vcr.yml entrypoint
entrypoint:
- php
- -S
- "0.0.0.0:${VCR_PORT}"
- -t
- public
Gesundheitscheck Route
Die Vonage Cloud Runtime Plattform erwartet eine Route, /_/healthdie in Ihrer Anwendung verfügbar sein muss, um den Zustand Ihrer bereitgestellten Anwendung zu überprüfen. Die Route sollte nicht hinter einer Authentifizierung stehen. Ihre Anwendung wird neu gestartet, wenn diese Route nicht den Status 200 zurückgibt. Wenn die Route nicht vorhanden ist, schlägt die Bereitstellung fehl.
Sie können dies als Gelegenheit nutzen, um einige eigene Prüfungen durchzuführen und die Plattform Ihre Anwendung automatisch neu starten zu lassen, wenn sie in einen schlechten Zustand gerät, indem sie innerhalb von 30 Sekunden einen Status ungleich 200 zurückgibt.
Node.js (Express):
app.get('/_/health', (req, res) => res.sendStatus(200));
Node.js (Fastify):
fastify.get('/_/health', async () => ({ status: 'ok' }));
Python (Flask):
@app.route('/_/health')
def health():
return 'OK', 200
Python (FastAPI):
@app.get('/_/health')
async def health():
return {'status': 'ok'}
Gehen Sie:
http.HandleFunc("/_/health", func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusOK)
w.Write([]byte("OK"))
})
Java (Spring Boot):
@RestController
public class HealthController {
@GetMapping("/_/health")
public ResponseEntity<String> health() {
return ResponseEntity.ok("OK");
}
}
Ruby (Sinatra):
PHP:
Wie wird eingesetzt?
Sie können die Bereitstellung mit der Vonage Cloud Runtime CLI durchführen. Zum Bereitstellen führen Sie aus:
Wenn Sie die Fehlermeldung "credentials not found" erhalten, führen Sie vcr app generate-keys um die Anmeldedaten Ihrer Vonage Anwendung für Vonage Cloud Runtime neu zu generieren.
Dieser Befehl bewirkt Folgendes:
- Konfiguriert die Rückrufe Ihrer Vonage Applications wie in den Konfigurationsdateien beschrieben.
capabilitiesObjekt. - Packt das aktuelle Verzeichnis aus.
- Lädt es auf die Cloud Runtime Platform hoch.
- Führt Ihr Build-Skript aus, wenn Sie es in Ihrer Konfigurationsdatei angegeben haben.
- Wenn alles erfolgreich war, führen Sie den Befehl in Ihrem
entrypoint.
Um das Hochladen großer oder unerwünschter Dateien als Teil Ihrer Bereitstellung zu vermeiden, verwenden Sie eine .vcrignore Datei, um sie auszuschließen.
Standardmäßig sucht der Befehl deploy nach einer Konfigurationsdatei namens vcr.yml im aktuellen Verzeichnis. Um eine andere Konfigurationsdatei zu verwenden, können Sie diese ausführen:
Wenn Sie zum Beispiel Ihren aktuellen Code mit einer Konfigurationsdatei namens production.yml würden Sie laufen:
Bereitstellen mit einer GitHub-Aktion
Wenn Sie das Deployment in Ihren GitHub-Workflow integrieren möchten, können Sie eine GitHub-Action hinzufügen, die für Sie deployt. Die wichtigsten Schritte der Aktion sind das Auschecken Ihres Codes, die Installation der Cloud Runtime CLIund führen Sie dann den Befehl deploy aus. Hier ist ein Beispiel-Workflow, der davon ausgeht, dass Sie eine Skript erstellen um die benutzerdefinierten Aspekte Ihres Projekts zu bearbeiten:
name: Deploy to Cloud Runtime
on:
workflow_dispatch:
jobs:
deploy:
runs-on: ubuntu-latest
env:
VONAGE_API_KEY: ''
VCR_REGION: 'euw1'
VCR_SHORT_REGION: 'eu' # eu | us | ap
steps:
- name: Checkout code
uses: actions/checkout@v3.0.2
- name: Install Cloud Runtime CLI
uses: Vonage/cloud-runtime-cli@main
- name: Deploy
run: |
vcr deploy --api-key ${{env.VONAGE_API_KEY}} --api-secret ${{ secrets.VONAGE_API_SECRET }} --region aws.${{env.VCR_REGION}} --graphql-endpoint https://api-${{env.VCR_SHORT_REGION}}.vonage.com/v1/vcr/${{env.VCR_REGION}}/api/graphql/v1/graphql
Sie müssen Folgendes ersetzen VONAGE_API_KEY, VCR_REGIONund VCR_SHORT_REGION mit Ihrem API-Schlüssel und den Werten für Ihre Zielregion:
| Region | VCR_REGION | VCR_SHORT_REGION | GraphQL-Endpunkt |
|---|---|---|---|
| EU West (Irland) | euw1 | eu | https://api-eu.vonage.com/v1/vcr/euw1/api/graphql/v1/graphql |
| US-Ost (Virginia) | use1 | us | https://api-us.vonage.com/v1/vcr/use1/api/graphql/v1/graphql |
| AP Southeast (Singapur) | apse1 | ap | https://api-ap.vonage.com/v1/vcr/apse1/api/graphql/v1/graphql |
| AP Südost (Sydney) | apse2 | ap | https://api-ap.vonage.com/v1/vcr/apse2/api/graphql/v1/graphql |
Dieser Workflow wird manuell ausgeführt, aber Sie können ihn so bearbeiten, dass er ausgeführt wird, wenn PRs geschlossen werden usw. Mehr über GitHub Actions erfahren Sie auf der Aktionen Dokumentation.
Fehlerbehebung bei der Bereitstellung
Sie erhalten möglicherweise die Fehlermeldung "credentials not found", wenn die Vonage Cloud Runtime Plattform keinen Zugriff auf die Anmeldedaten Ihrer Vonage Anwendung hat. Sie können ein neues privates Schlüsselpaar mithilfe der CLI generieren:
vcr app generate-keys --app-id <app-id>
Einsatz anzeigen
Um einen genaueren Blick auf Ihr Projekt und Ihre Einsätze zu werfen, können Sie die Vonage Cloud Runtime Dashboard.

Wenn Sie auf Ihre bereitgestellte Instanz klicken, erhalten Sie Zugriff auf Protokolle, Ereignisse und den Bereitstellungsverlauf. Auf der Registerkarte "Historie" sehen Sie zum Beispiel die Bereitstellungshistorie für diese Instanz:

Wenn Sie mehr als eine Instanz für Ihr Projekt bereitstellen, werden sie alle auf dem Dashboard angezeigt:

Dies ist ein Projekt mit dem Namen vapi, die zwei Konfigurationsdateien hat. Eine Konfigurationsdatei hat eine Instanz namens dev und die andere hat eine Instanz namens prod. Auf diese Weise können Sie mehrere Instanzen haben, die denselben Code ausführen, aber in unterschiedlichen Umgebungen.
Eine Instanz entfernen
Wenn Sie eine bereitgestellte Instanz entfernen möchten, können Sie den Befehl instance remove der Vonage Cloud Runtime CLI verwenden:
vcr instance remove --project-name <project-name> --instance-name <instance-name>
Um also die dev im obigen Screenshot würden Sie ausführen:
vcr instance remove --project-name vapi --instance-name dev
Sie können eine Instanz auch mit Hilfe der Instanz-ID entfernen:
vcr instance remove --id <instance-id>
WARNUNG: Dieser Vorgang ist nicht umkehrbar! Angehängte Zustände und Planer werden ebenfalls dauerhaft gelöscht.
Instanzen auflisten
Um alle für Ihren Account bereitgestellten Instanzen zu sehen, führen Sie den Befehl aus:
Instanzprotokolle anzeigen
Sie können Protokolle von einer bereitgestellten Instanz über die CLI abrufen:
Streaming-Protokolle
Verwenden Sie die --follow (-f), um kontinuierlich neue Protokolleinträge zu streamen, sobald sie eintreffen, ähnlich wie bei tail -f:
Drücken Sie Strg+C, um das Streaming zu beenden.
Filtern von Protokollen
Mit diesen optionalen Flags können Sie die Protokollausgabe einschränken:
| Flagge | Kurz | Beschreibung |
|---|---|---|
--history <n> | Numbers der historischen Einträge, die zuerst abgerufen werden (Standard: 300) | |
--log-level <level> | -l | Minimale Protokollierungsstufe: trace, debug, info, warn, error, fatal |
--source-type <type> | -s | Nach Quelle filtern: application oder provider |
Beispiele:
IP-Adressen-Zulassungsliste
Wenn Sie den Zugriff auf Ihre Systeme einschränken möchten, sind die IP-Adressen der Vonage Cloud Runtime für jede Region folgende:
EU West - aws.euw1
- 52.215.68.46
- 46.137.9.43
- 54.72.25.154
US West - aws.use1
- 54.87.47.119
- 3.224.186.73
- 35.153.45.51
APAC Südost - aws.apse1
- 13.251.207.33
- 52.76.50.31
- 54.169.132.8
APAC Südost (Sydney) - aws.apse2
- 52.62.122.28
- 13.236.199.68
- 52.63.14.36