配備

Vonage Cloud Runtimeでは、デプロイすることでプラットフォーム上に実行中のインスタンスを素早く作成することができます。デプロイはソースコードをコンフィギュレーション・ファイルでバンドルし、パッケージを作成します。パッケージはプラットフォームにアップロードされ、実行インスタンスとなります。

設定ファイル

コンフィギュレーション・ファイルは、アプリケーションのデバッグとデプロイ方法に関する情報をプラットフォームに与えます。以下に設定ファイルの例を示す:

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
  • プロジェクト名は、プロジェクトのユニークな名前空間であり、多くのインスタンスを含むことができます。
  • インスタンス名はインスタンスの一意な識別子です。
  • region はインスタンスが実行される場所である。
  • entrypoint は、Vonage Cloud Runtimeプラットフォームにアプリケーションの起動方法に関する情報を提供します。
  • build-script では、プラットフォームがアプリケーションを構築する間に実行するスクリプトを指定できます。

オプションの詳細については、以下をご覧ください。 設定ファイルガイド.

注入された環境変数

プロジェクトをCloud Runtimeにデプロイする(または vcr debug)、プラットフォームはあなたのために環境変数を注入します。 environment オブジェクトを設定ファイルから取得します。

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

アプリケーションのアドレスとポート

によって提供されるポートをリッスンする必要があります。 VCR_PORT 環境変数にバインドする。 0.0.0.0.VCRは、内部プロキシを経由して受信トラフィックをルーティングします。 localhost または 127.0.0.1 を使用すると、アプリケーションに到達できなくなります。

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)

行くんだ:

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

ルビー(シナトラ):

PHPだ:

# vcr.yml entrypoint
entrypoint:
  - php
  - -S
  - "0.0.0.0:${VCR_PORT}"
  - -t
  - public

ヘルスチェック・ルート

Vonage Cloud Runtimeプラットフォームはルートを期待します、 /_/healthこれは、デプロイされたアプリケーションの健全性をチェックするために使用されます。このルートは、認証の背後にあるものであってはなりません。このルートが200ステータスを返さない場合、アプリケーションは再起動されます。ルートが見つからない場合、デプロイは失敗します。

30秒以内に200以外のステータスを返すことで、プラットフォームがアプリケーションを自動的に再起動させることができる。

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'}

行くんだ:

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");
    }
}

ルビー(シナトラ):

PHPだ:

デプロイ方法

Vonage Cloud Runtime CLIを使用してデプロイできます。デプロイするには、以下を実行します:

vcr deploy

資格情報が見つからないエラー」が発生した場合は、以下を実行してください。 vcr app generate-keys を使用して、Vonage Cloud Runtime用のVonageアプリケーションの認証情報を再生成します。

このコマンドは以下のことを行う:

  • Vonageアプリケーションのコールバックを設定ファイルの capabilities オブジェクトがある。
  • カレントディレクトリをパッケージアップする。
  • クラウド・ランタイム・プラットフォームにアップロードする。
  • 設定ファイルで指定されている場合は、ビルドスクリプトを実行します。
  • すべて成功したら entrypoint.

デプロイの一部として大きなファイルや不要なファイルをアップロードしないようにするには .vcrignore ファイルで除外する。

デフォルトでは、deployコマンドは次のような設定ファイルを探します。 vcr.yml を実行する。別のコンフィギュレーション・ファイルを使用するには、以下を実行する:

vcr deploy --filename <path/to/file>

例えば、現在のコードを次のようなコンフィギュレーション・ファイルでデプロイする。 production.yml あなたは走るだろう:

vcr deploy --filename production.yml

GitHub アクションでデプロイする

GitHub のワークフローにデプロイを組み込みたい場合は、デプロイを代行する GitHub Action を追加しましょう。アクションの主な手順は、コードをチェックアウトして クラウドランタイムCLIそしてdeployコマンドを実行する。ワークフローの例です。 ビルドスクリプト あなたのプロジェクトのカスタム面を処理する:

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

を交換する必要がある。 VONAGE_API_KEY, VCR_REGIONそして VCR_SHORT_REGION を、APIキーと対象地域の値で指定します:

