【发布时间】:2019-10-01 16:26:56
【问题描述】:
我正在尝试通过俄亥俄州 (us-east-2) 上的 lambda 函数 (Node.js 8.10) 使用位于圣保罗 (sa-east-1) 的 SNS。这是我第一次尝试使用位于另一个区域的 AWS 服务。到目前为止,这就是我正在做的事情:
//init aws resources
const AWS = require('aws-sdk');
const sns = new AWS.SNS({apiVersion: '2010-03-31', region: 'sa-east-1'});
//promisefy AWS.SNS.createPlatformEndpoint method
snsCreatePlatformEndpoint = params => new Promise(
(resolve, reject)=>{
sns.createPlatformEndpoint(params, function(error, data){
if (error) { reject(error); }
else { resolve(data); }
});
}
);
exports.handler = (awsEvent, context, callback) => {
//parse stuff in here
...
HandleToken(token, callback);
};
async function HandleToken(token, callback){
try{
let params = {
PlatformApplicationArn: process.env.PlatAppArn,
Token: token,
};
console.log('params:', params); // this prints as expected
let {EndpointArn} = await snsCreatePlatformEndpoint(params);
console.log('It should pass through here'); // it is not printed
//returns a success response
...
} catch (error) {
//returns an error response
...
}
}
我为我的 lambda 函数设置了一个非常高的超时时间:5 分钟。
我还在位于圣保罗 (sa-east-1) 的 lambda 函数上测试了相同的代码,并且它可以工作。
我的客户端收到以下错误: “请求失败,状态码 504” “端点请求超时”
问题:如何在其他 AWS 区域正确使用 SNS?
【问题讨论】:
-
也许你不必设置区域 - 如果你不设置会发生什么?
-
@mjwatts 同样的事情。
标签: javascript amazon-web-services aws-lambda amazon-sns