文档

准备工作

更新时间:
一键部署

本文介绍数据迁移之前的准备工作。

步骤一:上传列表文件

HTTP/HTTPS列表文件包括2类文件,1个manifest.json文件和1个或多个example.csv.gz文件,example.csv.gz为CSV压缩后的列表文件,单个example.csv.gz文件大小不超过25 MB,manifest.json为对CSV文件进行项配置的文件,支持上传至OSS或者AWS S3。

  1. 创建CSV列表文件

    在本地创建CSV格式的列表文件。列表文件最多支持8项,项与项之间用英文逗号(,)分隔;每行一个文件,文件之间用\n换行。各项的含义如下表所示。

    重要

    KeyURL为必填项,其余项可以不填写。

    • 必填项

      名称

      是否必填

      描述

      说明

      URL

      在线迁移服务使用该链接的Get请求下载文件内容,Head请求获取文件元数据。

      说明

      URL需确保可以直接使用[curl -L --HEAD "$url"]、[curl -L --GET "$url"]等命令正常访问。

      URLKey项必须要做编码处理,不做编码处理、包含特殊字符可能会导致文件迁移失败。

      • URL项的编码原则:在curl等命令行工具可正常访问的基础上,再进行一次URL编码。

      • Key项的编码原则:在您期望该文件在OSS上的ObjectName基础之上,再进行一次URL编码。

      重要

      URLKey项做编码处理后,请务必进行以下内容确认,否则可能会导致文件迁移失败,或迁移到目的端的文件路径与您的预期不符。

      • 原字符串中的加号(+)已被编码成%2B。

      • 原字符串中的百分号(%)已被编码成%25。

      • 原字符串中的半角逗号(,)已被编码成%2C。

      例如,原字符串为a+b%c,d.file,编码后的字符串应该是a%2Bb%25c%2Cd.file

      Key

      迁移后的Object Name为prefix+文件名。

      如下Python编码示例代码仅供您参考。

      # -*- coding: utf-8 -*-
      import sys
      if sys.version_info.major == 3:
          from urllib.parse import quote_plus
      else:
          from urllib import quote_plus
      
      raw_urls = [
          # Format: ($URL, $key)
          #    url: These urls can be accessed normally by using linux 'cURL' or 'wget' cmd.
          #    key: These keys are the ObjectName you expect on OSS.
          ("http://www.example1.com/path/ab.file?t=aef87",  "ab.file"),
          ("http://www.example2.com/path/a+b.file",         "a+b.file"),
          ("http://www.example3.com/path/a%b.file",         "a%b.file"),
          ("http://www.example4.com/path/a,b.file",         "a,b.file"),
          ("http://www.example5.com/path/a b.file",         "a b.file"),
          ("http://www.example6.com/path/a和b.file",        "a和b.file"),
          ("http://www.example7.com/path/a%E4%B8%8Eb.file", "a%E4%B8%8Eb.file"),
          ("http://www.example8.com/path/a\\b.file",        "a\\b.file")
      ]
      
      for item in raw_urls:
          url, key = item[0], item[1]
          enc_url = quote_plus(url)
          enc_key = quote_plus(key)
          # The enc_url and enc_key vars are encoded format, you can use them to build csv files.
          print("(%s, %s) -> (%s, %s)" % (url, key, enc_url, enc_key))
      
    • 全部项

      名称

      是否必填

      说明

      Key

      迁移后的Object Name为prefix+文件名。

      URL

      在线迁移服务使用该链接的Get请求下载文件内容,Head请求获取文件元数据。

      Size

      迁移文件的大小。

      StorageClass

      源Bucket的存储类型。

      LastModifiedDate

      待迁移文件的最后修改时间。

      ETag

      待迁移文件的ETag。

      HashAlg

      待迁移文件的Hash算法。

      HashValue

      待迁移文件的Hash值。

      说明

      以上示例中各项的顺序并非固定顺序,只需与manifest.json文件中fileSchema项顺序保持一致即可。

  2. 压缩CSV文件

    需要将CSV文件压缩为csv.gz文件,压缩方法如下:

    • 压缩单个文件

      例如dir目录下有一个文件file1,需执行如下压缩命令:

      gzip -r dir
      说明

      执行以上gzip命令压缩文件,不会保留源文件,如需保留源文件压缩,请执行命令gzip -c 源文件 >源文件.gz

      压缩后得到file1.gz文件。

    • 压缩多个文件

      例如dir目录下有三个文件file1、file2和 file3,需执行如下压缩命令:

      gzip -r dir
      说明

      gzip命令不会打包目录,而是将指定目录下所有子文件分别进行压缩。

      压缩后得到三个文件file1.gz、file2.gz和file3.gz。

  3. 创建manifest.json文件

    支持配置多个CSV文件,具体内容如下。

    • fileFormat:指定列表文件格式为CSV

    • fileSchema:对应CSV中文件项,请注意顺序。

    • files:

      • key:CSV文件在Bucket中的位置。

      • mD5checksum:16进制的MD5字符串,不区分大小写。例如:91A76757B25C8BE78BC321DEEBA6A5AD,如果不填写该值,则不会做校验。

      • size:列表文件大小。

    如下示例仅供您参考。

    {
        "fileFormat":"CSV",
        "fileSchema":"Url, Key, Bucket, Size, StorageClass, LastModifiedDate, ETag, HashAlg, HashValue ",
        "files":[{
            "key":"dir/example1.csv.gz",
            "mD5checksum":"",
            "size":0
        },{
            "key":"dir/example2.csv.gz",
            "mD5checksum":"",
            "size":0
        }]
    
    }
  4. 您可以选择将创建的2类列表文件上传到OSS或AWS S3。

    • 将创建的2类列表文件上传到OSS的具体操作,请参见简单上传

      说明
      • 列表文件上传到OSS后,在线迁移服务会下载列表文件,并根据指定的地址迁移文件。

      • 新建任务时,请填写文件列表所在Bucket信息,列表路径的格式为列表所在目录/manifest.json,例如dir/manifest.json。

    • 将创建的2类列表文件上传到AWS S3。

      说明
      • 列表文件上传到AWS S3后,在线迁移服务会下载列表文件,并根据指定的地址迁移文件。

      • 新建任务时,请填写文件列表所在Bucket信息,列表路径的格式为列表所在目录/manifest.json,例如dir/manifest.json。

