【问题标题】:Can I use AWS SNS SMS Service (Ireland) from EC2 instance in Frankfurt我可以从法兰克福的 EC2 实例使用 AWS SNS SMS 服务(爱尔兰)吗
【发布时间】:2018-01-09 18:18:01
【问题描述】:

我在 EU-CENTRAL-1 区域有一个 EC2 实例,它运行一个 docker 映像。 docker 镜像需要能够通过 EU-WEST-1 区域中的 SNS 发送短信。

据我了解,默认情况下,实例应该能够通过安全组访问外部互联网,让所有出站通信都通过。但是我是否必须设置一些东西以允许实例访问爱尔兰的 SNS?

我正在使用以下代码,但 AWS 的响应好像我在 SMS 不可用的 EU-CENTRAL-1 区域中使用了 SNS。

// Setup AWS SNS
        AWS.config.update({
          region: 'eu-west-1',
          accessKeyId: process.env.AWS_ACCESS_KEY_ID,
          secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY
        });
        var sns = new AWS.SNS();


        var params = {
          Message: "SMS message test",
          MessageStructure: 'string',
          PhoneNumber: '0045xxxxxxxx',
          Subject: 'Alarm',
          MessageAttributes :{
            'AWS.SNS.SMS.SenderID': {
              'DataType': 'String',
              'StringValue': 'MySender'
            },
            'AWS.SNS.SMS.SMSType': 'Transactional'
          }
        }; 

【问题讨论】:

  • 对我来说更好的方法是调用一个 API-Gateway 端点来执行一个 lambda 函数。它更清洁,更便于维护。如果您喜欢这个想法,请告诉我,我会将步骤放在答案中。
  • @EleazarEnrique 我想看看那个解决方案。谢谢

标签: amazon-web-services amazon-ec2


【解决方案1】:

你必须在实例化变量sns时设置区域:

var sns = new AWS.SNS({region:'eu-west-1'});

【讨论】:

  • 我实际上尝试过这种方式与在 AWS 更新配置中设置区域进行比较。没有区别。但我想如果我必须在跨区域的同一 nodejs 脚本中使用 AWS 的多项服务 - 你的答案是让 SNS 服务只使用 EU-WEST-1 的正确方法。
  • @PeterSavnik 是的,在对象创建中设置区域可以让您更好地控制您使用的区域
【解决方案2】:

我通过找到运行 docker 映像的实例并编辑 IAM 角色以允许其访问 SNS 解决了这个问题。重启实例后,SNS 服务运行良好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多