【发布时间】:2021-02-28 09:55:30
【问题描述】:
我有一个 AWS .NET Core lambda,我在其中将图像上传到 S3 存储桶。
这在使用测试工具的开发模式下运行良好,但是一旦我发布,它就会超时并且没有错误消息。
这是我在尝试上传到 S3 之前将 base64 图像转换为字节数组的代码。
上传时卡住了。我也尝试过UploadAsync 方法,它的作用相同。
s3Client = new AmazonS3Client(apiKey, apiSecret, bucketRegion);
var fileTransferUtility = new TransferUtility(s3Client);
var bytes = Convert.FromBase64String(body.ImgB64.Split(',')[1]);
using var contents = new MemoryStream(bytes);
fileTransferUtility.Upload(contents, bucketName, filePath + "/" + keyName);
我想知道这是否与将对象上传到 S3 存储桶所需的权限有关?
我目前正在使用一个 IAM 用户,该用户使用 AWS 提供的密钥和秘密对存储桶具有写入权限,如上所述,这在开发模式下工作正常。
我还授予了用于 lambda S3 完全访问权限的 IAM 角色。
谁能帮忙?
【问题讨论】:
-
你的 lambda 在 VPC 中吗?
-
不确定,如何检查?
-
导致 lambda 超时的常见原因通常是由于将其放置在 VPC 中。如果您没有明确这样做,那么它可能不在 VPC 中。您可以在 AWS lambda 控制台中检查它。在底部会有部分
VPC。 -
您可以检查 2 件事 - 是否在 VPC 中,如上所述,并检查您的 AWS Lambda 函数超时时间(默认为 3 秒,最长为 15 分钟)
-
我认为是 VPN,我需要做些什么来解决这个问题。超时已增加到 30 秒
标签: c# amazon-web-services amazon-s3 .net-core aws-lambda