Niet elke automatisering verdient een eigen server. Voor losse taken die reageren op een gebeurtenis is een serverless functie ideaal: hij draait alleen wanneer nodig, schaalt vanzelf en kost niets als er niks gebeurt. Cloud Run functions zijn de perfecte lijm tussen Workspace-events en je eigen logica.
In dit artikel zie je hoe je ze inzet voor Workspace-automatisering.
Cloud Functions heet nu Cloud Run functions
Sinds 2024 heeft Google "Cloud Functions (2nd gen)" hernoemd naar Cloud Run functions, ondergebracht bij Cloud Run. "Cloud Functions (1st gen)" heet nu "Cloud Run functions (1st gen)". Het event-gedreven model uit dit artikel blijft hetzelfde; je krijgt er de extra schaal- en netwerkinstellingen van Cloud Run bij. Kom je de oude naam nog tegen in de console of docs, dan gaat het over dezelfde dienst.
Waarom serverless
Een Cloud Run function is een stukje code dat draait als reactie op een trigger. Je beheert geen server, geen schaling en geen patches.
- Geen infrastructuur om te onderhouden.
- Automatische schaling van nul naar veel en weer terug.
- Betalen per uitvoering, niet per draaiuur.
- Ingebouwde identiteit, dus geen sleutelbestanden nodig.
Keyless authenticatie ingebouwd
Omdat een functie binnen Google Cloud draait, gebruikt hij de ingebouwde service-identiteit voor authenticatie. Je hoeft geen JSON-sleutel mee te leveren; je kent de functie-identiteit gewoon de juiste rechten toe. Dat is veiliger dan zelf een sleutel beheren, omdat er niets is dat kan uitlekken.
De drie triggers die ertoe doen
Voor Workspace zijn drie triggertypes het meest relevant. Kies op basis van waar de gebeurtenis vandaan komt.
| Wil je dit? | Gebruik deze trigger |
|---|---|
| Reageren op een Workspace-event, zoals een nieuwe e-mail | Pub/Sub-trigger gekoppeld aan een topic |
| Een endpoint voor een webhook, bijvoorbeeld een Chat-app | HTTP-trigger |
| Reageren zodra een bestand of export in Cloud Storage verschijnt | Cloud Storage-trigger |
Een Pub/Sub-getriggerde functie
Dit is het werkpaard voor event-gedreven automatisering. De functie ontvangt het bericht dat Workspace publiceerde, bijvoorbeeld een Gmail-pushmelding.
Zo zet je een Pub/Sub-functie op
- Zet een Pub/Sub-topic op en koppel je Workspace-bron eraan met een
watch-aanvraag (zoalsusers.watchin de Gmail API). - Schrijf een functie die de event-payload uit het Pub/Sub-bericht haalt.
- Verwerk de gebeurtenis, bijvoorbeeld een nieuw mailbericht ophalen en classificeren.
- Deploy de functie met de Pub/Sub-trigger op dat topic.
- Ken de functie-identiteit de benodigde Workspace-scopes toe.
import base64, json
def verwerk_event(event, context):
payload = json.loads(base64.b64decode(event['data']).decode())
history_id = payload.get('historyId')
# haal gewijzigde berichten op en verwerk ze
Gmail-watch verloopt
Een Gmail watch is maximaal zeven dagen geldig. Vernieuw hem periodiek, bijvoorbeeld met een dagelijkse Cloud Scheduler-taak, anders stopt je automatisering stilletjes.
Een HTTP-getriggerde functie
Voor webhooks of een Chat-app-endpoint gebruik je een HTTP-trigger. De functie ontvangt een request en stuurt een response terug.
Beveilig je endpoint altijd
Een HTTP-functie is publiek bereikbaar tenzij je hem beveiligt. Valideer altijd de afzender: controleer bij een Chat-app het bearer-token van Google, en bij eigen webhooks een gedeeld geheim of een handtekening. Een open endpoint is een uitnodiging voor misbruik.
Authenticatie naar Workspace
De functie heeft een eigen service-identiteit. Voor toegang tot Workspace-gebruikersdata stel je domain-wide delegation in voor die identiteit, net als bij een gewoon service-account, maar zonder dat je ooit een sleutel downloadt.
Hou je aan minste privilege
Beperk de functie-identiteit tot de minimale rechten en scopes. Een functie die alleen mail leest, hoeft geen schrijfrechten te hebben. Met het principe van minste privilege beperk je de schade als de functie ooit gecompromitteerd raakt.
Veelgestelde vragen
Welke talen ondersteunen Cloud Run functions?
Onder andere Python, Node.js, Go, Java, .NET, Ruby en PHP, met recente major-versies die in 2026 algemeen beschikbaar zijn. Kies de taal waarin je je Workspace-client het prettigst gebruikt.
Hoe lang mag een functie draaien?
Dat hangt af van de trigger. Een HTTP-functie kan tot 60 minuten draaien, terwijl event-gedreven functies (zoals Pub/Sub via Eventarc) tot 9 minuten krijgen. Voor langere of zware taken splits je het werk op of gebruik je een Cloud Run-service.
Wat gebeurt er bij een fout?
Bij een Pub/Sub-trigger wordt het bericht opnieuw aangeboden als je een fout teruggeeft. Maak je verwerking daarom idempotent, zodat een herhaalde levering niet dubbel werk doet.
Kan ik geheimen veilig gebruiken?
Ja. Koppel Secret Manager aan je functie zodat geheimen als omgevingsvariabele of gemount bestand beschikbaar zijn, zonder ze in je code te zetten.
Wat is het verschil met een gewone Cloud Run-service?
Een function is een enkel stukje code rond een trigger; een service is een volledige container die je zelf inricht. Sinds de samenvoeging draaien beide op hetzelfde Cloud Run-platform, dus je kunt later opschalen naar een service zonder van omgeving te wisselen.
Met Cloud Run functions bouw je lichtgewicht, veilige en schaalbare automatisering die naadloos op Workspace-events reageert, zonder ooit een server te beheren.