地域 VCR_REGION VCR_SHORT_REGION GraphQLエンドポイント
EU西地区(アイルランド) euw1 eu https://api-eu.vonage.com/v1/vcr/euw1/api/graphql/v1/graphql
アメリカ東部(バージニア州) use1 us https://api-us.vonage.com/v1/vcr/use1/api/graphql/v1/graphql
APサウスイースト(シンガポール) apse1 ap https://api-ap.vonage.com/v1/vcr/apse1/api/graphql/v1/graphql
APサウスイースト(シドニー) apse2 ap https://api-ap.vonage.com/v1/vcr/apse2/api/graphql/v1/graphql

このワークフローは手動で実行されますが、PR がクローズされたときなどに実行するように編集することもできます。GitHub アクションについての詳細は 行動記録.

配備のトラブルシューティング

Vonage Cloud RuntimeプラットフォームがVonageアプリケーションの認証情報にアクセスできない場合、"credentials not found "エラーが表示されることがあります。CLIを使用して新しい秘密鍵ペアを生成できます:

vcr app generate-keys --app-id <app-id> 

配置を見る

プロジェクトとデプロイメントを詳しく見るには Vonage Cloud Runtimeダッシュボード.

Screenshot of the Vonage Cloud Runtime dashboard home page

デプロイされたインスタンスをクリックすると、ログ、イベント、デプロイ履歴にアクセスできます。たとえば、[history] タブをクリックすると、このインスタンスのデプロイ履歴が表示されます:

Screenshot of an instance's history page

プロジェクトに複数のインスタンスをデプロイした場合、それらはすべてダッシュボードに表示されます:

Screenshot of the cloud runtime dashboard showing multiple instances

というプロジェクトである。 vapiつのコンフィギュレーション・ファイルがある。一方の設定ファイルには dev というインスタンスを持ち、もう一方は prod.これにより、同じコードを異なる環境で実行する複数のインスタンスを持つことができる。

インスタンスの削除

デプロイされたインスタンスを削除したい場合は、Vonage Cloud Runtime CLI の instance remove コマンドを使用できます:

vcr instance remove --project-name <project-name> --instance-name <instance-name> 

そこで dev 上のスクリーンショットの例では、次のように実行する:

vcr instance remove --project-name vapi --instance-name dev

インスタンスIDを使用してインスタンスを削除することもできます:

vcr instance remove --id <instance-id>

警告:これは不可逆的な操作です!付属のステートとスケジューラも永久に削除されます。

インスタンス一覧

アカウントにデプロイされたすべてのインスタンスを見るには、以下を実行する:

vcr instance list

インスタンスログの表示

CLIを使用して、デプロイされたインスタンスからログを取得できます:

# Print the last logs by project and instance name vcr instance log --project-name <project-name> --instance-name <instance-name> # Print the last logs by instance ID vcr instance log --id <instance-id>

ストリーミング・ログ

を使用する。 --follow (-f) フラグを指定すると、新しいログエントリが到着したときに継続的にストリーミングされます。 tail -f:

vcr instance log --project-name <project-name> --instance-name <instance-name> --follow

Ctrl+Cでストリーミングを停止する。

ログのフィルタリング

以下のオプションのフラグを使って、ログ出力を絞り込むことができる:

フラッグ ショート 説明
--history <n> 最初に取得する履歴エントリ数 (デフォルト: 300)
--log-level <level> -l 最小ログレベル: trace, debug, info, warn, error, fatal
--source-type <type> -s ソースでフィルタリングする: application または provider

例を挙げよう:

# Show only errors and above, streaming vcr instance log -p <project-name> -n <instance-name> --log-level error --follow # Show only application logs (exclude provider logs) vcr instance log -p <project-name> -n <instance-name> --source-type application # Fetch the last 500 entries and exit vcr instance log --id <instance-id> --history 500

IPアドレス許可リスト

システムへのアクセスを制限したい場合、各地域のVonage Cloud Runtime IPアドレスは以下の通りです:

EU西 aws.euw1

  • 52.215.68.46
  • 46.137.9.43
  • 54.72.25.154

米国西部 aws.use1

  • 54.87.47.119
  • 3.224.186.73
  • 35.153.45.51

APAC 東南アジア aws.apse1

  • 13.251.207.33
  • 52.76.50.31
  • 54.169.132.8

APAC南東部 (シドニー) aws.apse2

  • 52.62.122.28
  • 13.236.199.68
  • 52.63.14.36