AWS Lambda Python S3 与 boto3,不知道为什么我收到错误

1 python amazon-s3 amazon-web-services aws-lambda

我已经注释掉了所有其他代码并将其移至顶部。仍然出现错误,根本不知道为什么。我已确认 IAM 是正确的,此 Lambda 函数附加了 S3FullAccess。我已经被困在这个问题上有一段时间了,我在搜索中找到的所有内容都没有帮助:/我的原始代码使用

import os
import pymysql
import json
import sys
import logging
import boto3
import zipfile
import tempfile

# logging.getLogger().setLevel(logging.INFO)
# logger = logging.getLogger()
# logger.setLevel(logging.INFO)

s3 = boto3.client('s3')

bucket = 'packages'
key = 'Packages/1005/v1005/1005.pkg'

def lambda_handler(event, context):
    try:
        data = s3.get_object(Bucket=bucket, Key=key)
        json_data = data['Body']

        return {
            'statusCode': '200',
            'body': str(type(json_data)),
        }

    except Exception as e:
        print(e)
        raise e

    sys.exit()
Run Code Online (Sandbox Code Playgroud)

执行后,这是我的结果,我将超时从默认值增加到 20 秒,以防可能只是超时:

{
  "errorMessage": "2020-03-10T03:49:45.400Z c51405a5-9eed-4167-8b6f-edf36beb9c15 Task timed out after 20.02 seconds"
}

Request ID:
"c51405a5-9eed-4167-8b6f-edf36beb9c15"

Function Logs:
START RequestId: c51405a5-9eed-4167-8b6f-edf36beb9c15 Version: $LATEST
END RequestId: c51405a5-9eed-4167-8b6f-edf36beb9c15
REPORT RequestId: c51405a5-9eed-4167-8b6f-edf36beb9c15  Duration: 20018.46 ms   Billed Duration: 20000 ms   Memory Size: 128 MB Max Memory Used: 81 MB  Init Duration: 382.35 ms    
2020-03-10T03:49:45.400Z c51405a5-9eed-4167-8b6f-edf36beb9c15 Task timed out after 20.02 seconds```
Run Code Online (Sandbox Code Playgroud)

Vla*_*lad 5

您的 lambda 是否在 VPC 子网内部运行?在这种情况下,您必须有正确的网络设置。子网需要有一个通往公共互联网的网关,或者最好有一个在 VPC 内部配置的 S3 端点。除了路由设置之外,lambda 的安全组还必须允许访问 S3。