使用存储类Glacier访问S3对象

时间:2016-05-06 09:11:07

标签: java amazon-web-services amazon-s3 amazon-glacier

我编写了一个(java)软件,它从S3存储桶下载对象(存档),在本地提取数据并对其进行操作。 几天前,我在"文件夹"中设置了所有对象的生命周期策略。在S3中,在创建后2天自动移动到冰川,这样我就有时间进行DL并在数据存档之前提取数据。但是,以编程方式访问数据时,Amazon Web Services会抛出错误

    public static unsafe Instance CreateInstance(ref InstanceCreateInfo createInfo, AllocationCallbacks* allocator = null)
    {
        Instance instance;
        fixed (InstanceCreateInfo* __createInfo__ = &createInfo)
        {
            vkCreateInstance(__createInfo__, allocator, &instance).CheckError();
        }
        return instance;
    }

    [DllImport("vulkan-1.dll", CallingConvention = CallingConvention.StdCall)]
    internal static extern unsafe Result vkCreateInstance(InstanceCreateInfo* createInfo, AllocationCallbacks* allocator, Instance* instance);

    internal static unsafe void EnumerateInstanceExtensionProperties(byte* layerName, ref uint propertyCount, ExtensionProperties* properties)
    {
        fixed (uint* __propertyCount__ = &propertyCount)
        {
            vkEnumerateInstanceExtensionProperties(layerName, __propertyCount__, properties).CheckError();
        }
    }

我想这是因为这些物品是'存储类已更新为Glacier。 到目前为止,我已使用以下代码访问我的S3数据:

Exception in thread "main" com.amazonaws.services.s3.model.AmazonS3Exception: The operation is not valid for the object's storage class

我是否必须更新代码或更改AWS控制台中的某些设置?我不清楚,因为对象仍在S3中,并且访问每个S3对象一直运行得非常好,直到几天我调整了生命周期策略....

1 个答案:

答案 0 :(得分:3)

Amazon S3 生命周期策略可用于将对象从S3归档到Amazon Glacier。

归档时(由Glacier的存储类指示),对象仍然“显示”在S3中(它出现在列表中,您可以看到它的大小和元数据)但内容该对象保存在Glacier 中。因此,无法访问内容。

要在存储类为Glacier的S3中检索对象的内容,您需要RestoreObject将内容检索到S3。这需要3-5个小时。您还可以指定内容应保留在S3中的持续时间(其中将存储的存储类为Reduced Redundancy)。恢复对象后,您可以检索对象的内容。