El 15 de septiembre de 2026, todos los entornos de Cloud Composer 1 y Cloud Composer 2 versión 2.0.x alcanzarán el final de su ciclo de vida previsto, y no podrás usarlos. Te recomendamos que planifiques la migración a Cloud Composer 3.
En esta página, se muestra cómo configurar las restricciones de ubicación de recursos para que tus datos almacenados por Cloud Composer se mantengan dentro de las ubicaciones que especifiques.
Cómo funcionan las restricciones de ubicación
Las restricciones de ubicación para Cloud Composer se determinan según la política de la organización que se aplica al proyecto en el que se crea el entorno de Cloud Composer. Esta política se asigna dentro del proyecto o se hereda de la organización.
Con las restricciones de ubicación habilitadas, no es posible crear un entorno en una región prohibida por la política. Si una región aparece en la lista de denegación o no está en la lista de anunciantes permitidos, no puedes crear entornos en esta región.
Para habilitar la creación de entornos, la política debe permitir toda la región y no una zona específica dentro de esta región. Por ejemplo, la política debe permitir la región europe-west3 para crear entornos de Cloud Composer en esta región.
Cloud Composer verifica las restricciones de ubicación en los siguientes casos:
Creación del entorno
Actualización del entorno, si se crean recursos adicionales durante la operación
Actualización del entorno, para entornos más antiguos que no aplican restricciones de ubicación en las dependencias de Cloud Composer.
Además de verificar las restricciones de ubicación, Cloud Composer hace lo siguiente:
Almacena imágenes de Airflow personalizadas por el usuario en repositorios regionales de Artifact Registry. Por ejemplo, estas imágenes se crean cuando instalas imágenes personalizadas de PyPI en tu entorno.
Si la política prohíbe varias regiones US de forma explícita, está inhabilitado el uso de Cloud Build. En este caso, las imágenes de Airflow personalizadas por el usuario se compilan en el clúster de tu entorno.
Instale de una dependencia de Python en un entorno de IP privada con restricciones de ubicación de recursos
Si estableces restricciones de ubicación de recursos para tu proyecto, no se podrá usar Cloud Build para instalar paquetes de Python. Como consecuencia, se inhabilita el acceso directo a los repositorios en la Internet pública.
Para instalar dependencias de Python en un entorno de IP privada cuando las restricciones de ubicación no permiten varias regiones US, usa una de las siguientes opciones:
Usa un servidor proxy en tu red de VPC para conectarte a un repositorio de PyPI en la Internet pública. Especifica la dirección del proxy en el archivo /config/pip/pip.conf en el bucket de Cloud Storage.
Si tu política de seguridad permite el acceso a tu red de VPC desde direcciones IP externas, puedes configurar Cloud NAT.
Almacena las dependencias de Python en la carpeta dags en el bucket de Cloud Storage para instalarlas como bibliotecas locales.
Esta podría no ser una buena opción si el árbol de dependencias es grande.
Restringe las ubicaciones de los registros de Cloud Composer
Si tus registros de Cloud Composer contienen datos sensibles, es posible que desees redireccionarlos a un bucket de Cloud Storage regional. Para ello, usa un receptor de registros. Después de redireccionar los registros a un bucket de Cloud Storage, estos no se envían a Cloud Logging.
LOCATION por la región en la que se encuentra el entorno.
BUCKET_NAME por el nombre del bucket. Por ejemplo, composer-logs-us-central1-example-environment
Crea un receptor de registros nuevo.
gcloudloggingsinkscreate\
composer-log-sink-ENVIRONMENT_NAME\
storage.googleapis.com/BUCKET_NAME\
--log-filter"resource.type=cloud_composer_environment AND \resource.labels.environment_name=ENVIRONMENT_NAME AND \resource.labels.location=LOCATION"
Reemplaza lo siguiente:
ENVIRONMENT_NAME por el nombre del entorno.
BUCKET_NAME por el nombre del bucket.
LOCATION por la región en la que se encuentra el entorno.
El resultado del comando anterior contiene el número de la cuenta de servicio. Otorga el rol de creador de objetos de almacenamiento a esta cuenta de servicio:
SA_NUMBER con el número de cuenta de servicio que proporcionó el comando gcloud logging sinks create en el paso anterior
Excluye los registros de tu entorno de Logging.
gcloudloggingsinksupdate_Default\
--add-exclusionname=ENVIRONMENT_NAME-exclusion,filter=\"resource.type=cloud_composer_environment AND \resource.labels.environment_name=ENVIRONMENT_NAME AND \resource.labels.location=LOCATION"
Reemplaza lo siguiente:
ENVIRONMENT_NAME por el nombre del entorno.
LOCATION por la región en la que se encuentra el entorno.
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Difícil de entender","hardToUnderstand","thumb-down"],["Información o código de muestra incorrectos","incorrectInformationOrSampleCode","thumb-down"],["Faltan la información o los ejemplos que necesito","missingTheInformationSamplesINeed","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 2025-09-03 (UTC)"],[[["\u003cp\u003eCloud Composer's resource location restrictions are based on organizational policies applied to the project, ensuring data remains within specified locations.\u003c/p\u003e\n"],["\u003cp\u003eEnabling location restrictions prevents environment creation in regions not listed in the Allow list or listed in the Deny list of the organizational policy.\u003c/p\u003e\n"],["\u003cp\u003eWhen location restrictions prevent the use of the \u003ccode\u003eUS\u003c/code\u003e multi-region, installing Python dependencies in private IP environments requires alternative methods like private PyPI repositories, proxy servers, Cloud NAT, or storing dependencies locally.\u003c/p\u003e\n"],["\u003cp\u003eFor sensitive data, Cloud Composer logs can be redirected to a regional Cloud Storage bucket via a log sink, removing them from Cloud Logging.\u003c/p\u003e\n"],["\u003cp\u003eTo redirect logs to a Cloud Storage bucket, you need to create a log sink and give it storage object creator permissions for the newly created bucket, as well as exclude the environment from the default logging.\u003c/p\u003e\n"]]],[],null,["# Configure resource location restrictions\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\n[Cloud Composer 3](/composer/docs/composer-3/configure-resource-location-restrictions \"View this page for Cloud Composer 3\") \\| **Cloud Composer 2** \\| [Cloud Composer 1](/composer/docs/composer-1/configure-resource-location-restrictions \"View this page for Cloud Composer 1\")\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\nThis page shows how to configure\n[resource location restrictions](/resource-manager/docs/organization-policy/defining-locations)\nso that your data stored by Cloud Composer is kept within\nthe locations you specify.\n\nHow location restrictions work\n------------------------------\n\nLocation restrictions for Cloud Composer are determined based\non the organizational policy that is applied to the project where\nthe Cloud Composer environment is created. This policy is assigned\neither within the project or is inherited from the organization.\n\nWith location restrictions enabled, it is not possible to create\nan environment in a region that is prohibited by the policy. If a region\nis listed in the Deny list, or is not listed in the Allow list, then you\ncannot create environments in this region.\n\nTo enable the creation of environments, the policy must allow the whole region\nand not a specific zone within this region. For example, the `europe-west3`\nregion must be allowed by the policy in order to create\nCloud Composer environments in this region.\n\nCloud Composer checks location restrictions at:\n\n- Environment creation.\n- Environment upgrade, if any additional resources are created during the operation.\n- Environment update, for older environments that do not enforce location restrictions on Cloud Composer dependencies.\n\nIn addition to checking the location restrictions, Cloud Composer\ndoes the following:\n\n- Stores user-customized Airflow images in regional Artifact Registry repositories. As an example, such images are created when you install custom PyPI images in your environment.\n- If the [`US` multi-region](/storage/docs/locations#location-mr) is explicitly prohibited by the policy, Cloud Build use is disabled. In this case, user-customized Airflow images are built in your environment's cluster.\n\nInstall a Python dependency to a private IP environment with resource location restrictions\n-------------------------------------------------------------------------------------------\n\nIf you set resource location restrictions for your project, then\nCloud Build can't be used to install Python packages. As a consequence,\ndirect access to repositories on the public internet is disabled.\n\nTo install Python dependencies in a Private IP environment when your\nlocation restrictions don't allow the [`US` multi-region](/storage/docs/locations#location-mr), use\none of the following options:\n\n- Use a private\n [PyPI repository hosted in your VPC network](/composer/docs/composer-2/install-python-dependencies#install-private-repo).\n\n- Use a\n [proxy server](https://pip.pypa.io/en/stable/user_guide/#using-a-proxy-server)\n in your VPC network to connect to a PyPI repository on the public\n internet. Specify the proxy address in the `/config/pip/pip.conf` file in\n the Cloud Storage bucket.\n\n- If your security policy permits access to your VPC network from external\n IP addresses, you can configure [Cloud NAT](/nat/docs/overview).\n\n- Store the Python dependencies in the `dags` folder in\n the Cloud Storage bucket, to\n [install them as local libraries](/composer/docs/composer-2/install-python-dependencies#install-local).\n This might not be a good option if the dependency tree is large.\n\nRestrict locations for Cloud Composer logs\n------------------------------------------\n\nIf your Cloud Composer logs contain sensitive data, you might want\nto redirect Cloud Composer logs to a regional\nCloud Storage bucket. To do so, use\na [log sink](/logging/docs/export/configure_export_v2). After you redirect logs to\na Cloud Storage bucket, your logs are not sent to Cloud Logging.\n**Caution:** To get support from Cloud Customer Care, you might need to grant Google support engineers access to the Cloud Composer logs stored in Cloud Storage. \n\n### gcloud\n\n1. Create a new Cloud Storage bucket.\n\n gcloud storage buckets create gs://\u003cvar translate=\"no\"\u003eBUCKET_NAME\u003c/var\u003e --location=\u003cvar translate=\"no\"\u003eLOCATION\u003c/var\u003e\n\n Replace:\n - `LOCATION` with the region where the environment is located.\n - `BUCKET_NAME` with the name of the bucket. For example, `composer-logs-us-central1-example-environment`.\n2. Create a new log sink.\n\n gcloud logging sinks create \\\n composer-log-sink-\u003cvar translate=\"no\"\u003eENVIRONMENT_NAME\u003c/var\u003e \\\n storage.googleapis.com/\u003cvar translate=\"no\"\u003eBUCKET_NAME\u003c/var\u003e \\\n --log-filter \"resource.type=cloud_composer_environment AND \\\n resource.labels.environment_name=\u003cvar translate=\"no\"\u003eENVIRONMENT_NAME\u003c/var\u003e AND \\\n resource.labels.location=\u003cvar translate=\"no\"\u003eLOCATION\u003c/var\u003e\"\n\n Replace:\n - `ENVIRONMENT_NAME` with the name of the environment.\n - `BUCKET_NAME` with the name of the bucket.\n - `LOCATION` with the region where the environment is located.\n3. The output of the previous command contains the service\n account number. Grant the **Storage Object Creator** role to this\n service account:\n\n gcloud projects add-iam-policy-binding \u003cvar translate=\"no\"\u003ePROJECT_ID\u003c/var\u003e \\\n --member=\"serviceAccount:\u003cvar translate=\"no\"\u003eSA_NUMBER\u003c/var\u003e@gcp-sa-logging.iam.gserviceaccount.com\" \\\n --role='roles/storage.objectCreator' \\\n --condition=None\n\n Replace:\n - `PROJECT_ID` with the [Project ID](/resource-manager/docs/creating-managing-projects).\n - `SA_NUMBER` with the service account number provided by the `gcloud logging sinks create` command on the previous step.\n4. Exclude the logs for your environment from Logging.\n\n **Caution:** [Audit logs](/logging/docs/audit) cannot be excluded. They are always sent to the default storage. \n\n gcloud logging sinks update _Default \\\n --add-exclusion name=\u003cvar translate=\"no\"\u003eENVIRONMENT_NAME\u003c/var\u003e-exclusion,filter=\\\n \"resource.type=cloud_composer_environment AND \\\n resource.labels.environment_name=\u003cvar translate=\"no\"\u003eENVIRONMENT_NAME\u003c/var\u003e AND \\\n resource.labels.location=\u003cvar translate=\"no\"\u003eLOCATION\u003c/var\u003e\"\n\n Replace:\n - `ENVIRONMENT_NAME` with the name of the environment.\n - `LOCATION` with the region where the environment is located.\n\nWhat's next\n-----------\n\n- [Cloud Composer security overview](/composer/docs/composer-2/composer-security-overview)\n- [Access control](/composer/docs/composer-2/access-control)"]]