在 AWS S3 存储桶中复制作为数据备份

Har*_*Fun 6 amazon-s3 amazon-ec2 amazon-web-services

我正在寻找 S3 存储桶中数据的每日备份选项。我在存储桶上启用了版本控制,并计划也打开复制以提高耐用性。

我正在尝试解决这种情况,即有人意外删除了 S3 存储桶,或者有人错误地关闭了版本控制,并且需要恢复完整或部分数据(关闭版本控制不太可能,因为它是复制的先决条件)。

查看此处的AWS文档, https://aws.amazon.com/about-aws/whats-new/2019/09/amazon-s3-introduces-same-region-replication/ 建议复制可用于备份也。

我知道对象上的删除不会传播到目标存储桶,但无法真正理解存储桶本身被删除时的情况,无论是否被复制。

如果复制和版本控制不足以满足我的备份,请考虑更传统的选项,例如设置日常作业以定期保存到 EC2 实例本地文件系统。

目前还排除了将 MFA 添加到存储桶的可能性,因为我正在使用 CloudFormation 设置系统,并且认为它不受支持。

wpp*_*wpp 3

您确实不需要将 S3 文件复制到任何 EC2 实例或类似的东西,Amazon S3 Standard 的设计目标是跨多个可用区实现 99.999999999% 的对象的持久性,您知道这意味着什么吗?Amazon 本身会在您所在区域的其他可用区复制 S3 对象,以保证这种持久性。

AWS 对 S3 的评价:

主要特征:

  • 低延迟和高吞吐量性能
  • 专为多个可用区中 99.999999999% 的对象的持久性而设计
  • 能够抵御影响整个可用区的事件
  • 专为特定年份 99.99% 的可用性而设计
  • 受 Amazon S3 服务级别协议支持以确保可用性
  • 支持传输中数据的 SSL 和静态数据加密
  • S3 生命周期管理,用于将对象自动迁移到其他 S3 存储类

此外,您已经启用了版本控制(另一层备份),如果您想花更多的钱来复制存储桶,这取决于您,如果您负担得起,您将拥有另一层备份,但相信我,您不会不需要这个,仅使用 S3 标准存储就足够了。

如果您想防止对象被意外删除并且无法启用 MFA,您可以创建存储桶策略来避免任何类型的删除操作:

{
    "Id": "Policy1588185431596",
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt1588185426140",
            "Action": [
                "s3:DeleteBucket",
                "s3:DeleteBucketWebsite",
                "s3:DeleteObject",
                "s3:DeleteObjectTagging",
                "s3:DeleteObjectVersion",
                "s3:DeleteObjectVersionTagging"
            ],
            "Effect": "Deny",
            "Resource": [
                "arn:aws:s3:::yourbucketname/*",
                "arn:aws:s3:::yourbucketname"
            ],
            "Principal": "*"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

如果您想将删除操作限制为除 root 用户之外的所有用户,您可以这样做:

{
  "Id": "Policy1588186664547",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1588186644754",
      "Action": [
        "s3:DeleteBucket",
        "s3:DeleteBucketPolicy",
        "s3:DeleteBucketWebsite",
        "s3:DeleteObject",
        "s3:DeleteObjectTagging",
        "s3:DeleteObjectVersion",
        "s3:DeleteObjectVersionTagging"
      ],
      "Effect": "Deny",
      "Resource": [
        "arn:aws:s3:::yourbucketname/*",
        "arn:aws:s3:::yourbucketname"
      ],
      "Condition": {
        "StringNotEquals": {
          "aws:userid": "AWSAccountNumber"
        }
      },
      "Principal": "*"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

此外,您还可以使用策略模拟器检查您的策略 ,以确保该策略符合您的预期。

您可以将此策略添加到您的 CloudFormation 模板中。