ワークステーションで実行されている HTTP サーバーに接続する

デフォルトでは、ブラウザからワークステーションの HTTP ポート 80 とポート 1024~65535 に接続できます。ワークステーション構成で allowedPorts を設定することで、ワークステーションで接続できるポートを制限できます。

実行中のワークステーションには host プロパティがあり、これを使用してリモート ブラウザから HTTP で接続できます。host プロパティを確認するには、API、Google Cloud CLI、 Google Cloud コンソールを使用して、実行中のワークステーションの詳細を取得するか、ワークステーション内で自動的に設定される $WEB_HOST 環境変数を出力します。デフォルトでは、URL はポート 80 で接続します。

デフォルトのワークステーション URL 形式

host プロパティの URL の形式は、デフォルトで次のようになります。

https://PORT-WORKSTATION_NAME.CLUSTER_ID.cloudworkstations.dev

プレースホルダは次のものを表します。

  • PORT: ポート番号。デフォルトはポート 80 です。
  • WORKSTATION_NAME: ワークステーション名。
  • CLUSTER_ID: ランダムに生成されたクラスタ ID。
  • cloudworkstations.dev: ワークステーションのデフォルトのドメイン名。

    カスタム ドメインの URL の形式は異なります。Cloud Workstations でカスタム ドメインを設定する方法については、Cloud Workstations のカスタム ドメインを設定するをご覧ください。

URL を変更して別のポートに接続する

別のポートに接続するには、接頭辞として別のポート番号を指定します。たとえば、次の URL はポート 9900 に接続します。

https://9900-myworkstation.cluster-12345abcde.cloudworkstations.dev

この例では、次の点に注意してください。

  • 9900: ポート番号を表します。
  • myworkstation: ワークステーション ID を表します。
  • cluster-12345abcde: クラスタ識別子を表します。
  • cloudworkstations.dev: ワークステーションのデフォルトのドメイン名を表します。

これらの URL にはユーザー認証が必要です。これらの URL を開くには、ログインしたうえで、Cloud Workstations ユーザーの IAM ロール roles/workstations.user または workstations.workstations.use 権限が必要です。

ワークステーション クラスタが直接アクセスポートで構成されている場合、ポートを接頭辞としてエンコードする代わりに、ワークステーションのホスト名に :PORT を追加して、構成されたポートに接続できます。たとえば、ポート 9900 を直接アクセスポートとして構成すると、次の URL もポート 9900 に接続します。

https://myworkstation.cluster-12345abcde.cloudworkstations.dev:9900

Google Cloud コンソールから HTTP アプリに接続する

ワークステーションで実行されている HTTP アプリには、Google Cloud コンソールから接続できます。

使用する権限がある実行中のワークステーションには、[起動] ボタンが表示されます。デフォルトでは、このボタンはポート 80 で接続します。[起動] の横にある arrow_drop_down 展開矢印をクリックすると、別の接続オプションが表示されます。[Connect to web app on port] オプションを使用すると、接続する別のポートを指定できます。

ベースエディタから HTTP アプリに接続する

Cloud Workstations のベースエディタからワークステーションで実行されているアプリに接続するには、次のいずれかの手順を行います。

  • ターミナルで localhost リンクをクリックします。ベースエディタは、localhost リンクを正しい URL に自動的にリダイレクトします。

    1. ターミナル ウィンドウを開くには、メニューから [メニュー] > [ターミナル] > [新規ターミナル] をクリックします。または、Ctrl+Shift+`(macOS では Command+Shift+`)を押します。

    2. コマンド プロンプトで、次のコマンドを実行して localhost リンクを表示します。

      echo http://localhost:PORT
      

      PORT は、80 や 8080 などのポート番号に置き換えます。

    3. Ctrl キー(macOS では Command キー)を押したまま localhost リンクをクリックします。
      これにより、PORT-WORKSTATION_HOSTNAME がブラウザで開きます。

  • ブラウザ ウィンドウを使用して、https://PORT-WORKSTATION_HOSTNAME に移動します。ここで、PORT はポート番号、WORKSTATION_HOSTNAME はワークステーションのホスト名です。

直接アクセスポートを構成する

デフォルトでは、URL の接頭辞としてポートをエンコードしてワークステーション ポートに接続すると、リクエストは HTTPS ポート 443 を介してクラスタ ゲートウェイに接続し、ゲートウェイはリクエストをワークステーションの PORT に転送します。

標準の https://WORKSTATION_NAME.CLUSTER_ID.cloudworkstations.dev:PORT URL 形式を使用してワークステーション ポートに直接接続するには、ワークステーション クラスタでポートを直接アクセス ポートとして構成する必要があります。

既存のワークステーション クラスタに直接アクセスポートを設定するには、次の Google Cloud CLI コマンドを実行します。

    gcloud beta workstations clusters update CLUSTER_ID \
        --region=REGION \
        --project=PROJECT \
        --direct-access-ports=80,8080

直接アクセスポートとして構成できるのは、ポート 80 と 1024~65535 の範囲のポートのみです。また、ワークステーション クラスタごとに 8 つを超えるダイレクト アクセス ポートを指定することはできません。

ワークステーションのポートアクセスを制限する

ワークステーションで接続できるポートを制限するには、ワークステーション構成で allowedPorts を設定します。

単一のポートを制限するには、PortRange の first フィールドと last フィールドを同じポート番号に設定します。

デフォルトでは、ポート 22、80、1024~65535 が許可されます。

80 へのポートアクセスを制限し、8080 を 8100 に制限したワークステーション構成を作成するには、次の Google Cloud CLI コマンドを実行します。

    gcloud workstations configs create CONFIG \
        --cluster=CLUSTER_ID \
        --region=REGION \
        --project=PROJECT \
        --allowed-ports=first=80,last=80 \
        --allowed-ports=first=8080,last=8100

CORS プリフライト リクエスト

デフォルトでは、Cloud Workstations は、ワークステーションへのすべての HTTP / HTTPS リクエストが Cookie または認証ヘッダーを使用して認証されるようにします。

クロスオリジン リソース シェアリング(CORS)プリフライト リクエストには Cookie やカスタム ヘッダーが含まれていないため、未認証であるとみなされ、Cloud Workstations によってブロックされます。管理者は、認証されていない CORS プリフライト リクエストをワークステーションに許可することもできます。この場合、リクエストの検証はワークステーションの宛先サーバーの責任になります。

未認証の CORS プリフライト リクエストを許可するには、次の Google Cloud CLI コマンドを実行します。

    gcloud beta workstations configs update CONFIG \
        --cluster=CLUSTER_ID \
        --region=REGION \
        --project=PROJECT \
        --allow-unauthenticated-cors-preflight-requests

HTTP レスポンスでの localhost の置換を無効にする

開発中のアプリがワークステーションで適切に実行されるように、Cloud Workstations は、ワークステーションからの HTTP レスポンスで、localhost、127.0.0.1、0.0.0.0 への参照をワークステーションのホスト名に置き換えます。

これにより、一部のアプリケーションに干渉する可能性があります。この動作を無効にするには、次の Google Cloud CLI コマンドを実行します。

    gcloud beta workstations configs update CONFIG \
        --cluster=CLUSTER_ID \
        --region=REGION \
        --project=PROJECT \
        --disable-localhost-replacement