【问题标题】:Using S3Client within Lambda seems to freeze the function在 Lambda 中使用 S3Client 似乎冻结了函数
【发布时间】:2021-05-29 00:49:18
【问题描述】:

我正在使用 Lambda 函数对上传的文件进行一些处理(图像大小调整、视频转换等)但是我正在努力让 lambda 函数从 S3 中获取任何内容。

目前在 S3 上传触发器上运行 Lambda 函数,它所要做的不是将文件从一个存储桶复制到另一个存储桶,但它似乎只是冻结了。

我在 CloudWatch 中收到一条日志,说明它已启动,我收到 File Uploaded... 消息,然后什么都没有,直到函数超时,无论我给它多少内存或超时,都会发生这种情况。

起初我认为这可能是权限,但我的 lambda 用户在 S3 和 Lambda 上拥有 FullPermission,我什至公开了我的存储桶。

我使用的函数代码是:

 public async Task<string> FunctionHandler(S3Event evnt, ILambdaContext context)
        {
            var s3Event = evnt.Records?[0].S3;
            if(s3Event == null) return null;

            try
            {
                context.Logger.LogLine("File Uploaded, Starting Copy");
                await S3Client.CopyObjectAsync(s3Event.Bucket.Name, s3Event.Object.Key, destinationBucket, s3Event.Object.Key);
                context.Logger.LogLine("Copy Completed.");


                return "Finished";
            }
            catch(Exception e)
            {
                context.Logger.LogLine($"Error getting object {s3Event.Object.Key} from bucket {s3Event.Bucket.Name}. Make sure they exist and your bucket is in the same region as this function.");
                context.Logger.LogLine(e.Message);
                context.Logger.LogLine(e.StackTrace);
                throw;
            }
        }

【问题讨论】:

  • 您的函数是否在 VPC 中运行?
  • 是的,我仔细检查了 VPC 权限,有趣的是我刚刚运行了与控制台应用程序相同的代码,它运行良好。
  • 补充jellycsc 的问题:您的VPC 是否有允许Lambda 访问S3 的NAT?另外,你的超时时间是多少?
  • 可能对背景有帮助:stackoverflow.com/questions/52992085/…

标签: c# amazon-web-services amazon-s3 aws-lambda


【解决方案1】:

您的 AWS Lambda 函数可能已配置为使用 VPC

当函数配置为使用 VPC 时,该函数可以直接访问 Internet,因此可以直接访问 Amazon S3。

但是,当函数配置为使用 VPC 时,它确实可以直接访问 Internet。如果函数确实需要 VPC 访问权限(例如,还访问 VPC 内的资源),则可以通过以下方式授予 S3 访问权限:

  • 在 VPC 中为 Amazon S3 添加 VPC 终端节点,或
  • 将 Lambda 函数连接到私有子网,然后在公有子网中启动 NAT 网关,并在私有子网上使用路由表条目将 Internet 绑定流量定向到 NAT 网关

当然,最简单的解决方案是尽可能将函数连接到 VPC。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-03
    • 1970-01-01
    • 2021-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多