私はLambda to Firebaseメッセージを使用します。私は参照してください。しかし、ラムダ機能はまだGoogleサーバーに接続できないためタイムアウトしています。AWS Lambdaをfirebase-admin initializeAppタイムアウトを使用して
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".]
しかし、私は私のEC2と仕事検索で実行するために同じserviceAccount.jsonを使用しています。 誰かがこれに遭遇しますか?
'serviceAccount.json'ファイルはどのように追加しましたか?私はあなたがLambdaにzipをアップロードしたと仮定し、それは単なるインラインコードではない? – Deif
このスレッドは役に立ちましたか? http://stackoverflow.com/questions/36508974/python-request-in-aws-lambda-timing-out – jwngr
@Deif serverlessを使用してserviceAccount.jsonファイルをアップロードします。 – Jim