为什么我的AWS服务中的lambda函数出现超时问题?

时间:2020-10-22 19:18:23

标签: python amazon-web-services aws-lambda event-handling

这是我的代码(目的是在不更改存储桶的情况下调整要上传的图像的大小):

import boto3
import os
import pathlib
from io import BytesIO
from PIL import Image


s3 = boto3.resource('s3')

def delete_this_bucket(name):
    bucket = s3.Bucket(name)
    for key in bucket.objects.all():
        try:
            key.delete()
            bucket.delete()
        except Exception as e:
            print("SOMETHING IS BROKEN !!")

def create_this_bucket(name, location):
    try:
        s3.create_bucket(
            Bucket=name,
            CreateBucketConfiguration={
                'LocationConstraint': location
            }
        )
    except Exception as e:
        print(e)

def upload_test_images(name):
    for each in os.listdir('./testimage'):
        try:
            file = os.path.abspath(each)
            s3.Bucket(name).upload_file(file, each)
        except Exception as e:
            print(e)

def copy_to_other_bucket(src, des, key):
    try:
        copy_source = {
            'Bucket': src,
            'Key': key
        }
        bucket = s3.Bucket(des)
        bucket.copy(copy_source, key)
    except Exception as e:
        print(e)


def resize_image(src_bucket, des_bucket):
    size = 600, 400
    bucket = s3.Bucket(src_bucket)
    in_mem_file = BytesIO()
    client = boto3.client('s3')

    for obj in bucket.objects.all():
        file_byte_string = client.get_object(Bucket=src_bucket, Key=obj.key)['Body'].read()
        im = Image.open(BytesIO(file_byte_string))

        im.thumbnail(size, Image.ANTIALIAS)
        # ISSUE : https://stackoverflow.com/questions/4228530/pil-thumbnail-is-rotating-my-image
        im.save(in_mem_file, format=im.format)
        in_mem_file.seek(0)

        response = client.put_object(
            Body=in_mem_file,
            Bucket=des_bucket,
            Key='resized_' + obj.key
        )

def lambda_handler(event, context):
    bucket = s3.Bucket('bucketname')

    for obj in bucket.objects.all():
        copy_to_other_bucket(bucket, 'bucketname', obj.key)

    resize_image(bucket.name, 'bucketname')


    print(bucket)

但是我已按照本指南[Document] [1]

的格式将其上传为Zip文件(13mb)

测试时得到的日志输出:

START RequestId: ec37dbf0-f2d4-4e31-9119-aef3ea895bf8 Version: $LATEST
END RequestId: ec37dbf0-f2d4-4e31-9119-aef3ea895bf8
REPORT RequestId: ec37dbf0-f2d4-4e31-9119-aef3ea895bf8  Duration: 3003.81 ms    Billed Duration: 3000 ms    Memory Size: 128 MB Max Memory Used: 39 MB  
2020-10-22T19:03:16.518Z ec37dbf0-f2d4-4e31-9119-aef3ea895bf8 Task timed out after 3.00 seconds

我尝试更改超时设置,但仍然无济于事。有谁知道为什么会发生此错误?

更新

我已解决此问题,但现在问题在于ssl验证 整个输出是:

"errorMessage": "SSL validation failed for https://Website1.s3.eu-west-3.amazonaws.com/?encoding-type=url [Errno 2] No such file or directory",
  "errorType": "SSLError",
  "stackTrace": [
    "  File \"/var/task/lambda_function.py\", line 74, in lambda_handler\n    for obj in bucket.objects.all():\n",
    "  File \"/var/task/boto3/resources/collection.py\", line 83, in __iter__\n    for page in self.pages():\n",
    "  File \"/var/task/boto3/resources/collection.py\", line 166, in pages\n    for page in pages:\n",
    "  File \"/var/task/botocore/paginate.py\", line 255, in __iter__\n    response = self._make_request(current_kwargs)\n",

您能帮我吗? [1]:https://docs.aws.amazon.com/lambda/latest/dg/with-s3-example-deployment-pkg.html#with-s3-example-deployment-pkg-python

0 个答案:

没有答案
相关问题