[英]Move files from one folder to another folder in aws S3 with ex_aws library in elixir
[英]How to move all files of folder from another folder to same S3 bucket in script elixir
我正在制作一个脚本,需要将所有文件从第三个文件夹移动到主文件夹,并且在该列表中还有那些已经在正确文件夹中的文件,我需要忽略它们。
像这样: my_bucket/files/id/file.txt到my_bucket/files/file.txt
我的代码是这样的,它只列出对象,它没有移动
我试试这段代码:
defmodule Script.Elixir do
def list_objects_in_bucket do
"my_bucket"
|> ExAws.S3.list_objects(max_keys: 1000)
|> ExAws.request()
|> extract_only_route()
end
def copy_object(origin_path) do
ExAws.S3.put_object_copy(
"my_bucket/",
"/my_folder_destiny/",
"my_bucket",
origin_path
)
|> ExAws.request()
end
defp extract_only_route({:ok, %{body: %{contents: contents}}}) do
Enum.map(contents, fn %{key: route} -> route end)
end
end
一旦你有了带有list_objects_in_bucket/0
的文件列表,和一个经过测试的copy_object/2
function,接受 arguments from
和to
,你可能会做一些像
@bucket "my_bucket/"
@top "files/"
@nested "id/"
# https://hexdocs.pm/ex_aws_s3/ExAws.S3.html#put_object_copy/5
copy_object = fn from, to ->
@bucket
|> ExAws.S3.put_object_copy(to, @bucket, from)
|> ExAws.request()
end
for @bucket <> @top <> @nested <> name <- list_objects_in_bucket() do
copy_object.(@top <> @nested <> name, @top <> name)
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.