Spa*_*son 4 java amazon-s3 amazon-web-services amazon-glacier
我写了一个 (java) 软件,它从 S3 存储桶下载对象(档案),在本地提取数据并对其进行操作。几天前,我将 S3 中“文件夹”中所有对象的生命周期策略设置为在创建后 2 天自动移动到冰川,以便我有时间在数据存档之前进行 DL 和提取数据。但是,以编程方式访问数据时,Amazon Web Services 会抛出错误
Exception in thread "main" com.amazonaws.services.s3.model.AmazonS3Exception: The operation is not valid for the object's storage class
Run Code Online (Sandbox Code Playgroud)
我想这是因为对象的存储类已更新为 Glacier。到目前为止,我已使用以下代码访问我的 S3 数据:
public static void downloadObjectFromBucket(String bucketName, String pathToObject, String objectName) throws IOException{
AmazonS3 s3Client = new AmazonS3Client(new ProfileCredentialsProvider());
S3Object object = s3Client.getObject(new GetObjectRequest(bucketName, pathToObject));
InputStream reader = new BufferedInputStream(object.getObjectContent());
File file = new File(objectName);
OutputStream writer = new BufferedOutputStream(new FileOutputStream(file));
int read = -1;
while ( ( read = reader.read() ) != -1 ) {
writer.write(read);
}
writer.flush();
writer.close();
reader.close();
}
Run Code Online (Sandbox Code Playgroud)
我是否必须更新我的代码或更改 AWS 控制台中的某些设置?我不清楚,因为对象仍然在 S3 中并且访问每个 S3 对象一直很好地工作,直到几天前我调整了生命周期策略......
Amazon S3生命周期策略可用于将对象从 S3 存档到 Amazon Glacier。
归档时(如 的存储类所示Glacier
),对象仍“显示”在 S3 中(它出现在列表中,您可以看到其大小和元数据),但对象的内容保留在 Glacier 中。因此,无法访问内容。
要在 S3 中检索存储类为 的对象的内容Glacier
,您需要使用RestoreObject将内容检索到 S3 中。这需要3-5个小时。您还指定了内容应在 S3 中保留多长时间的持续时间(将存储在 S3 中的存储类Reduced Redundancy
)。恢复对象后,您可以检索对象的内容。
归档时间: |
|
查看次数: |
7634 次 |
最近记录: |