如何查找是否所有S3对象都已恢复



我最近使用Python恢复了S3 Deep Archive对象。

他们有100多万,我需要弄清楚。

如果可能的话,我想使用python来检查是否所有对象都已恢复。

有人能告诉我怎么做吗?

谢谢

来自restore_object()文档:

要获取对象恢复的状态,可以发送HEAD请求。操作在响应中返回x-amz-restore标头,该标头提供有关恢复状态的信息。

并且在head_object():下

如果存档副本已经恢复,则头值指示Amazon S3计划何时删除对象副本。例如:

x-amz-restore: ongoing-request="false", expiry-date="Fri, 21 Dec 2012 00:00:00 GMT"

虽然不是Python,但以下是使用AWS SDK for Java v2执行此用例的逻辑。

package com.example.s3;
import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3.S3Client;
import software.amazon.awssdk.services.s3.model.HeadObjectRequest;
import software.amazon.awssdk.services.s3.model.HeadObjectResponse;
import software.amazon.awssdk.services.s3.model.S3Exception;
public class GetObjectRestoreStatus {
public static void main(String[] args) {
final String usage = "n" +
"Usage:n" +
"    <bucketName> <keyName> nn" +
"Where:n" +
"    bucketName - The Amazon S3 bucket name. nn"+
"    keyName - A key name that represents the object. nn";
if (args.length != 2) {
System.out.println(usage);
System.exit(1);
}
String bucketName = args[0];
String keyName = args[1];
ProfileCredentialsProvider credentialsProvider = ProfileCredentialsProvider.create();
Region region = Region.US_EAST_1;
S3Client s3 = S3Client.builder()
.region(region)
.credentialsProvider(credentialsProvider)
.build();
checkStatus(s3,bucketName,keyName);
s3.close();
}
// snippet-start:[s3.java2.getrestorestatus.main]
public static void checkStatus(S3Client s3, String bucketName, String keyName) {
try {
HeadObjectRequest headObjectRequest = HeadObjectRequest.builder()
.bucket(bucketName)
.key(keyName)
.build();
HeadObjectResponse response =  s3.headObject(headObjectRequest);
System.out.println("The Amazon S3 object restoration status is "+response.restore());
} catch (S3Exception e) {
System.err.println(e.awsErrorDetails().errorMessage());
System.exit(1);
}
}
// snippet-end:[s3.java2.getrestorestatus.main]
}

最新更新