2017-05-17 6 views
1

Ich habe versucht, durch mein erstes Tutorial auf Lambda Dynamob Verbindungen zu arbeiten und läuft in einen Timeout-Fehler.Lambda Python Dynamodb schreiben bekommt Zeitfehler

In der Lambda-Konsole ich den folgenden Code haben:

from __future__ import print_function 
import json 
import boto3 

print('Loading function') 

def lambda_handler(event, context): 

    dynamodb = boto3.resource('dynamodb', region_name='us-east-1', endpoint_url="http://localhost:8000") 
    print('Dynamodb loaded') 
    pages_table = dynamodb.Table('Pages') 
    print('Pages table referenced') 

    for item in event: 
     print('Item: {}'.format(item)) 
     response = pages_table.put_item(Item=item) 
     print('Response: {}'.format(response)) 

    return "hi" 

ich die Seiten-Tabelle über die DynamoDB Konsole erstellt haben.

Wenn ich die Lambda-Funktion aus der Lambda-Konsole testen, laufen, erhalte ich:

START RequestId: 4008f77f-3b3e-11e7-ad79-0713f3bd7f4e Version: $LATEST 
Dynamodb loaded 
Pages table referenced 
Item: {'UID': 1, 'id': 1, 'label': 'Original', 'snippet': 'Style', 'type': 'item', '$$hashKey': 'object:4'} 
END RequestId: 4008f77f-3b3e-11e7-ad79-0713f3bd7f4e 
REPORT RequestId: 4008f77f-3b3e-11e7-ad79-0713f3bd7f4e Duration: 3002.30 ms  
Billed Duration: 3000 ms Memory Size: 128 MB Max Memory Used: 36 MB 
2017-05-17T20:20:24.159Z 4008f77f-3b3e-11e7-ad79-0713f3bd7f4e Task timed out after 3.00 seconds 

Meine Debuggen print-Anweisungen zeigen, dass die erste pages_table.put_item() ist, wo die Timeout geschieht, da es keine nachfolgenden Druck der Antwort . (Ich habe ein paar Elemente in meinem Artikel-Array zum Testen)

Wenn ich meine Dynamodb-Tabelle überprüfe gibt es keine Daten in der Tabelle, auch Tage später.

Ich denke, ich habe alle Schritte in der AWS-Dokumentation zum Erstellen einer dynamob über lambda (IAM-Berechtigungen, dynamob Tabelle Schlüssel, usw.) genau verfolgt, wurden aber bei der Suche nach anderen Instanzen von ähnlichen Erfahrungen mit Timeouts ratlos. Die nähesten Dinge, die ich finden kann, verweisen auf die VPC-Konfiguration, aber das scheint für mich mit diesem im Wesentlichen Standard-Setup aus den Tutorials keinen Sinn zu ergeben, da in den Tutorials das VPC-Setup nicht erwähnt wurde. Auch wenn ich in die VPC-Konsole gegraben habe, schienen die Einstellungen dort standardmäßig zu sein.

Was fehlt mir?

Antwort

2

Die Endpunkt-URL für DynamoDB scheint falsch zu sein:

endpoint_url="http://localhost:8000" 

Dies ist nur für die lokale Prüfung von DynamoDB verwendet wird. Von Lambda-Funktion muss der Endpunkt für die us-east-1:

endpoint_url="https://dynamodb.us-east-1.amazonaws.com" 

Gemäß dem AWS Regions and Endpoints Dokument.

+0

Vielen Dank. Dies brachte mich zu einem nicht verwandten Fehler, daher werde ich dies als beantwortet markieren, da ich die Zeitüberschreitung nicht mehr erhalte. – Doug