Le 15 septembre 2026, tous les environnements Cloud Composer 1 et Cloud Composer 2 version 2.0.x atteindront leur fin de vie prévue et vous ne pourrez plus les utiliser. Nous vous recommandons de planifier la migration vers Cloud Composer 3.
Cette page explique comment configurer des restrictions d'emplacement des ressources pour vous assurer que vos données stockées par Cloud Composer sont conservées dans les emplacements que vous spécifiez.
Fonctionnement des restrictions d'emplacement
Les restrictions d'emplacement pour Cloud Composer sont déterminées en fonction de la règle d'administration appliquée au projet dans lequel l'environnement Cloud Composer est créé. Cette règle est attribuée au sein du projet ou héritée de l'organisation.
Lorsque les restrictions d'emplacement sont activées, il est impossible de créer un environnement dans une région interdite par la règle. Si une région est répertoriée dans la liste des refus ou ne figure pas dans la liste d'autorisation, vous ne pouvez pas créer d'environnements dans cette région.
Pour permettre la création d'environnements, la règle doit autoriser la région entière et non une zone particulière de cette région. Par exemple, la région europe-west3 doit être autorisée par la règle pour pouvoir créer des environnements Cloud Composer dans cette région.
Cloud Composer vérifie les restrictions d'emplacement lors des opérations suivantes :
Création d'environnement.
Mise à niveau d'environnement si des ressources supplémentaires sont créées pendant l'opération.
Mise à niveau d'environnement pour les environnements plus anciens qui n'appliquent pas de restrictions d'emplacement sur les dépendances Cloud Composer.
En plus de vérifier les restrictions d'emplacement, Cloud Composer effectue les opérations suivantes:
Stocke des images Airflow personnalisées par l'utilisateur dans les dépôts Artifact Registry régionaux. Par exemple, ces images sont créées lorsque vous installez des images PyPI personnalisées dans votre environnement.
Si la zone multirégionale US est explicitement interdite par la règle, l'utilisation de Cloud Build est désactivée. Dans ce cas, les images Airflow personnalisées par l'utilisateur sont créées dans le cluster de votre environnement.
Installer une dépendance Python dans un environnement d'adresse IP privée avec restrictions d'emplacement des ressources
Si vous définissez des restrictions d'emplacement des ressources pour votre projet, Cloud Build ne peut pas être utilisé pour installer des packages Python. Par conséquent, l'accès direct aux dépôts sur l'Internet public est désactivé.
Pour installer des dépendances Python dans un environnement d'adresse IP privée lorsque vos restrictions d'emplacement n'autorisent pas l'emplacement multirégional US, utilisez l'une des options suivantes :
Utilisez un serveur proxy dans votre réseau VPC pour vous connecter à un dépôt PyPI sur l'Internet public. Spécifiez l'adresse du proxy dans le fichier /config/pip/pip.conf du bucket Cloud Storage.
Si votre stratégie de sécurité autorise l'accès à votre réseau VPC à partir d'adresses IP externes, vous pouvez configurer Cloud NAT.
Stockez les dépendances Python dans le dossier dags du bucket Cloud Storage pour les installer en tant que bibliothèques locales.
Cette option n'est pas conseillée si l'arbre des dépendances est volumineux.
Limiter les emplacements pour les journaux Cloud Composer
Si vos journaux Cloud Composer contiennent des données sensibles, vous pouvez rediriger les journaux Cloud Composer vers un bucket Cloud Storage régional. Pour ce faire, utilisez un récepteur de journaux. Une fois que vous avez redirigé les journaux vers un bucket Cloud Storage, ils ne sont pas envoyés à Cloud Logging.
LOCATION par la région dans laquelle se trouve l'environnement.
BUCKET_NAME par le nom du bucket. Exemple : composer-logs-us-central1-example-environment.
Créez un récepteur de journaux.
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"
Remplacez :
ENVIRONMENT_NAME par le nom de l'environnement.
BUCKET_NAME par le nom du bucket.
LOCATION par la région dans laquelle se trouve l'environnement.
Le résultat de la commande précédente contient le numéro de compte de service. Attribuez le rôle Créateur des objets de l'espace de stockage à ce compte de service:
SA_NUMBER par le numéro de compte de service fourni par la commande gcloud logging sinks create à l'étape précédente.
Excluez les journaux de votre environnement 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"
Remplacez :
ENVIRONMENT_NAME par le nom de l'environnement.
LOCATION par la région dans laquelle se trouve l'environnement.
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/09/03 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Difficile à comprendre","hardToUnderstand","thumb-down"],["Informations ou exemple de code incorrects","incorrectInformationOrSampleCode","thumb-down"],["Il n'y a pas l'information/les exemples dont j'ai besoin","missingTheInformationSamplesINeed","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 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)"]]