gpt4 book ai didi

bash - AWS S3 : Remove Object Prefix From Thousands of Files in Complex Directory Structure

转载 作者:行者123 更新时间:2023-11-29 09:15:28 25 4
gpt4 key购买 nike

我正在使用 AWS CLI 界面管理 S3 中的文件/对象。我有数以千计的对象埋在一个复杂的嵌套文件夹(子文件夹)系统中,我想将所有对象提升到 S3 存储桶的“根”,在存储桶 (s3://存储桶/文件夹/文件.txt).

我试过使用这个命令:

 aws s3 s3://bucket-a/folder-a s3://bucket-a --recursive --exclude “*” --include “*.txt”

当我使用 mv 命令时,它会继承每个对象的前缀(目录路径),从而产生相同的嵌套文件夹系统。这是我想要完成的:

期望的结果:地点:

s3://bucket-a/folder-a/file-1.txt
s3://bucket-a/folder-b/folder-b1/file-2.txt
s3://bucket-a/folder-c/folder-c1/folder-c2/ file-3.txt

输出:s3://bucket-a/file-1.txts3://bucket-a/file-2.txts3://bucket-a/file-3.txt

有人告诉我,我需要使用 bash 脚本来完成我想要的结果。这是提供给我的示例脚本:

#!/bin/bash
#BASH Script to move objects without directory structure
bucketname='my-bucket'
for key in $(aws s3api list-objects --bucket "${my-bucket}" --query "Contents[].{Object:Key}" --output text) ;
do
echo "$key"
FILENAME=$($key | awk '{print $NF}' FS=/)
aws s3 cp s3://$my-bucket/$key s3://$my-bucket/my-folder/$FILENAME
done

当我运行这个 bash 脚本时,出现错误:

A client error (AccessDenied) occurred when calling the ListObjects operation: Access Denied

我用另一个 aws s3 命​​令测试了连接并确认它有效。我向用户添加了策略以包含对 s3 的所有权限,我不知道我在这里做错了什么。

如有任何帮助,我们将不胜感激。

最佳答案

那个脚本看起来一团糟,无法设置一个名为 bucketname 的变量并尝试使用另一个名为 my-bucket 的变量,如果你尝试这个会发生什么?

#!/bin/bash
#BASH Script to move objects without directory structure
bucketname='my-bucket'
for key in $(aws s3api list-objects --bucket "${bucketname}" --query "Contents[].{Object:Key}" --output text) ;
do
echo "$key"
FILENAME=$($key | awk '{print $NF}' FS=/)
aws s3 cp s3://$bucketname/$key s3://$bucketname/my-folder/$FILENAME
done

关于bash - AWS S3 : Remove Object Prefix From Thousands of Files in Complex Directory Structure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37873080/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com