# 阿里云公测版迁移到正式版

为了开发者更方便的将业务从公测版迁移到正式版，我们提供了公测版一键迁移到正式版的功能，开发者可在[uniCloud控制台](https://unicloud.dcloud.net.cn)操作迁移，流程如下：

## 购买正式版迁移空间
公测版迁移正式版，需通过`迁移正式版`操作来下单购买待迁移的正式版空间，该操作会为两个空间增加迁移绑定关系，方便后续迁移配置。

![](https://f184e7c3-1912-41b2-b81f-435d1b37c7b4.cdn.bspapp.com/VKCEYUGU-f184e7c3-1912-41b2-b81f-435d1b37c7b4/a0eea46e-f89f-40de-ac99-6f0eb09a55f3.png)

我们会**根据公测版服务空间资源用量来推荐迁移正式版的套餐，只可购买推荐套餐及以上的版本以保证全量数据迁移**，您也可以直接选择按量计费。

在购买待迁移空间前，已经可以获取到迁移后云存储上传及下载的域名，开发小程序的话，由于小程序安全域名白名单在客户端有缓存，建议迁移前两天将云存储域名添加到白名单。

![](https://f184e7c3-1912-41b2-b81f-435d1b37c7b4.cdn.bspapp.com/VKCEYUGU-f184e7c3-1912-41b2-b81f-435d1b37c7b4/25b4073b-fe34-4715-8ffb-d37c40eb69ea.png)

由于待迁移正式版空间是一个全新且独立的空间，所以在创建后会分配新的SpaceId，规则为`mp-公测版SpaceId`。

为了更好的在云函数/云对象中兼容，购买待迁移正式版空间时， 可选择`是否在云函数/云对象代码中兼容 SpaceID`，如果开启该选项，迁移后在云函数/云对象内获取的`context.SPACEINFO.spaceId` 及 `cloudInfo` 内的 SpaceId 将保持不变，仍为原公测版SpaceId。开发者可以通过`context.SPACEINFO.useOldSpaceId` 或 `cloudInfo.useOldSpaceId`判断当前获取的spaceId是不是迁移前的，true表示当前服务空间在云函数内取到的服务空间id为迁移前的服务空间id，否则为新空间id。如运行本地云函数，此特性于`HBuilderX 3.6.13`起支持，云端默认支持此特性。**迁移后的新服务空间id为旧空间id加`mp-`前缀。**

![](https://f184e7c3-1912-41b2-b81f-435d1b37c7b4.cdn.bspapp.com/VKCEYUGU-f184e7c3-1912-41b2-b81f-435d1b37c7b4/f6c7281f-063f-4691-b600-c9ba6f361a9c.png)


**注意**：
- 公测版不可迁移到正式版的免费版（开发者版）
- 购买待迁移正式版空间后，为了保证数据迁移的一致性，此时的正式版空间无法在HBuilderX关联、无法在控制台创建数据表、无法在云存储及前端网页托管上传文件等操作，直至迁移完成。
- 只有通过`迁移正式版`完成创建的正式版服务空间才支持一键迁移，原已创建的正式版空间无法使用该功能。
- 如果是开发的是小程序，请在迁移前先到小程序后台配置新的上传域名到上传域名白名单（注意不要移除公测版服务空间的上传下载域名），**由于小程序安全域名在微信客户端内有缓存，建议再迁移前两天进行配置**

## 配置迁移时间
在创建完成待迁移的正式版服务空间后，可为此空间配置迁移任务执行的时间，迁移任务将会在该时间自动执行。

![](https://f184e7c3-1912-41b2-b81f-435d1b37c7b4.cdn.bspapp.com/VKCEYUGU-f184e7c3-1912-41b2-b81f-435d1b37c7b4/fda14625-819b-4daa-a60f-1e371ee6d480.png)

迁移时间只能配置未来三天内的时间点，在未开始执行之前可更改迁移时间。

![](https://f184e7c3-1912-41b2-b81f-435d1b37c7b4.cdn.bspapp.com/VKCEYUGU-f184e7c3-1912-41b2-b81f-435d1b37c7b4/61d75657-6600-4142-855a-656595bc21b6.png)

## 迁移开始
系统会在设置的迁移时间自动开始执行迁移任务，迁移逻辑及注意事项如下：

### 云数据库

- 云数据库无需迁移，会将公测版服务空间的数据库关联到正式版上，所以**请勿删除公测版数据**

迁移期间是否可正常服务：<font color=#42b983>是</font>

迁移类型：<font color=#42b983>无感迁移</font>

迁移耗时：无

### 云函数

- 云函数定时任务、url化配置及自定义域名会一并迁移，公测版服务空间的url化请求会自动转发到正式版服务空间上
- 如果绑定了自定义域名，此时仍会请求到公测版空间然后转发到正式版空间，您也可以将域名解析到正式版服务空间，免去请求转发的逻辑

迁移期间是否可正常服务：<font color=#42b983>是</font>

迁移类型：<font color=#42b983>无感迁移</font>

迁移耗时：约3-5分钟

### 跨域配置

- 由于正式版跨域配置上限为9条，跨域配置记录迁移后可能会超上限，此时无法新增。正式版跨域配置支持泛域名，可将公测版配置的多个子域名删除后添加一条泛域名

迁移期间是否可正常服务：<font color=#42b983>是</font>

迁移类型：<font color=#42b983>无感迁移</font>

迁移耗时：很短，可忽略不计

### 云存储

- 云存储在迁移开始后，上传文件的功能不可用，访问不受影响
- 原云存储链接仍可正常访问，流量费用会计到正式版空间，正式版空间如果是包年包月则从资源用量中扣除，如果是按量计费则会出账并从余额中扣除，出账时间为T+2

迁移期间是否可正常服务：<font color=#f3a73f>可正常访问，不可上传</font>

迁移类型：<font color=#f3a73f>有感迁移，迁移期间不可上传文件</font>

迁移耗时：1GB迁移耗时约1分钟

### 前端网页托管

- 前端网页托管文件及自定义域名会一并迁移，迁移期间访问不受影响
- 单页应用配置取消，改为由错误页面实现，迁移时会自动将开发者配置的单页应用目录转为错误页面配置项，开发者无需操作
- 默认域名及自定义域名此时仍会请求到公测版空间，与云存储不同的是不会转发到正式版空间

迁移期间是否可正常服务：<font color=#42b983>是</font>

迁移类型：<font color=#f3a73f>有感迁移，迁移完成后自定义域名需重新绑定及解析CNAME到正式版</font>

迁移耗时：1GB迁移耗时约1分钟


## 迁移完成

在迁移任务执行完成后，业务中公测版服务空间相关的数据会一并迁移至正式版：

1. 插件市场购买的付费插件
2. 公测版服务空间购买的Redis
3. 公测版服务空间添加的协作者
4. 公测版服务空间添加的安全网络及IP防刷配置

此时公测版服务空间将无法在[uniCloud控制台](https://unicloud.dcloud.net.cn)操作，无法在HBuilderX关联， 正式版服务空间已完全替代公测版，可在HBuilderX关联进行打包。

### 迁移完成后的TODO

- 检查云函数运行是否正常，比如定时任务及url化是否正常、云函数/云对象中获取到的SpaceId是否符合预期
- 检查云存储上传是否正常，公测版服务空间的上传请求会转发到正式版，所以上传的文件会在正式版里体现
- 检查前端网页托管是否正常，比如自定义域名的访问。如果有使用默认域名请尽快替换为正式版域名

### 前端网页托管绑定了自定义域名

如果绑定了自定义域名，则仍会请求到公测版服务空间，此时正式版上传的文件并不会反向同步到公测版，所以会导致自定义域名无法访问新上传的文件。 ，
需要开发者在[uniCloud控制台](https://unicloud.dcloud.net.cn)将自定义域名解绑后再次重新绑定，获取到新的CNAME后，将域名解析更换到新的CNAME，这个期间前端网页托管自定义域名的访问会中断。

## 其他注意事项

- 迁移后开发者下次在HBuilderX打包发行时会使用正式版服务空间ID。请注意这时候需要修改小程序request域名白名单，将`api.next.bspapp.com`添加到request域名白名单内
- 正式版固定IP代理出口IP和公测版不同，如有在三方平台配置域名白名单请自行修改，参考：[阿里云固定IP](cf-functions.md#aliyun-eip)
- 迁移到正式版后，公测版服务空间的数据库备份不会被迁移过来
- 迁移后公测版服务空间前端网页托管默认域名将在公测结束后自动回收  
- 迁移后不可删除公测版服务空间，需等待公测结束后自动回收