Storage Transfer Service 可以侦听 AWS 中的事件通知,以自动将源位置中添加或更新的数据转移到 Cloud Storage 存储桶中。 详细了解事件驱动型转移的优势 。
事件驱动型转移会侦听 Amazon S3 事件通知 发送到 Amazon SQS,以了解源存储桶中的对象何时已修改 或添加。系统不会检测到对象删除操作;在源位置删除对象不会删除目标存储桶中的关联对象。
事件驱动型转移始终使用 Cloud Storage 存储桶作为目标。
准备工作
按照说明授予对目标 Cloud Storage 存储桶的必要权限:
创建 SQS 队列
在 AWS 控制台中,前往 Simple Queue Service 页面。
点击创建队列 。
为此队列输入名称 。
在访问权限政策 部分中,选择高级 。此时会显示一个 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的值。这些值对于每个项目都是唯一的。将上一步中的
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 源存储桶的名称。
复制此已完成的 JSON 代码段,并使用它替换访问权限政策 部分中显示的 JSON。
点击创建队列 。
完成后,记下队列的 Amazon 资源名称 (ARN)。
在 S3 存储桶上启用通知
在 AWS 控制台中,转到 S3 页面。
在存储桶列表中,选择您的源存储桶。
选择属性标签页。
在事件通知 部分,点击创建事件通知 。
为此事件指定一个名称。
在事件类型 部分,选择所有对象创建事件 。
在目标 中,选择 SQS 队列 ,然后选择为此转移作业创建的队列。
点击保存更改。
配置权限
按照 “配置对来源的访问权限: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 创建 基于事件的转移作业。