【发布时间】:2022-09-11 14:00:04
【问题描述】:
作为 AWS Step Function 流程的一部分,分批运行 20 个或更多,我有一个 Lambda (A),它成功地将文件保存到 s3,然后是另一个 Lambda (B),它使用 boto3 get_object 下载它以进行进一步处理。奇怪的是;由于第二个 Lambda (B) 遇到了ClientError: An error occurred (AccessDenied),因此某些阶跃函数迭代失败,而阶跃函数的某些迭代成功且没有错误。
根据 AWS;保存到 s3 的文件应在保存后立即可用。
两个 Lambda 的政策是这个
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:Abort*",
"s3:DeleteObject*",
"s3:GetBucket*",
"s3:GetObject*",
"s3:List*",
"s3:PutObject",
"s3:PutObjectLegalHold",
"s3:PutObjectRetention",
"s3:PutObjectTagging",
"s3:PutObjectVersionTagging"
],
"Resource": [
"arn:aws:s3:::filesbucket",
"arn:aws:s3:::filesbucket/*"
],
"Effect": "Allow"
}
]
}
我尝试在 Lambda (B) 中添加一个 boto3 get_waiter('object_exists') 但这没有帮助,并且一些 Step Function 迭代因Waiter ObjectExists failed: An error occurred (403): Forbidden 而失败
任何帮助将不胜感激。
【问题讨论】:
-
不要在同一个 Step Functions 中进行上传和下载,而是使用 S3 Event 触发 Step 函数进行创建。这样您就不必担心 S3 对象已准备就绪。
-
谢谢,这可能是一个可行的解决方案,尽管我更愿意坚持这个原始架构,而且我觉得我错过了一些东西。
标签: amazon-web-services amazon-s3 aws-lambda aws-step-functions