从 AWS S3 进行事件驱动型转移

Storage Transfer Service 可以侦听 AWS 中的事件通知,以自动将源位置中添加或更新的数据转移到 Cloud Storage 存储桶中。 详细了解事件驱动型转移的优势 。

事件驱动型转移会侦听 Amazon S3 事件通知 发送到 Amazon SQS,以了解源存储桶中的对象何时已修改 或添加。系统不会检测到对象删除操作;在源位置删除对象不会删除目标存储桶中的关联对象。

事件驱动型转移始终使用 Cloud Storage 存储桶作为目标。

准备工作

按照说明授予对目标 Cloud Storage 存储桶的必要权限:

创建 SQS 队列

  1. 在 AWS 控制台中,前往 Simple Queue Service 页面。

  2. 点击创建队列 。

  3. 为此队列输入名称 。

  4. 在访问权限政策 部分中,选择高级 。此时会显示一个 JSON 对象。

    标准 AWS 区域

    {
      "Version": "2008-10-17",
      "Id": "\_\_default\_policy\_ID",
      "Statement": [
        {
          "Sid": "\_\_owner\_statement",
          "Effect": "Allow",
          "Principal": {
            "AWS": "01234567890"
          },
          "Action": [
            "SQS:*"
          ],
          "Resource": "arn:aws:sqs:us-west-2:01234567890:test"
        }
      ]
    }

    AWS GovCloud 区域

    {
      "Version": "2008-10-17",
      "Id": "\_\_default\_policy\_ID",
      "Statement": [
        {
          "Sid": "\_\_owner\_statement",
          "Effect": "Allow",
          "Principal": {
            "AWS": "01234567890"
          },
          "Action": [
            "SQS:*"
          ],
          "Resource": "arn:aws-us-gov:sqs:us-gov-west-1:01234567890:test"
        }
      ]
    }

    复制 AWS 和 Resource 的值。这些值对于每个项目都是唯一的。

  5. 将上一步中的 AWS 和 Resource 的特定值粘贴到以下 JSON 代码段中:

    标准 AWS 区域

    {
    "Version": "2012-10-17",
    "Id": "example-ID",
    "Statement": [
      {
        "Sid": "example-statement-ID",
        "Effect": "Allow",
        "Principal": {
          "Service": "s3.amazonaws.com"
        },
        "Action": "SQS:SendMessage",
        "Resource": "RESOURCE",
        "Condition": {
          "StringEquals": {
            "aws:SourceAccount": "AWS"
          },
          "ArnLike": {
            "aws:SourceArn": "arn:aws:s3:::S3_BUCKET_NAME"
          }
        }
      }
    ]
    }

    AWS GovCloud 区域

    {
    "Version": "2012-10-17",
    "Id": "example-ID",
    "Statement": [
      {
        "Sid": "example-statement-ID",
        "Effect": "Allow",
        "Principal": {
          "Service": "s3.amazonaws.com"
        },
        "Action": "SQS:SendMessage",
        "Resource": "RESOURCE",
        "Condition": {
          "StringEquals": {
            "aws:SourceAccount": "AWS"
          },
          "ArnLike": {
            "aws:SourceArn": "arn:aws-us-gov:s3:::S3_BUCKET_NAME"
          }
        }
      }
    ]
    }

    将 S3_BUCKET_NAME 替换为 S3 源存储桶的名称。

  6. 复制此已完成的 JSON 代码段,并使用它替换访问权限政策 部分中显示的 JSON。

  7. 点击创建队列 。

完成后,记下队列的 Amazon 资源名称 (ARN)。

在 S3 存储桶上启用通知

  1. 在 AWS 控制台中,转到 S3 页面。

  2. 在存储桶列表中,选择您的源存储桶。

  3. 选择属性标签页。

  4. 在事件通知 部分,点击创建事件通知 。

  5. 为此事件指定一个名称。

  6. 在事件类型 部分,选择所有对象创建事件 。

  7. 在目标 中,选择 SQS 队列 ,然后选择为此转移作业创建的队列。

  8. 点击保存更改。

配置权限

按照 “配置对来源的访问权限:Amazon S3” 中的说明创建访问密钥 ID 和密钥或 Federated Identity 角色。

按照说明操作时,请在系统指示您指定自定义角色或自定义信任政策时使用以下 JSON:

标准 AWS 区域

{
  "Version": "2012-10-17",
  "Statement": [
      {
          "Effect": "Allow",
          "Action": [
              "sqs:DeleteMessage",
              "sqs:ChangeMessageVisibility",
              "sqs:ReceiveMessage",
              "s3:GetObject",
              "s3:ListBucket"
          ],
          "Resource": [
              "arn:aws:s3:::S3_BUCKET_NAME",
              "arn:aws:s3:::S3_BUCKET_NAME/*",
              "AWS_QUEUE_ARN"
          ]
      }
  ]
}

创建后,请记下以下信息:

  • 对于用户,请记下访问密钥 ID 和密钥。
  • 对于 Federated Identity 角色,请记下 Amazon 资源名称 (ARN), 其格式如下: arn:aws:iam::AWS_ACCOUNT:role/AWS_ROLE_NAME

AWS GovCloud 区域

{
  "Version": "2012-10-17",
  "Statement": [
      {
          "Effect": "Allow",
          "Action": [
              "sqs:DeleteMessage",
              "sqs:ChangeMessageVisibility",
              "sqs:ReceiveMessage",
              "s3:GetObject",
              "s3:ListBucket"
          ],
          "Resource": [
              "arn:aws-us-gov:s3:::S3_BUCKET_NAME",
              "arn:aws-us-gov:s3:::S3_BUCKET_NAME/*",
              "AWS_QUEUE_ARN"
          ]
      }
  ]
}

创建后,请记下以下信息:

  • 对于用户,请记下访问密钥 ID 和密钥。
  • 对于 Federated Identity 角色,请记下 Amazon 资源名称 (ARN), 其格式如下:arn:aws-us-gov:iam::AWS_ACCOUNT:role/AWS_ROLE_NAME

创建转移作业

您可以使用 Google Cloud 控制台、Google Cloud CLI 或 REST API 创建 基于事件的转移作业。

Cloud 控制台