步骤二:创建目标存储空间

创建目标存储空间,用于存放迁移的数据。具体操作,请参见创建存储空间

步骤三:创建用于迁移数据的RAM用户

为了保证数据安全,推荐您创建RAM用户并按照最小权限原则对该RAM用户进行授权后用于迁移数据。

  1. 登录RAM控制台

  2. 在左侧导航栏,选择身份管理 > 用户

  3. 用户页面,单击创建用户

  4. 创建用户页面的用户账号信息区域,输入登录名称显示名称

  5. 访问方式区域,选中控制台访问OpenAPI调用访问。并保存生成的账号、密码、AccessKey ID和AccessKey Secret。

    • 控制台访问:设置控制台密码、需要重置密码和MFA多因素认证。

    • OpenAPI调用访问:自动为RAM用户生成访问密钥(AccessKey),支持通过API或其他开发工具进行访问。

步骤四:为RAM用户添加权限

创建RAM用户成功后,在用户页面,单击目标RAM用户操作列的添加权限

  • 系统策略:管理OSS在线迁移服务的权限(AliyunOSSImportFullAccess)

  • 自定义策略:

    授予RAM用户对存放迁移后数据的Bucket的完全控制权限

    说明
    • 以下权限策略仅供您参考,其中mybucket为存放迁移后数据的Bucket名称,请根据实际值替换。

    • 关于OSS权限策略的更多信息,请参见RAM Policy常见示例

    {
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "oss:*",
                "Resource": [
                    "acs:oss:*:*:mybucket",
                    "acs:oss:*:*:mybucket/*"
                ]
            }
        ]
    }
  • 本页导读 (1)
文档反馈