Enviar SMS: Cómo usar la URL de la función AWS

enviar sms

Cómo usar la URL de la función AWS Lambda para enviar SMS en AWS

Un caso de uso para la nueva característica de AWS Lambda: enviar SMS

¡Hola a todos! Hoy vamos a hablar sobre la nueva función URL de función en Lambda. Usé esta nueva función en un pequeño proyecto que he estado haciendo para un cliente que implica enviar un SMS en AWS con una OTP personalizada.


¿Qué es la URL de función?

La URL de la función es una característica nueva de AWS Lambda que permite que una URL HTTPS invoque una función de Lambda. Cuando crea una URL de función, Lambda genera un extremo de URL único, como este:

https://<url-id>.lambda-url.<region>.on.aws

¿Cuál es la diferencia entre la URL de la función Lambda y la puerta de enlace API?

Si no necesita las funciones avanzadas de API Gateway, como el almacenamiento en caché, el escenario, la limitación o la autenticación, sino solo un punto final para invocar su lambda, puede usar el primero en su lugar.

No podrá administrar el código de estado, pero puede configurar el CORS para la URL de la función.

Cada vez que llama a una URL de función, hay una invocación de Lambda.

Por esta razón, la URL de la función es buena para un webhook, un servicio en el que no es necesario almacenar en caché el resultado de un servicio que necesita realizar una acción inmediata, como enviar un SMS.

Para este proyecto, uso SNS para enviar un SMS con un mensaje OTP.

¿Qué es SNS?

Amazon Simple Notification Service (Amazon SNS) es un servicio administrado que proporciona la entrega de mensajes de los editores a los suscriptores.

SNS tiene muchos canales para enviar notificaciones como correos electrónicos, notificaciones push, SMS, etc. El servicio es muy económico ($0.50 por millón de solicitudes), pero el servicio de SMS tiene un costo adicional y es diferente por país.

Cómo salir del modo Sandbox

El servicio de SMS tiene el modo sandbox, por lo que puede enviar SMS solo a números verificados. Si desea salir, debe abrir un caso de soporte desde la consola de AWS.

Para hacerlo, necesita información como “tipo de comunicación”, “país”, “límite gastado para el mes”, etc. Y un par de horas después de enviar, podrá enviar SMS a todas partes.

Un pequeño ejemplo

En la Plantilla SAM, he habilitado la URL de la función en la función Lambda:

SendSmsFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: ./src
Runtime: nodejs14.x
Handler: index.handler
Architectures:
— arm64
FunctionUrlConfig:
AuthType: NONE
Policies:
Statement:
— Sid: Sns
Effect: Allow
Action:
— sns:Publish
Resource:
— “*”

Y aquí está el código para enviar SMS con AWS SNS:

import { SNSClient, PublishCommand } from '@aws-sdk/client-sns';
const client = new SNSClient({});

const handler = async (event) => {
  if (!event.body) {
    return { message: 'Body not found' }
  }
  const { numberPhone, text } = JSON.parse(event.body);

  const params = {
    PhoneNumber: numberPhone,
    Message: text,
  };

  try {
    await client.send(new PublishCommand(params));
    return { message: 'Sms send successfully' };
  } catch (error) {
    return { message: error.message }
  }
};

export { handler };

Eso es todo por hoy. ¡Gracias por leer!

Recent Post