我正在尝试使用boto3将源存储桶中一个文件夹中的文件复制到源文件夹下同一存储桶中的另一个文件夹。
源存储桶:测试
源路径:A / B / C / D / E / F ..
我在C中有一些文件,需要移到E。
我的问题是,lambda为此循环运行。我有这个lambda,当我的文件进入C时被触发,然后ut触发另一个执行其他操作。现在在这两者之间,我必须将文件从C移到E,然后触发lambda来执行下一个操作。
任何人都知道我如何解决循环运行的lambda问题?
答案 0 :(得分:1)
在S3中没有文件夹。您最好将其视为存储桶键值。 您在控制台中看到的类似于文件夹的表示形式只是可视化效果。
您的Lambda由存储桶中的文件修改事件触发。您必须使用S3事件的前缀和后缀。
您控制在S3中放置的文件的名称吗?
是的。假设您的文件名始终以new
开头。使用前缀A/B/C/new
设置活动。当文件进入A/B/C/new...
时,由于匹配前缀而触发lambda,而当同一文件进入A/B/C/D/E/new...
时,则由于前缀不匹配而未触发lambda。
否。然后更改您的文件夹层次结构。使用前缀A/B/C/
设置活动。将文件移动到不是以A/B/C
开头的任何键(例如“文件夹”),例如A/B/E
。因此,第二个键将与前缀不匹配。
后缀没有任何帮助,除非您可以重命名文件的后缀。如果您能够重命名该文件,则可以使用后缀.abc
创建一个事件,并且在移动该文件时,可以将其重命名为以.xyz
结尾的事件。因此,无论.abc
文件位于何处,都将触发Lambda。