意外删除 S3 对象;从 Cloudfront 分发中恢复已删除的对象
Accidental S3 Object deletion; Recover deleted object from the Cloudfront distribution
假设,如果我不小心删除了 Cloudfront 正在使用的 S3 对象,我可以在 Cloudfront 缓存未清除且对象未失效的情况下通过 Cloudfront 检索该对象吗?
也许吧。在发生以下任何一种情况之前,您仍然可以通过 http/https 请求该对象:
- 对象的生存时间到期,
- 分发无效,或者
- 对象被缓存逐出以为其他对象腾出空间
但是所有这些都假设对象一开始就在缓存中。不要依赖任何这些。
有几种方法可以处理 S3 中删除的对象:
- 在您的 S3 存储桶上启用版本控制。启用对象版本控制后,将保留对象的旧版本。如果您删除一个对象,您仍然可以从 S3 检索以前的版本。
请注意,您将为所有对象(甚至已删除的对象)的所有版本的存储付费。您可以使用 s3 存储桶生命周期在预定时间后删除旧版本以降低这些成本。
更多信息:http://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html
- 在您的存储桶上启用删除时 MFA。启用此功能后,删除对象会更加困难,因为您必须输入 MFA 密码才能进行删除。
更多信息:http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMFADelete.html
- 将存储桶策略应用到您的存储桶以防止删除对象。
这是一个示例策略:
{
"Id": "ExamplePolicyId12345678",
"Statement": [
{
"Sid": "ExampleStmtSid12345678",
"Action": [
"s3:DeleteBucket"
],
"Effect": "Deny",
"Resource": "arn:aws:s3:::test-example-com",
"Principal": {
"AWS": [
"*"
]
}
}
]
}
来源:https://serverfault.com/questions/226700/how-do-i-prevent-deletion-of-s3-buckets
假设,如果我不小心删除了 Cloudfront 正在使用的 S3 对象,我可以在 Cloudfront 缓存未清除且对象未失效的情况下通过 Cloudfront 检索该对象吗?
也许吧。在发生以下任何一种情况之前,您仍然可以通过 http/https 请求该对象:
- 对象的生存时间到期,
- 分发无效,或者
- 对象被缓存逐出以为其他对象腾出空间
但是所有这些都假设对象一开始就在缓存中。不要依赖任何这些。
有几种方法可以处理 S3 中删除的对象:
- 在您的 S3 存储桶上启用版本控制。启用对象版本控制后,将保留对象的旧版本。如果您删除一个对象,您仍然可以从 S3 检索以前的版本。
请注意,您将为所有对象(甚至已删除的对象)的所有版本的存储付费。您可以使用 s3 存储桶生命周期在预定时间后删除旧版本以降低这些成本。
更多信息:http://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html
- 在您的存储桶上启用删除时 MFA。启用此功能后,删除对象会更加困难,因为您必须输入 MFA 密码才能进行删除。
更多信息:http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMFADelete.html
- 将存储桶策略应用到您的存储桶以防止删除对象。
这是一个示例策略:
{
"Id": "ExamplePolicyId12345678",
"Statement": [
{
"Sid": "ExampleStmtSid12345678",
"Action": [
"s3:DeleteBucket"
],
"Effect": "Deny",
"Resource": "arn:aws:s3:::test-example-com",
"Principal": {
"AWS": [
"*"
]
}
}
]
}
来源:https://serverfault.com/questions/226700/how-do-i-prevent-deletion-of-s3-buckets