我有一个Lambda函数,它有一个公开的API网关端点,我可以通过AWS控制台获取该URL.但是,我想通过API调用获取该URL.无论是LAMBDA API文档,也不是API Gateway文档似乎有该信息(或者也许我已经错过了它),所以这是甚至可能摆在首位?
https://docs.aws.amazon.com/AmazonS3/latest/userguide/archived-objects.html说:
当您将 Amazon S3 对象存档到 S3 Glacier 或 S3 Glacier Deep Archive 存储类时,或者将对象存档到 S3 智能分层存档访问层或深度存档访问层时,无法实时访问这些对象。
我明白这一点,但如何判断对象是否位于存档访问层或深度存档访问层?我已经阅读了大部分 AWS S3 文档,但似乎找不到此信息。我正在为 S3 编写一个 UI,并希望根据对象所在的层显示“下载”或“恢复”按钮。我刚刚开始对此进行开发,因此这些文件中没有任何文件还剩两层,我等不及 90 天才能把任何东西移到那里。
当您发出list-objects请求时,您将获得每个项目的存储类别,该存储类别返回为INTELLIGENT_TIERING,但它不会告诉您它是哪一层。
关于测试 S3 智能分层的评论说,您可以通过将存储类别更改为 Glacier 来伪造它,但我怀疑这是一个准确的测试,因为 Glacier 和智能分层是两种不同的存储类别,并且没有意义智能分层对象会突然改变它们的存储类别。
有人有任何见解吗?提前致谢。
亚马逊更新:(tl;博士,这是不可能的)
不幸的是,我们无法识别存储在智能分层类中的对象的访问层,这是通过识别对象的访问模式来确定对象的访问层的唯一方法。可以通过分析访问日志来识别访问模式,或者用户可以使用 S3 Storage Lens 查看访问模式。
根据您的要求,最好的选择是禁用智能分层存档配置。禁用此配置后,智能分层类中的对象将不会在“存档访问层”和“深度存档访问层”中移动。通过此配置,您可以在应用程序中创建一个逻辑,如果对象属于“智能分层”类,则将启用下载按钮,并且用户将能够下载该对象。
现在,要将对象移动到“Glacier”和“Glacier Deep Archive”,您可以配置生命周期规则。假设您可以配置生命周期规则,以在 90 天后将“智能分层”类中的对象转换为 Glacier,并在 180 天后将对象转换为“Glacier Deep Archive”。
通过这种方式,使用 ListObjects API 调用,您可以识别对象的正确存储类别,并且可以编写一个逻辑,其中仅当存储类别为“Glacier”或“Glacier Deep Archive”时才会启用“恢复”按钮。3-5 小时后,系统会适当地向用户显示一条消息,要求用户下载该对象。