2016-12-12 21 views
1

AWS LambdaのPython APIを使用してSQSメッセージに書き込もうとしていますが、タイムアウトを試すものは何もありません。失敗)。私はその役割のためにSQSフルアクセスを設定しました。ファンクションログが適切な場所に届いていますが、最後の行にはAWS Lambda Python APIを使用したAWS SQSキューへのメッセージの送信

Starting new HTTPS connection (1): eu-west-1.queue.amazonaws.com 

がタイムアウトする前に表示されます。 AWSコンソール内のテストクライアントを使用してテストしています。

ハンドラのコードは次のとおりです。

import boto3 
import logging 
import os 

logger = logging.getLogger() 
logger.setLevel(logging.DEBUG) 

QUEUE_NAME = os.getenv("QUEUE_NAME") 
SQS = boto3.client("sqs") 

def getQueueURL(): 
    """Retrieve the URL for the configured queue name""" 
    q = SQS.get_queue_url(QueueName=QUEUE_NAME).get('QueueUrl') 
    logger.debug("Queue URL is %s", QUEUE_URL) 
    return q 

def record(event, context): 
    """The lambda handler""" 
    logger.debug("Recording with event %s", event) 
    data = event.get('data') 
    try: 
     logger.debug("Recording %s", data) 
     u = getQueueURL() 
     logging.debug("Got queue URL %s", u) 
     resp = SQS.send_message(QueueUrl=u, MessageBody=data) 
     logger.debug("Send result: %s", resp) 
    except Exception as e: 
     raise Exception("Could not record link! %s" % e) 

常にキューのURLを取得する上でタイムアウトするようです。なぜこれがあり、どのようにして実際にそれが起こるのを防ぐことができるので、キューに書き込むことができますか?

+1

ラムダ関数をVPC内に配置しましたか? –

+1

正確に機能したのは? VPCには役割がないので、あなたが何を言っているのかは分かりません。 –

+0

ラムダ関数へのVPC割り当てを削除しました。混乱させて申し訳ありません。 –

答えて

0

私はこの機能をVPCと関連するサブネットに割り当てていましたが、これにより外部リソースへのアクセスが妨げられていました。これを削除すると問題が解決しました。

関連する問題