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.
InstallationLien direct vers Installation
Pour utiliser CloudflareDeployer, installez le package @mastra/deployer-cloudflare :
- npm
- pnpm
- Yarn
- Bun
npm install @mastra/deployer-cloudflare@latest
pnpm add @mastra/deployer-cloudflare@latest
yarn add @mastra/deployer-cloudflare@latest
bun add @mastra/deployer-cloudflare@latest
Exemple d’utilisationLien direct vers Exemple d’utilisation
Importez CloudflareDeployer et définissez-le comme Deployer dans votre configuration Mastra :
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 constructeurLien 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.
SecretsLien 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 compilationLien 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 CloudflareLien 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.
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') })
},
}),
],
},
})
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 })