2017-07-10 3 views
0

Ich kämpfe mit einem Cron-Job mit gesicherten URL in Google App-Engine. Sobald ich hinzufügen login: admin in der app.yaml, kann der Job nicht starten (sonst funktioniert es wie ein Charme).Secured Cron Job für Google App Engine startet nicht (Node js)

Hier ist mein Code:

  • app.js

    const express = require('express'); 
     
    const app = express(); 
     
    
     
    app.get('/', (req, res) => { 
     
        res.status(200).send('Hello, world!').end(); 
     
    }); 
     
    
     
    app.get('/admin', function(req, res){ 
     
    \t res.status(200).send('Hello, admin!').end(); 
     
    }); 
     
    
     
    
     
    // Start the server 
     
    const PORT = process.env.PORT || 8080; 
     
    app.listen(PORT,() => { 
     
        console.log(`App listening on port ${PORT}`); 
     
        console.log('Press Ctrl+C to quit.'); 
     
    });

  • app.yaml

    runtime: nodejs 
     
    env: flex 
     
    
     
    handlers: 
     
    - url:/
     
        script: app.js 
     
        
     
    - url: /admin 
     
        login: admin 
     
        script: app.js

  • cron.yaml

    cron: 
     
    - description: daily summary job 
     
        url: /admin 
     
        schedule: every 12 mins 
     
        target: default

Und das Ergebnis: cron failure

Jeder Hinweis auf das, was ich fehle?

Vielen Dank im Voraus

Antwort

0

Die login Einstellung unter handlers jetzt für die App Engine flexible Umgebung ist veraltet. https://cloud.google.com/appengine/docs/flexible/nodejs/upgrading

login: admin sollte aus Ihrer App.yaml entfernt werden.

Sie können die URL immer noch sichern, indem Sie in Ihrem Code nach dem X-Appengine-Cron-Header suchen.

app.get('/admin', function(req, res){ 
    if (req.get('X-Appengine-Cron') !== 'true') { 
     return res.status(401).end(); 
    } 
    res.status(200).send('Hello, admin!'); 
}); 

Per der docs

der X-appengine-Cron-Header wird intern von Google App Engine gesetzt. Wenn Ihr Anforderungshandler diesen Header findet, kann er darauf vertrauen, dass die Anfrage eine Cron-Anfrage ist. Wenn die Kopfzeile in einer externen Benutzeranforderung für Ihre App vorhanden ist, wird sie entfernt, mit Ausnahme von Anforderungen von angemeldeten Administratoren der Anwendung, die die Kopfzeile für Testzwecke festlegen dürfen.

Verwandte Themen