【问题标题】:Accessing AWS Pinpoint in Lambda from Behind VPC从 VPC 后面访问 Lambda 中的 AWS Pinpoint
【发布时间】:2021-04-05 20:27:58
【问题描述】:

我的目标是使用 NodeJS 和 AWS Pinpoint 网关从 VPC 后面通过 AWS Pinpoint 发送 SMS 消息。我使用的代码在我的本地机器和没有 VPC 限制的 SAM 上运行良好。我添加了一个带有安全组的 SNS 和 SMS VPC 终端节点,让我可以单独访问每个服务。我可以使用 aws-sdk SNS 服务发送短信。

我似乎无法让 Lambda 使用 pinpoint 发送 SMS 消息。这可能吗?我似乎找不到 Pinpoint 服务的端口?是否可以避免暴露对 VPN 的 Internet 访问以通过 AWS Pinpoint 发送消息?

角色:分配所有 Pinpoint 角色、SMS 和 SNS 权限以进行测试。

消息配置:

    const AWS = require("aws-sdk");
    AWS.config.update({region: process.env.SMS_REGION});
    const PINPOINT = new AWS.Pinpoint({apiVersion: '2016-12-01'}); 
    const PINPOINT_APP_ID = process.env.PINPOINT_APP_ID;
    const params = {
    ApplicationId: PINPOINT_APP_ID,
    MessageRequest: {
     Addresses: {
       [number]: {
         ChannelType: 'SMS'
       }
     },
     MessageConfiguration: {
       SMSMessage: {
           Body: message,
           OriginationNumber: origination_number,
           SenderId: "senderId",
           MessageType: process.env.SMS_MESSAGE_TYPE
       }
     }
    }
};
await PINPOINT.sendMessages(params, (err, data) => {});

地区:us-west-2

【问题讨论】:

    标签: amazon-web-services sms amazon-vpc aws-pinpoint


    【解决方案1】:

    AWS Pinpoint 没有 VPC 接口终端节点,如此 AWS list 中所示。因此,您需要通过互联网访问该服务。

    对于您的 lambda,您必须将其放置在 私有子网 中,而 NAT 网关位于公共子网中。感谢 NAT,您的 lambda 函数将能够访问 pinpoint 服务。

    替代方法是使用与其他 lambda 集成作为代理的 私有 API 网关。不是理想的解决方案,但最终您必须以一种或另一种方式通过互联网。

    【讨论】:

      猜你喜欢
      • 2017-02-08
      • 2020-09-28
      • 2019-09-18
      • 2019-06-04
      • 2018-09-23
      • 2020-03-22
      • 1970-01-01
      • 2020-11-30
      • 2016-09-12
      相关资源
      最近更新 更多