amazon-web-services - tutorial - porque usar lambda aws
Agregar AWS Lambda con configuraciĆ³n de VPC provoca un tiempo de espera excedido al acceder a S3 (1)
Una vez que habilita el soporte de VPC en Lambda, su función ya no tiene acceso a nada fuera de su VPC, que incluye S3. Con S3 específicamente, puede usar VPC Endpoints para resolver esto. Para casi cualquier otra cosa que no sea su VPC, deberá crear una instancia NAT o una puerta de enlace NAT administrada en su VPC para enrutar el tráfico de sus funciones Lambda a puntos finales fuera de su VPC.
Leería el anuncio de soporte de Lambda VPC y prestaría especial atención a la sección "Cosas que debe saber" al final.
Estoy intentando acceder a S3 y los recursos en mi VPC de AWS Lambda, pero desde que configuré mi AWS Lambda para acceder a VPC, se agota el tiempo de espera al acceder a S3. Aquí está el código
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
He configurado mis subredes y grupos de seguridad con las reglas de salida apropiadas para acceder a Internet, como se muestra a continuación, pero mi Lambda simplemente agota el tiempo de espera al acceder a S3.
Aquí hay una muestra de entrada de prueba también
# 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"
}
}
]
}