SNS Publish Timeout when using Lambda

0

I am trying to send a email using SNS after connecting and executing a mysql query. My code works until I add the sns publish to my script. When this is done the Lambda function times out. I have tried increasing timeout, verified that the execution role has sns:publish assigned and sent a email from the SNS Console successfully.

Here is my code snippet for the push to SNS.

import sys
import logging
import pymysql
import json
import os
import boto3
import calendar
import time

username = 'removed'
password = 'removed'
rds_proxy_host = 'removed'
db_name = 'classicmodels'
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)



try:
    conn = pymysql.connect(host=rds_proxy_host, user=username, passwd=password, db=db_name, connect_timeout=5)
except pymysql.MySQLError as e:
    logger.error("ERROR: Unexpected error: Could not connect to MySQL instance.")
    logger.error(e)
    sys.exit(1)
logger.info("SUCCESS: Connection to RDS for MySQL instance succeeded")

def lambda_handler(event, context):
    
    snsclient = boto3.client('sns')
    snsarn = ('removed')
    
    snsclient.publish(TopicArn=snsarn,Message='s3TriggeredRefresh Demo has successfully executed')
    print("Message published")
    return {"statusCode": 200,"body": "Function Completed Successfully!!"}
3개 답변
1
수락된 답변

Hello.

Will your Lambda connect to resources (RDS or EC2) within your VPC?
In that case, you need to create a NAT Gateway or Amazon SNS VPC endpoint in the VPC linked to Lambda and configure it to communicate with the Amazon SNS service.
When creating a NAT gateway, add a route for the NAT gateway to the route table of the subnet associated with Lambda.
https://repost.aws/knowledge-center/internet-access-lambda-function
https://docs.aws.amazon.com/sns/latest/dg/sns-vpc-create-endpoint.html

profile picture
전문가
답변함 3달 전
profile picture
전문가
검토됨 2달 전
0

I did not know that this was a requirement. My Lambda can publish to the SNS topic if it is the only service used. Is there a reason why that works without the end point?

Monty
답변함 3달 전
0

Thanks @Riku for your direction. I added the SNS VPC Endpoint and my SNS publish action is working again.

Monty
답변함 3달 전

로그인하지 않았습니다. 로그인해야 답변을 게시할 수 있습니다.

좋은 답변은 질문에 명확하게 답하고 건설적인 피드백을 제공하며 질문자의 전문적인 성장을 장려합니다.

질문 답변하기에 대한 가이드라인

관련 콘텐츠