Javascript 跨区域调用AWS服务

Javascript 跨区域调用AWS服务,javascript,amazon-web-services,aws-lambda,amazon-sns,Javascript,Amazon Web Services,Aws Lambda,Amazon Sns,我试图使用位于圣保罗(sa-east-1)的SNS,它来自俄亥俄州(us-east-2)的lambda函数(Node.js 8.10)。这是我第一次尝试使用位于其他地区的AWS服务。到目前为止,我正在做的就是: //初始化aws资源 const AWS=require('AWS-sdk'); const sns=新的AWS.sns({apiVersion:'2010-03-31',region:'sa-east-1'}); //承诺AWS.SNS.createPlatformEndpoint方法

我试图使用位于圣保罗(sa-east-1)的SNS,它来自俄亥俄州(us-east-2)的lambda函数(Node.js 8.10)。这是我第一次尝试使用位于其他地区的AWS服务。到目前为止,我正在做的就是:

//初始化aws资源
const AWS=require('AWS-sdk');
const sns=新的AWS.sns({apiVersion:'2010-03-31',region:'sa-east-1'});
//承诺AWS.SNS.createPlatformEndpoint方法
snsCreatePlatformEndpoint=params=>new Promise(
(解决、拒绝)=>{
createPlatformEndpoint(参数、函数(错误、数据){
如果(错误){拒绝(错误);}
else{解析(数据);}
});
}
);
exports.handler=(awsEvent、上下文、回调)=>{
//在这里分析东西
...
HandleToken(令牌、回调);
};
异步函数HandleToken(令牌、回调){
试一试{
设params={
平台应用程序rn:process.env.PlatAppArn,
令牌:令牌,
};
console.log('params:',params);//按预期打印
让{EndpointArn}=等待snsCreatePlatformEndpoint(参数);
console.log('应该通过这里');//未打印
//返回成功响应
...
}捕获(错误){
//返回错误响应
...
}
}
我为lambda函数设置了一个非常高的超时:5分钟

我还对位于圣保罗的lambda函数(sa-east-1)测试了相同的代码,它可以工作

我在我的客户机上收到以下错误: “请求失败,状态代码为504” “终结点请求超时”


问题:如何在另一个AWS地区正确使用SNS?

除了设置地区外,您不需要进行任何特殊设置

例如,我使用以下模式从us-east-1向东京(ap-northeast-1)发送通知:


未设置端点等。您是否需要在VPC中运行lambda?这是目前我能想到的唯一复杂问题。

也许你不必设置区域-如果你不设置它会发生什么?@mjwatts同样的事情。我的问题是在VPC内运行lambda。非常感谢。
// this lambda runs in us-east-1

let AWS = require("aws-sdk");
AWS.config.update({ region: "ap-northeast-1" }); // asia-pacific region

exports.handler = async (event, context) => {
    var params = {
      Message: 'my payload',
      TopicArn: 'arn:aws:sns:ap-northeast-1:xxxxxx:tokyoSNS'
    };

    let SNS = new AWS.SNS({apiVersion: '2010-03-31'});
    var data = await SNS.publish(params).promise();

    // check if successful then return    
}