[vc_row el_class=”blog-info”][vc_column][vc_single_image source=”featured_image” img_size=”full” style=”vc_box_rounded”][vc_empty_space height=”40px”][vc_row_inner][vc_column_inner width=”1/6″][/vc_column_inner][vc_column_inner width=”2/3″][vc_column_text el_class=”font-weight-bold”]
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.
[/vc_column_text][vc_empty_space height=”40px”][/vc_column_inner][vc_column_inner width=”1/6″][/vc_column_inner][/vc_row_inner][vc_row_inner][vc_column_inner width=”1/6″][/vc_column_inner][vc_column_inner width=”2/3″][vc_column_text]
¿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!
[/vc_column_text][/vc_column_inner][vc_column_inner width=”1/6″][/vc_column_inner][/vc_row_inner][/vc_column][/vc_row][vc_row el_class=”social-info”][vc_column width=”1/6″][/vc_column][vc_column width=”2/3″][vc_row_inner][vc_column_inner width=”1/2″][vc_column_text][social_share_button themes=’theme1′][/vc_column_text][/vc_column_inner][vc_column_inner el_class=”youtube-inner-col” width=”1/2″][vc_column_text][likebtn theme=”youtube” lang=”auto” show_like_label=”0″ white_label=”1″ alignment=”right”][/vc_column_text][/vc_column_inner][/vc_row_inner][vc_row_inner el_class=”social-info-inner”][vc_column_inner width=”1/4″][vc_single_image image=”921″][/vc_column_inner][vc_column_inner width=”3/4″][vc_column_text]
Diego Pacheco
Ingeniero en Sitemas, MBA (Babson College). Desarrollador PHP/Java/JavaScript. Fundador & CEO de EpicStudio. Entusiasta de las tecnologías web (JavaScript, Vue, Laravel, AWS, Docker) Viajes, Negocios, Surf y Growth.[/vc_column_text][asvc_list_item icon_fontawesome=”fa fa-calendar-o” icon_size=”14px”]Programar una reunión[/asvc_list_item][/vc_column_inner][/vc_row_inner][/vc_column][vc_column width=”1/6″][/vc_column][/vc_row][vc_row][vc_column][vc_column_text]
Recent Post
[/vc_column_text][lvca_posts_carousel posts_query=”size:3|order_by:rand|post_type:post” image_linkable=”true” image_size=”full” taxonomy_chosen=”post_tag” display_title=”true” display_post_date=”true” display_summary=”true” autoplay_speed=”3000″ animation_speed=”300″ display_columns=”3″ scroll_columns=”3″ gutter=”3″ tablet_display_columns=”2″ tablet_scroll_columns=”2″ tablet_gutter=”3″ tablet_width=”800″ mobile_display_columns=”1″ mobile_scroll_columns=”1″ mobile_gutter=”3″ mobile_width=”480″][vc_empty_space height=”20px”][/vc_column][/vc_row]
