Skip to content

gouv-nc-data/gcp-function

Repository files navigation

Module terraform de création de ressources Google Cloud Function pour injection de données dans BigQuery

Ressources créées

  • Compte de service avec les bons rôles
  • Bucket de transfert intermédiaire
  • Dataset BigQuery
  • TODO: Cloud Function V2

Le service account créé est de la forme sa-${var.project_name} et doit matcher : ^[a-z](?:[-a-z0-9]***4,28***[a-z0-9])$

Pistes d'amélioration (TODO)

  • Authentification OIDC : Migrer vers Workload Identity Federation pour GitHub Actions afin d'éliminer le stockage des clés de compte de service (GCP_CREDENTIALS).
  • Labels Standardisés : Injecter des labels par défaut sur toutes les ressources pour faciliter le suivi analytique du Billing Google Cloud.

Requirements

No requirements.

Providers

Name Version
github 6.3.1
google 5.44.2
google-beta 5.44.2

Modules

Name Source Version
google_cloud_run git::https://github.com/GoogleCloudPlatform/cloud-foundation-fabric//modules/cloud-run-v2 v44.1.0

Resources

Name Type
github_actions_secret.gcp_credentials_secret resource
github_actions_variable.gcp_cloud_service_secret resource
github_actions_variable.gcp_cr_job_name resource
github_actions_variable.gcp_project_id_secret resource
github_actions_variable.gcp_region_secret resource
github_actions_variable.gcp_repository_secret resource
github_actions_variable.gcp_service_account_variable resource
github_actions_variable.project_name resource
github_repository.function-repo resource
github_repository_collaborator.maintainer resource
google-beta_google_cloud_scheduler_job.schedule_job_or_svc resource
google-beta_google_project_service_identity.run_identity resource
google_artifact_registry_repository.project-repo resource
google_artifact_registry_repository_iam_member.binding resource
google_compute_address.default resource
google_compute_network.vpc_network resource
google_compute_router.compute_router resource
google_compute_router_nat.default resource
google_monitoring_alert_policy.errors resource
google_project_iam_member.run_service_agent_artifact_reader resource
google_project_iam_member.service_account_bindings resource
google_project_service.service resource
google_project_service.service_compute resource
google_project_service.service_vpcaccess resource
google_secret_manager_secret_iam_member.external_secret_accessor resource
google_service_account.service_account resource
google_service_account_key.service_account_key resource
google_storage_bucket.bucket resource
google_storage_bucket_object.folders resource
google_project.external_secret_project data source
google_project.project data source

Inputs

Name Description Type Default Required
bucket_lifecycle_rules Liste des règles de cycle de vie pour le bucket
list(object({
action = any
condition = any
}))
[] no
bucket_versioning_enabled Active le versionnement sur le bucket bool false no
cpu_limits cpu maximal alloué au container https://cloud.google.com/run/docs/configuring/cpu?hl=fr string "1000m" no
create_bucket Création ou non d'un bucket associé au projet bool true no
direction direction du projet string n/a yes
env Variables d'environnement pour Cloud Run map(string) null no
env_from_key Variables venant de secret d'environnement pour Cloud Run. La valeur est une map où la clé est le nom du secret.
map(object({
secret_name = string
version = optional(string, "latest")
}))
{} no
external_secret_project_id ID du projet contenant les secrets externes. Requis si env_from_key est utilisé. string "prj-dinum-p-secret-mgnt-aaf4" no
function_runtime Runtime associé à la google cloud function string "python311" no
group_name Google groupe associé au projet string null no
image Image Cloud Run à déployer, si présent les ressources github ne sont pas créées string null no
image_tag Tag de l'image Cloud Run à déployer string "latest" no
ip_fixe Setup an ip fix for the function bool false no
job_config Cloud Run Job specific configuration.
object({
max_retries = optional(number)
task_count = optional(number)
timeout = optional(string)
})
{} no
maintainers List of maintainers for the GH repo list(string) null no
memory_limits Mémoire maximale allouée au container https://cloud.google.com/run/docs/configuring/memory-limits?hl=fr#terraform string "512Mi" no
notification_channels canal de notification pour les alertes sur cloud run list(string) n/a yes
project_id id du projet string n/a yes
project_name nom du projet string n/a yes
region n/a string "europe-west1" no
schedule expression cron de schedule du job string null no
service_config Cloud Run service specific configuration options.
object({
custom_audiences = optional(list(string), null)
eventarc_triggers = optional(
object({
audit_log = optional(map(object({
method = string
service = string
})))
pubsub = optional(map(string))
storage = optional(map(object({
bucket = string
path = optional(string)
})))
service_account_email = optional(string)
}), {})
gen2_execution_environment = optional(bool, false)
iap_config = optional(object({
iam = optional(list(string), [])
iam_additive = optional(list(string), [])
}), null)
ingress = optional(string, null) # ["INGRESS_TRAFFIC_ALL", "INGRESS_TRAFFIC_INTERNAL_ONLY","INGRESS_TRAFFIC_INTERNAL_LOAD_BALANCER"]
invoker_iam_disabled = optional(bool, false)
max_concurrency = optional(number)
scaling = optional(object({
max_instance_count = optional(number)
min_instance_count = optional(number)
}))
timeout = optional(string)
})
{} no
storage_folders Liste des dossiers (préfixes) à créer dans le bucket (uniquement si create_bucket est true) list(string) [] no
timeout_seconds timeout d'execution de la fonction number 300 no
type Deploiement en mode service ou job (par défaut) string "JOB" no
vpc Utilise un vpc existant via un vpc connector serverless (ipfixe non supporté) any null no

Outputs

Name Description
function_name n/a
function_sa_email n/a
ip n/a
run_url n/a
vpc_network_name n/a

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages