Skip to content

Latest commit

 

History

History
237 lines (163 loc) · 7.38 KB

tutorial-migration-oss-to-s3_CN.md

File metadata and controls

237 lines (163 loc) · 7.38 KB

将阿里云 OSS 中的数据迁移到 Amazon S3

English

本教程为将数据从 阿里云 OSS 中的数据传输到的 Amazon S3 指南。

我们假设您已经完成了Data Transfer Hub解决方案的部署。 并将解决方案部署在 俄勒冈州(us-west-2) 区域。

您可以预先参考部署指南部署该解决方案.

登录到 Data Transfer Hub 界面

成功创建cloudformation堆栈后,您将收到一封电子邮件通知,其中包含用于登录的临时密码,用户名是您启动cloudformation时设置的AdminEmail。

界面的网址可在cloudformation堆栈的输出选项中找到,请参见以下屏幕截图:

portal

登录界面

  1. 在浏览器中输入界面的URL
  2. 使用您的用户名和临时密码登录
  3. 更改临时密码
  4. 验证电子邮件(可选) portal

配置凭证

  1. 打开 Secrets Manager 控制台
  2. 点击左侧边栏的 Secrets
  3. 点击 Store a new secret 按钮
  4. 在密钥类型中,选择 Other type of secrets
  5. Plaintext 选项卡中输入您的阿里云的AKSK, 该凭证需要按以下的格式
    {
      "access_key_id": "<Your Access Key ID>",
      "secret_access_key": "<Your Access Key Secret>"
    }
    
  6. 点击 Next
  7. 输入密钥名称 Secret name, 例如: drh-credentials
  8. 点击 Next
  9. 选择 Disable automatic rotation
  10. 点击 Store 完成创建

在网页界面中创建数据迁移任务

  1. 回到 Data Transfer Hub 网页界面, 选择Amazon S3 然后点击 Next Step. portal

  2. 在选择引擎类型时,我们建议选择 EC2 Graviton 2, 然后点击 Next Step. portal

  3. 数据源(Source settings) 部分, 输入源数据桶的桶名以及相关参数信息,注意选择Source Type 为Aliyun OSS. portal

  4. 数据目的地(Destination settings) 部分, 输入目的地数据桶的名称以及相关参数信息. portal

  5. 输入告警邮箱然后点击 下一步(Next Step) portal

  6. 在检查完任务配置后,点击 创建任务(Create Task). 随后,您将看到您所创建的任务. portal

通过Cloudwatch 面板进行监控

点击任务下对应的CloudWatch链接,打开CloudWatch 面板对任务的相关数据进行监控。

注意,任务第一次启动时,面板的监控指标数据可能会有5分钟左右的延迟。

portal

通过OSS事件触发器进行实时数据迁移

如果您想将数据实时地从阿里云OSS迁移到Amazon S3。 下面是如何启用OSS事件触发迁移的指南。

预备工作

Data Transfer Hub 必须部署在AWS的账户中,本教程假设您部署在 us-west-2 区域.

在您创建了task之后,前往 SQS 控制台 并记下 Queue URLQueue arn, 我们将在后续步骤中用到他们.

portal

准备您的AWS账户的 AK/SK

前往 IAM 控制台, 点击 创建一个新的策略(Create Policy).

portal

点击 JSON,并将下面的权限Json文件输入到策略中。

注意替换JSON中的Queue arn 为您前述步骤中的arn

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sqs:SendMessageBatch",
                "sqs:SendMessage"
            ],
            "Resource": "arn:aws:sqs:us-west-2:xxxxxxxxxxx:DTHS3Stack-S3TransferQueue-1TSF4ESFQEFKJ"
        }
    ]
}

portal

随后创建一个User. 前往 User 控制台 然后点击 添加用户(Add User).

portal

然后将您先前创建的策略附加到该用户上。

portal

保存 AK/SK,您将在下一步中使用它们。

portal

准备阿里云中的发送函数

打开终端并输入以下命令,建议使用docker或linux机器。

mkdir tmp
cd tmp
pip3 install -t . boto3

随后在同一文件夹中创建 index.py,然后输入代码

import json
import logging
import os
import boto3


def handler(event, context):
    logger = logging.getLogger()
    logger.setLevel('INFO')

    evt = json.loads(event)

    if 'events' in evt and len(evt['events']) == 1:
        evt = evt['events'][0]

        logger.info('Got event {}'.format(evt['eventName']))
        obj = evt['oss']['object']
        # logger.info(obj)

        ak = os.environ['ACCESS_KEY']
        sk = os.environ['SECRET_KEY']
        queue_url = os.environ['QUEUE_URL']
        region_name = os.environ['REGION_NAME']

        # minimum info of a message
        obj_msg = {
            'key': obj['key'],
            'size': obj['size']
        }

        # start sending the msg
        sqs = boto3.client('sqs', region_name=region_name,
                           aws_access_key_id=ak, aws_secret_access_key=sk)

        try:
            sqs.send_message(
                QueueUrl=queue_url,
                MessageBody=json.dumps(obj_msg)
            )
        except Exception as e:
            logger.error(
                'Unable to send the message to Amazon SQS, Exception:', e)

    else:
        logger.warning('Unknown Message '+evt)

    return 'Done'

打包代码(包括boto3)

zip -r code.zip *

在阿里云上创建函数

打开阿里云 函数计算/Function Compute的服务及函数, 点击 新建函数/create function

portal

运用刚刚打包的zip文件创建函数

portal

然后点击 新建/create

配置函数的环境变量

点击 修改配置/Edit Config

portal

然后在“环境变量”中输入json配置文件,请记住使用自己的ACCESS_KEYSECRET_KEYQUEUE_URL

{
    "ACCESS_KEY": "XXX",
    "QUEUE_URL": "https://sqs.us-west-2.amazonaws.com/xxxx/DTHS3Stack-S3TransferQueue-xxxx",
    "REGION_NAME": "us-west-2",
    "SECRET_KEY": "XXXXX"
}

portal

创建触发器

点击创建触发器以创建函数的触发器。

portal

然后配置触发器,如下图所示。 触发事件, 请选择:

oss:ObjectCreated:PutObject
oss:ObjectCreated:PostObject 
oss:ObjectCreated:CopyObject
oss:ObjectCreated:CompleteMultipartUpload
oss:ObjectCreated:AppendObject

portal