HTTPS リクエストによる呼び出し

HTTPS リクエストを送信する機能さえあれば、どこからでも HTTPS リクエストを送信して Cloud Run にホストされたサービスをトリガーできます。すべての Cloud Run サービスに対して、安定した HTTPS URL が割り当てられていることに注意してください。

ユースケースの一部を示します。

  • カスタム RESTful ウェブ API
  • 限定公開マイクロサービス
  • ウェブ アプリケーション用の HTTP ミドルウェアまたはリバース プロキシ
  • パッケージ化されたウェブ アプリケーション

一般公開サービスの作成

Cloud Run 一般公開のサービスを作成する際の要件は、次のとおりです。

  • 公共のインターネットからサービスへのアクセス
  • 一般公開用の URL

サービスを一般公開するには、デプロイ中、またはデプロイ後の任意の時点で、非認証(一般公開)アクセスを許可するようにサービスを設定します。

サービスを最初にデプロイしたときに提供される、安定した自動割り当て URL を、フルマネージド Cloud Run の一般公開 URL として使用できます。デプロイされたサービスの URL を確認するには、次のコマンドを使用します。

gcloud run services describe SERVICE --format 'value(status.url)'

独自のカスタム ドメインを使用して、サービスにマッピングすることもできます。フルマネージドの Cloud Run では、これによって自動的にマネージド SSL 証明書が提供されます。

Cloud Run(フルマネージド)はすべての HTTP リクエストを HTTPS にリダイレクトしますが、TLS はウェブサービスに到達する前に終了します。保護されていない URL(http://)を持つその他のウェブリソースを参照するウェブリソースがサービスで生成されると、混合コンテンツの警告やエラーが発生する場合があります。すべての参照ウェブ URI に対して https プロトコルを使用するか、または X-Forwarded-Proto HTTP ヘッダーなどの HTTP リクエストでプロキシ ディレクティブのアカウントを使用します。

限定公開サービスの作成

Cloud Run で限定公開サービスを作成するには、サービスへのアクセスを制限する必要があります。

マネージド Cloud Run では、IAM を使用してサービスへのアクセスを制限できます。詳しくは、IAM を使用してアクセスを管理するをご覧ください。

デベロッパーがプライベート サービスをテストする最も簡単な方法は、curl などのツールを使用し、Authorization ヘッダーに認証トークンを渡すことです。

curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" SERVICE_URL

Cloud Run サービスは、サービス間認証を使用して別のマネージド Cloud Run サービスを呼び出すことができます。

Cloud Run for Anthos on Google Cloud では、内部接続設定を使用して、外部リクエストがサービスにルーティングされないようにできます。

上記のアクセス制限方法に加えて、Identity Platform などのアプリケーション レベルの承認および認証メカニズムを使用してサービスへのアクセスを制限できます。Cloud Run for Anthos on Google Cloud でこれを行うにあたってのチュートリアルについては、Istio と Identity Platform を使用して Cloud Run on GKE エンドユーザーの認証を行うをご覧ください。

ミドルウェアを使用してサービスを強化する

HTTPS プロキシは、キャッシュ保存、リクエストの検証、承認など、HTTP サービスから一般的な機能をオフロードできます。マイクロサービスの場合、多くの HTTP プロキシは API ゲートウェイ ソリューションや Istio などのサービス メッシュの一部です。

Cloud Run サービスの拡張に使用できる Google Cloud プロダクトには、次のものがあります。

  • Cloud Endpoints。独自のエンドポイントを Cloud Run にデプロイし、他の Cloud Run サービスに対する API ゲートウェイ プロキシとして構成できます。

  • Firebase HostingCloud Run as a dynamic backend で使用するウェブ アプリケーションのフロントエンドを構築するために使用できます。