Ich benutze Lambda zu Firebase-Nachricht. Ich ref this. Aber die Lambda-Funktion noch Timeout, weil es keine Verbindung zum Google-Server herstellen kann.AWS Lambda mit Firebase-Admin initializeApp Zeitüberschreitung
handler.js
/ [START imports]
const firebase = require('firebase-admin');
const serviceAccount = require("../serviceAccount.json");
module.exports.message = (event, context, callback) => {
context.callbackWaitsForEmptyEventLoop = false;
const registrationToken = "xxxxxxx";
const payload = {
data: {
score: "850",
time: "2:45"
}
};
// [START initialize]
if(firebase.apps.length == 0) { // <---Important!!! In lambda, it will cause double initialization.
firebase.initializeApp({
credential: firebase.credential.cert(serviceAccount),
databaseURL: 'https://messaging-xxxxx.firebaseio.com'
});
}
// Send a message to the device corresponding to the provided
// registration token.
firebase.messaging().sendToDevice(registrationToken, payload)
.then(function(response) {
// See the MessagingDevicesResponse reference documentation for
// the contents of response.
console.log("Successfully sent message:", response);
callback(null, {
statusCode: 200,
body: JSON.stringify("Successful!"),
});
})
.catch(function(error) {
console.log("Error sending message:", error);
callback(null, {
statusCode: 500,
body: JSON.stringify({
"status": "error",
"message": error
})
})
});
};
Cloudwatch
[Error: Credential implementation provided to initializeApp() via the "credential" property failed to fetch a valid Google OAuth2 access token with the following error: "connect ETIMEDOUT 172.217.26.45:443".]
Aber ich gleiche serviceAccount.json auf meine EC2 und Arbeit finden laufen. Bekommt jemand das?
Wie haben Sie Ihre Datei 'serviceAccount.json' hinzugefügt? Ich nehme an, Sie haben eine Zip zu Lambda hochgeladen und es ist nicht nur Inline-Code? – Deif
Ist dieser Thread hilfreich? http://stackoverflow.com/questions/36508974/python-request-in-aws-lambda-timing-out – jwngr
@Deif ich benutze serverless um meine serviceAccount.json Datei hochzuladen. – Jim