En premier lieu, AWS S3 n'a pas le concept de dossiers, donc le nom «dossier» est inapproprié. (Dans ce cas, est-il plus approprié de l'appeler une "clé"?)
Pour le moment, on l'appelle un «dossier» pour plus de commodité.
Vous pourriez penser que vous ne pouvez pas le faire soudainement, mais vous ne pouvez pas. Vous ne pouvez pas le modifier à partir de la console de gestion.
Nande? J'ai pensé, j'ai baissé les yeux et compris. C'est vrai. C'est juste un magasin de données de type clé-valeur ...
"Détruisez l'illusion de" dossiers "dans Amazon S3 et révélez sa substance." https://dev.classmethod.jp/cloud/aws/amazon-s3-folders/
Ce sera possible avec ce qui suit. C'est la même procédure que la commande rename sous Unix / Linux.
public void changeFolderName(String bucketName, String oldPrefix, String newPrefix){
AmazonS3 s3 = new AmazonS3Client(new ClasspathPropertiesFileCredentialsProvider());
ObjectListing listing = s3.listObjects(bucketName, oldPrefix);
for (S3ObjectSummary summary: listing.getObjectSummaries()) {
String oldKey = summary.getKey();
String newKey = new StringBuilder().append(newPrefix).append(oldKey.substring(oldPrefix.length())).toString();
s3.copyObject(bucketName, oldKey, bucketName, newKey);
s3.deleteObject(bucketName, oldKey);
}
}
Recommended Posts