Ich versuche, von AWS Lambda auf S3 und Ressourcen auf meiner VPC zuzugreifen, aber seit ich mein AWS Lambda für den Zugriff auf VPC konfiguriert habe, läuft es beim Zugriff auf S3 ab. Hier ist der CodeHinzufügen von AWS Lambda mit VPC-Konfiguration verursacht Zeitüberschreitung beim Zugriff auf S3
from __future__ import print_function
import boto3
import logging
import json
print('Loading function')
s3 = boto3.resource('s3')
import urllib
def lambda_handler(event, context):
logging.getLogger().setLevel(logging.INFO)
# Get the object from the event and show its content type
bucket = event['Records'][0]['s3']['bucket']['name']
key = urllib.unquote_plus(event['Records'][0]['s3']['object']['key']).decode('utf8')
print('Processing object {} from bucket {}. '.format(key, bucket))
try:
response = s3.Object(bucket, key)
content = json.loads(response.get()['Body'].read())
# with table.batch_writer() as batch:
for c in content:
print(' Processing Item : ID' + str(c['id']))
# ##################
# Do custom processing here using VPC resources
# ##################
except Exception as e:
print('Error while processing object {} from bucket {}. '.format(key, bucket))
print(e)
raise e
ich meine Subnetze und Sicherheitsgruppen mit entsprechenden Outbound-Regeln festgelegt habe Internet zuzugreifen, wie unten gezeigt, aber mein Lambda einfach mal aus, wenn S3 zugreifen.
Hier ist eine Probe von Testeingang als auch
# Test Event Configuration
{
"Records": [
{
"awsRegion": "us-east-1",
"eventName": "ObjectCreated:Put",
"eventSource": "aws:s3",
"eventTime": "2016-02-11T19:11:46.058Z",
"eventVersion": "2.0",
"requestParameters": {
"sourceIPAddress": "54.88.229.196"
},
"responseElements": {
"x-amz-id-2": "ljEg+Y/InHDO8xA9c+iz6DTKKenmTaGE9UzHOAabarRmpDF1z0eUJBdpGi37Z2BU9nbTh4p7oZg=",
"x-amz-request-id": "3D98A2325EC127C6"
},
"s3": {
"bucket": {
"arn": "arn:aws:s3:::social-gauge-data",
"name": "social-gauge-data",
"ownerIdentity": {
"principalId": "A1NCXDU7DLYS07"
}
},
"configurationId": "b5540417-a0ac-4ed0-9619-8f27ba949694",
"object": {
"eTag": "9c5116c70e8b3628380299e39e0e9d33",
"key": "posts/test/testdata",
"sequencer": "0056BCDCF1F544BD71",
"size": 72120
},
"s3SchemaVersion": "1.0"
},
"userIdentity": {
"principalId": "AWS:AROAIUFL6WAMNRLUBLL3K:AWSFirehoseDelivery"
}
}
]
}
Dank Mark. Aber ich denke, es war eher ein Problem bei der Art, wie mein Lambda auftrat. Dieser Link gab mir ein besseres Verständnis dafür, was passieren könnte, wenn Lambda angerufen wird und ich es beheben konnte. https://aws.amazon.com/blogs/compute/container-reuse-in-lambda/ – blueskin
blueskin, wäre schön zu wissen, wie Sie es "repariert" .... – Aaron
mein RDS ist öffentlich verfügbar und Lambda ist nicht in VPC, noch Zeitüberschreitung. Irgendwelche Gedanken? – johnny