Aller au contenu principal

CloudflareDeployer

CloudflareDeployer regroupe votre serveur Mastra et génère un fichier wrangler.jsonc conforme à la configuration Wrangler de Cloudflare. Cloudflare le déploie sous la forme d’un Cloudflare Worker.

Installation
Lien direct vers Installation

Pour utiliser CloudflareDeployer, installez le package @mastra/deployer-cloudflare :

npm install @mastra/deployer-cloudflare@latest

Exemple d’utilisation
Lien direct vers Exemple d’utilisation

Importez CloudflareDeployer et définissez-le comme Deployer dans votre configuration Mastra :

src/mastra/index.ts
import { Mastra } from '@mastra/core'
import { CloudflareDeployer } from '@mastra/deployer-cloudflare'

export const mastra = new Mastra({
deployer: new CloudflareDeployer({
name: 'your-project-name',
routes: [
{
pattern: 'example.com/*',
zone_name: 'example.com',
custom_domain: true,
},
],
vars: {
NODE_ENV: 'production',
},
d1_databases: [
{
binding: 'DB',
database_name: 'my-database',
database_id: 'd1-database-id',
preview_database_id: 'your-preview-database-id',
},
],
kv_namespaces: [
{
binding: 'CACHE',
id: 'kv-namespace-id',
},
],
}),
})

Options du constructeur
Lien direct vers Options du constructeur

Le constructeur de CloudflareDeployer accepte les mêmes options de configuration que wrangler.jsonc. Consultez la documentation de configuration de Wrangler pour connaître toutes les options disponibles.

Secrets
Lien direct vers Secrets

Les variables d’environnement de votre fichier .env ne sont pas écrites dans wrangler.jsonc. Cela empêche l’ajout de secrets au système de gestion de versions.

Pour rendre les secrets de votre fichier .env accessibles à votre Cloudflare Worker, importez-les en tant que Secrets Cloudflare :

npx wrangler secret bulk .env

Utilisez vars dans le constructeur de CloudflareDeployer uniquement pour les valeurs de configuration non sensibles, telles que NODE_ENV.

Sortie de compilation
Lien direct vers Sortie de compilation

Après l’exécution de mastra build, le Deployer génère un fichier wrangler.jsonc conforme à la configuration Wrangler de Cloudflare. Ce fichier pointe vers des fichiers situés dans .mastra/output ; vous devez donc exécuter mastra build avant de procéder au déploiement avec Wrangler.

Bindings Cloudflare
Lien direct vers Bindings Cloudflare

Lorsque vous utilisez le Deployer Cloudflare, vous pouvez importer des bindings d’exécution depuis cloudflare:workers dans votre fichier de configuration Mastra. Mastra préserve automatiquement les imports d’exécution basés sur un protocole, comme cloudflare:workers, pendant mastra build, sans tenter de les installer en tant que dépendances npm.

src/mastra/index.ts
import { env } from 'cloudflare:workers'
import { Mastra } from '@mastra/core'
import { registerApiRoute } from '@mastra/core/server'
import { CloudflareDeployer } from '@mastra/deployer-cloudflare'

export const mastra = new Mastra({
deployer: new CloudflareDeployer({
name: 'my-worker',
kv_namespaces: [{ binding: 'CACHE', id: 'your-kv-namespace-id' }],
}),
server: {
apiRoutes: [
registerApiRoute('/bindings', {
method: 'GET',
requiresAuth: false,
handler: async c => {
await env.CACHE.put('status', 'ok')
return c.json({ status: await env.CACHE.get('status') })
},
}),
],
},
})
Conservez les bindings directement dans new Mastra({...})

Le plugin Babel de Mastra diffère l’exécution de new Mastra(...) afin que env soit disponible à ce moment-là. Le code placé en dehors de cet appel est évalué lors du chargement du module, avant que env ne soit renseigné.

// ✅ Works — binding is inside new Mastra(), so it's deferred
export const mastra = new Mastra({
storage: new D1Store({ binding: env.DB }),
})

// ❌ Breaks — env.DB is undefined at module load
const storage = new D1Store({ binding: env.DB })
export const mastra = new Mastra({ storage })