ca9*_*3d9 5 c# amazon-s3 amazon-web-services aws-lambda
我使用 Visual Studio 和 aws 工具包创建了一个新的 AWS S3 文件,并生成了以下代码。
public async Task<string> FunctionHandler(S3Event evnt, ILambdaContext context)
{
var s3Event = evnt.Records?[0].S3;
if(s3Event == null)
{
return null;
}
try
{
var response = await this.S3Client.GetObjectMetadataAsync(s3Event.Bucket.Name, s3Event.Object.Key);
return response.Headers.ContentType;
}
catch(Exception e)
{
var msg = $"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(msg);
context.Logger.LogLine(e.Message);
context.Logger.LogLine(e.StackTrace);
Log.Error($"S3 notification error: {msg}\n{e.Message}\n{e.StackTrace}");
throw;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我将文件上传到 S3 存储桶时,它在 CloudWatch 中出现以下错误,
从存储桶 myBucket 获取对象 filename.xlsx 时出错。确保它们存在并且您的存储桶与此函数位于同一区域。
桶和 lambda 都在俄勒冈州?
我有完全相同的问题。就我而言,问题在于 lambda 函数的执行角色。显然,它没有足够的权限。为了解决这个问题,我首先删除了角色中的所有策略,并添加了以下三个:
我给了它一些时间,重新运行我的 lambda 函数,这次它起作用了。这样,我确定问题是由于权限造成的。但让权限保持打开状态并不是一个好的做法。从这里,您可以根据您自己的用例开始限制 lambda 函数执行角色的权限,以找到适合您的工作的最少权限。
| 归档时间: |
|
| 查看次数: |
1921 次 |
| 最近记录: |