カスタム制約を使用して関数リソースを管理する

このページでは、gcloud functions コマンドまたは Cloud Functions v2 API を使用して作成された関数にカスタム制約を設定するための補足情報を提供します。

Cloud Run を使用して関数を作成またはデプロイした場合は、Cloud Run のプロジェクトのカスタム制約を管理するガイドで、カスタム制約の使用方法の詳細をご覧ください。

制限事項

Cloud Functions v2 API 関数にカスタム組織のポリシーを使用する場合、次の制限が適用されます。

  • 一括挿入 API を使用する場合、VM インスタンス名には適用されません。
  • Compute Engine リソースの CREATE メソッドにのみ適用されます。
  • Cloud Functions v2 API でのみ使用できます。Cloud Run functions(第 1 世代)には適用できません。
  • Cloud Functions v2 API を使用する場合にのみ関数が保護されます。Cloud Run functions は、Cloud Run API からも変更できます。保護を強化するため、Cloud Run へのカスタム制約の適用も必要になる場合があります。

一般的な組織のポリシーの例

次の表に、実際に役に立つ可能性のあるカスタム組織のポリシーの構文を示します。

説明 制約の構文
特定の言語で関数を作成できないようにする
    name: organizations/ORGANIZATION_ID/customConstraints/custom.cloudFunctionRuntimeBlock
    resource_types: cloudfunctions.googleapis.com/Function
    method_types:
      - CREATE
      - UPDATE
    condition: resource.buildConfig.runtime == "python312"
    action_type: DENY
    display_name: Deny functions using Python 3.12
    description: Functions cannot be created with Python 3.12 as the language runtime
関数が特定のワーカープールを使用することを必須にする
    name: organizations/ORGANIZATION_ID/customConstraints/custom.cloudFunctionsWorkerPool
    resource_types: cloudfunctions.googleapis.com/Function
    method_types:
      - CREATE
      - UPDATE
    condition: resource.buildConfig.workerPool == "WORKER_POOL"
    action_type: DENY
    display_name: Require worker pool
    description: Functions must use a worker pool 
WORKER_POOL は、Cloud Build ワーカープールの名前に置き換えます。
関数がすべてのコンテナ イメージを特定のイメージ リポジトリに保存することを必須にする
    name: organizations/ORGANIZATION_ID/customConstraints/custom.cloudFunctionsRepository
    resource_types: cloudfunctions.googleapis.com/Function
    method_types:
      - CREATE
      - UPDATE
    condition: resource.buildConfig.dockerRepository.startsWith("REPO_PATH")
    action_type: DENY
    display_name: Image repository constraint
    description: Functions must push images to a central image repository under REPO_PATH
REPO_PATH を、すべての関数でコンテナ イメージを保存するイメージ リポジトリの URL の URI に置き換えます。

次のステップ