1.文檔簡介html
微軟公司爲其在境外由微軟運營的 Azure 服務(如下簡稱爲 「境外 Azure」),建立和部署雲應用程序,提供了相應工具。java
在中國,由世紀互聯運營的 Microsoft Azure (如下簡稱爲 「中國區 Azure」)是獨立的服務平臺,由世紀互聯公司提供並運營,其數據中心位於中國大陸(不包括香港特別行政區、澳門特別行政區和中國臺灣地區)。所以,建立和部署應用程序時,開發人員需先了解中國區 Azure 和境外 Azure 的主要區別,而後再設置編程環境,編寫應用程序,部署在中國託管的服務。python
本文檔概述了這兩種服務的區別,併爲中國 Azure 門戶提供補充信息。同時,官方信息也會經過多個途徑發佈,例如 Azure 海報以及博客。本文目標讀者爲在中國部署、託管數據中心的合做夥伴及開發人員。mysql
有關中國區 Azure 服務功能的更新,請訪問中國 Azure 門戶。有關當前 Azure 內容信息,請參閱本文檔附錄。git
2.開發人員指南github
目前微軟公司提供的大部分英文技術文檔中,應用程序都針對境外 Azure 開發,而非中國區 Azure,所以開發人員必須瞭解二者主要區別:web
首先,二者存在功能差別,境外 Azure 的某些功能在中國不可用。sql
其次,中國區 Azure 與境外 Azure 的服務功能存在操做差別,所以使用爲境外 Azure 編寫的英文文檔時,開發人員應該根據須要,自定義示例代碼和步驟。數據庫
3.中國數據中心編程
目前,中國區 Azure 有兩個數據中心,在位置字段中顯示爲「中國北部」和「中國東部」。
4.在 Azure 上建立應用程序的區別
在中國區 Azure 上開發應用程序與在境外 Azure 上開發的主要區別在於,中國區 Azure 端點地址有不一樣的 URI。 例如,Azure 和 SQL 數據庫 URI 一般以 windows.net 結尾。 URI 端點不一樣時,開發人員必須可以識別,而後配置所需的工具和應用程序,並使用適合的 URI。
5.設置開發計算機
Visual Studio 2015 支持在中國區 Azure 上開發,使用 Visual Studio 2015 update 3。
步驟以下:
1.請使用如下注冊表文件:
Azure.reg
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\VSCommon\ConnectedUser]
"AadInstance"="https://login.chinacloudapi.cn/"
"adaluri"="https://management.core.chinacloudapi.cn"
"AzureRMEndpoint"="https://management.chinacloudapi.cn"
"AzureRMAudienceEndpoint"="https://management.core.chinacloudapi.cn"
"EnableAzureRMIdentity"="true"
"GraphUrl"="graph.chinacloudapi.cn"
若要將 Reg 值返回境外 Azure,請使用此處的註冊表文件:
TargetProduction.reg
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\VSCommon\ConnectedUser]
"Uri"=-
"AadInstance"=-
"adaluri"=-
"AzureRMEndpoint"=-
"AzureRMAudienceEndpoint"=-
"EnableAzureRMIdentity"=-
"GraphUrl"=-
"AadApplicationTenant"=-
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\VisualStudio\14.0\MicrosoftAzureServices]
"Resource Management Audience Endpoint"=-
"Service Management Endpoint"=-
2.雙擊 Azure.reg 文件,贊成彈出信息,容許註冊表值更改;
3.註冊表值更改後,Visual Studio 的登陸信息鏈接到中國區 Azure 服務。
Visual Studio 2017 剛剛發佈,咱們引入了新的方式來鏈接到中國區 Azure 服務。
步驟以下:
新建一個 JSON 文件 AadProvider.Configuration.json,文件內容以下:
{
"AuthenticationQueryParameters": null,
"AsmEndPoint": "https://management.core.chinacloudapi.cn",
"Authority": "https://login.chinacloudapi.cn/",
"AzureResourceManagementEndpoint": "https://management.chinacloudapi.cn/",
"AzureResourceManagementAudienceEndpoints": [ "https://management.core.chinacloudapi.cn/" ],
"ClientIdentifier": "872cd9fa-d31f-45e0-9eab-6e460a02d1f1",
"EnvironmentName": "Mooncake",
"GraphEndpoint": "https://graph.chinacloudapi.cn",
"MsaHomeTenantId": "f577cd82-810c-43f9-a1f6-0cc532871050",
"NativeClientRedirect": "urn:ietf:wg:oauth:2.0:oob",
"PortalEndpoint": "http://manage.windowsazure.cn",
"ResourceEndpoint": "https://management.core.chinacloudapi.cn/",
"ValidateAuthority": true,
"VisualStudioOnlineEndpoint": "https://app.vssps.visualstudio.com/",
"VisualStudioOnlineAudience": "499b84ac-1321-427f-aa17-267ca6975798"
}
鏈接到中國區 Azure 服務
1.確保已登出並關閉 Visual Studio。
2.刪除 %temp%\servicehub 文件夾(詳細路徑爲 C:\Users\%USERPROFILE%\AppData\Local\Temp\servicehub)。
3.把前面新建的 JSON 文件 (AadProvider.Configuration.json) 拷貝到 %localappdata%\.IdentityService\AadConfigurations(詳細路徑爲 C:\Users\%USERPROFILE%\AppData\Local\.IdentityService\AadConfigurations, AadConfigurations 文件夾可能不存在,須要手動建立)。
4.重啓 VS 並添加中國 Azure 帳戶便可。
切換回 Global Azure
1.確保已登出並關閉 Visual Studio。
2.刪除文件夾。%localappdata%\.IdentityService\AadConfigurations
3.重啓 VS 便可鏈接 Global Azure。
6Java 用戶使用中國區 Azure
目前須要開發者使用 Azure CLI 生成認證文件,在 Eclipse 或 IntelliJ 中選擇基於文件的方式登錄,並上傳此認證文件,便可完成鏈接 ( 參考 Azure SDK 相關頁 )。
步驟以下:
1.請首先安裝 Azure CLI,版本要求 2.0 及以上。
2.使用 Azure CLI 生成認證文件並保存至本地。
a. 使用 az cloud set --name AzureChinaCloud 鏈接中國區 Azure。
b. 使用 az login -u <account email> -p <account password> 替換其中的帳號和密碼,登錄 Azure。
c. 若是在中國區 Azure 有多個訂閱帳戶 Subscription,使用 az account set --subscription <subscirption name> 選擇用來生成認證信息的訂閱帳戶。
d. 使用如下命令,生成認證文件 my.azureauth 並保存於本地。 curl -L https://raw.githubusercontent.com/Azure/azure-sdk-for-java/master/tools/authgen.py | python > my.azureauth
3.在 Eclipse 或 IntelliJ 中,選擇基於文件的方式登錄,並上傳步驟 2 中生成的認證文件。
a. 請確認已在 Eclipse 或 IntelliJ 中安裝或更新至最新版本的 Azure Toolkit 插件。
b. 在 Azure Sign In 窗口選擇 Automated 做爲登錄方式,並上傳步驟 2 中生成的認證文件 my.azureauth。
c. 點擊登錄,便可鏈接中國區 Azure。如遇問題,可在 Azure Toolkit 相關頁提出並標記 Mooncake 標籤。
7.實用場景示例
1.按照說明輸入認證信息;
2.輸入登陸信息;
3.從 Cloud Explorer 查看中國區 Azure 訂閱中的資源。
2.選擇 Microsoft Azure App Service;
3.從賬戶選擇器中選擇 Azure 賬戶;
4.編輯模板參數,繼續部署。
其餘功能的步驟與此相似。
8.中國區 Azure 資源端點URI (供應用程序代碼使用)
中國區 Azure 的 URI 與境外 Azure 的 URI 存在差別。 用戶需確保,在應用程序代碼和配置文件使用適當字符串的前提下,再與中國區 Azure 端點鏈接。 請注意,若是 Visual Studio 鏈接到中國區 Azure 訂閱,Visual Studio 生成的鏈接字符串會自動使用中國區 Azure URI,鏈接每一個資源。
下表指導用戶將境外 Azure 資源端點映射到中國特定端點。
服務類型 | 在境外由微軟運營的 Microsoft Azure URI | 由世紀互聯運營的 Microsoft Azure URI |
---|---|---|
Azure - 常規 | *.windows.net | *.chinacloudapi.cn |
Azure - 計算 | *.cloudapp.net | *.chinacloudapp.cn |
Azure - Service Fabric Cluster | *.cloudapp.azure.com | *.cloudapp.chinacloudapi.cn |
Azure - 存儲 | *.blob.core.windows.net *.queue.core.windows.net *.table.core.windows.net *.file.core.windows.net |
*.blob.core.chinacloudapi.cn *.queue.core.chinacloudapi.cn *.table.core.chinacloudapi.cn *.file.core.chinacloudapi.cn |
Azure - 服務管理 | https://management.core.windows.net | https://management.core.chinacloudapi.cn |
Azure - 資源管理器 (ARM) | https://management.azure.com | https://management.chinacloudapi.cn |
SQL 數據庫 | *.database.windows.net | *.database.chinacloudapi.cn |
Azure - 管理門戶 | http://manage.windowsazure.com https://portal.azure.com |
https://manage.windowsazure.cn https://portal.azure.cn |
SQL Azure 數據庫管理 API | https://management.database.windows.net | https://management.database.chinacloudapi.cn |
服務總線 | *.servicebus.windows.net | *.servicebus.chinacloudapi.cn |
ACS | *.accesscontrol.windows.net | *.accesscontrol.chinacloudapi.cn |
HDInsight | *.azurehdinsight.net | *.azurehdinsight.cn |
MySQL Paas | - | *.mysqldb.chinacloudapi.cn |
Azure PowerShell Login (Classic, 舊的 Azure 服務管理) | Add-AzureAccount | Add-AzureAccount -Environment AzureChinaCloud |
Azure PowerShell Login (Azure 資源管理) | Add-AzureRmAccount | Add-AzureRmAccount -EnvironmentName AzureChinaCloud |
AAD | *.onmicrosoft.com | *.partner.onmschina.cn |
AAD PowerShell Login | Connect-msolservice | Connect-msolservice -AzureEnvironment AzureChinaCloud |
AAD Login | https://login.windows.net | https://login.chinacloudapi.cn |
AAD Graph API | https://graph.windows.net | https://graph.chinacloudapi.cn |
Azure 認知服務 | https://api.projectoxford.ai/face/v1.0 | https://api.cognitive.azure.cn/face/v1.0 |
SQL 數據庫導入/導出服務映射端點 | 1. 中國東部:https://sh1prod-dacsvc.chinacloudapp.cn/dacwebservice.svc 2. 中國北部:https://bj1prod-dacsvc.chinacloudapp.cn/dacwebservice.svc |
|
Power BI Embedded | https://api.powerbi.com | https://api.powerbi.cn |
Power BI Embedded | https://embedded.powerbi.com | https://embedded.powerbi.cn |
O365 | https://login.microsoftonline.com | https://login.partner.microsoftonline.cn |
Device Login | https://aka.ms/devicelogin | https://aka.ms/deviceloginchina 或者 https://login.chinacloudapi.cn/common/oauth2/deviceauth |
Documentdb | documents.azure.com | documents.azure.cn |
Traffic Manager | *.trafficmanager.net | *.trafficmanager.cn |
Media Services resource | https://rest.media.azure.net | https://rest.media.chinacloudapi.cn |
Media Services Rest API | https://accountname.restv2.<location>.media.azure.net/api/ | https://accountname.restv2.<location>.media.chinacloudapi.cn/api/ |
開發人員必須使用自定義存儲端點。 默認設置指向 *.core.windows.net,其中 * 隨着用戶應用程序和存儲位置的不一樣而不一樣。
例如,在 Cloud Services 應用程序的服務配置文件(.cscfg)中,設置自定義數據鏈接字符串,指向中國區 Azure 的 blob,隊列和表存儲 URI。 如下代碼爲自定義端點的示例,其中 <AccountKey> 變量必須由特定的存儲賬戶鍵替換。 字符串 mystorageaccount 是在訂閱下建立的存儲賬戶示例。
<Setting name="DataConnectionString"
value="BlobEndpoint=https://mystorageaccount.blob.core.chinacloudapi.cn/;QueueEndpoint=https://mystorageaccount.queue.core.chinacloudapi.cn/;TableEndpoint=https://mystorageaccount.table.core.chinacloudapi.cn/;AccountName=mystorageaccount;AccountKey=<AccountKey> " />
用戶可經過 Azure 雲服務應用程序,爲鏈接字符串建立自定義端點:
打開含一個或多個角色的 Azure 解決方案;
右鍵單擊 Solution Explorer 中的任意角色,彈出該角色的配置;
單擊 Settings;
單擊 Add Setting;
爲設置鍵入名稱;
選擇鏈接字符串的類型;
單擊…彈出 Storage Account Connection String 對話框;
選擇 Enter storage account credentials;
輸入正確的存儲賬戶名和密鑰;
選擇 Use custom endpoints,而後爲 blob、表和隊列端點輸入正確的 https 字符串;
單擊 OK。
Visual Studio 在服務配置文件中建立自定義存儲端點,開發人員能夠從角色代碼中使用此存儲端點。
如下代碼經過使用爲中國區 Azure 特定的自定義 URL,以編程方式鏈接到存儲賬戶。
CloudStorageAccount Account = new CloudStorageAccount(
new StorageCredentialsAccountAndKey(ACCOUNTNAME, ACCOUNTKEY),
new Uri("http://ACCOUNTNAME.blob.core.chinacloudapi.cn/"),
new Uri("http://ACCOUNTNAME.queue.core.chinacloudapi.cn/"),
new Uri("http://ACCOUNTNAME.table.core.chinacloudapi.cn/")
);
CloudBlobClient BlobClient = Account.CreateCloudBlobClient();
9.Azure 雲服務應用程序中的端口綁定
端口綁定一樣使用以 .cloudapp.net 結尾的 DNS 名稱。用戶必須更改這些名稱,指向 .chinacloudapp.cn。如下顯示了包括端口說明的部分服務定義文件:
<Sites>
<Site name="MySite" physcalDirectory="..\WebSite1">
<Bindings>
<Binding name="My" endpointName="HttpIn" hostHeader="WebSite1.mysite.Chinacloudapp.cn" />
</Bindings>
</Site>
<Site name="Web">
<Bindings>
<Binding name="HttpIn" endpointName="HttpIn" />
</Bindings>
</Site>
</Sites>
10.鏈接 SQL 數據庫服務器
SQL 數據庫服務器名稱將由 *.database.windows.net 更改成 *.database.chinacloudapi.cn。 全部客戶端應用程序或工具都必須使用新名稱命名其鏈接字符串,鏈接到數據庫。 對於未在中國區 Azure 運行的應用程序,可參照 SQL 數據庫服務器的值,該值能夠是服務定義文件中的 DataConnectionString 值,或 .NET 其它配置文件中的值。 例如:
<configuration>
<connectionStrings>
<add name="SQLAzure" connectionString="Server=tcp:yourserver.database.chinacloudapi.cn,1433;
Database=Test;User ID=login@server;Password=yourPassword;
Trusted_Connection=False;Encrypt=True;"/>
</connectionStrings>
</configuration>
11.Active Directory 和服務總線
Azure Active Directory(AAD)能夠爲本地部署和雲應用程序提供身份和訪問功能。開發人員利用 AAD 功能,可爲企業應用程序和軟件即服務(SaaS)供應商實現單點登陸和單點註銷;可經過使用圖形 API 查詢和管理雲目錄對象;還能夠與本地 Active Directory 整合,將目錄數據同步到雲端。
中國區 Azure 包含 Azure AD。然而從設計角度講,仍存在一些影響開發人員體驗的差別,如下會展開介紹。
中國區 Azure 是個自定義產品,雖然與境外 Azure 有許多共同特性,但自定義仍會致使如下差別,對開發人員使用 AAD 形成影響:
中國區 Azure 不包含訪問控制(Access Control)命名空間。要集成應用程序以及與 Azure 身份驗證服務同步的目錄,須要使用 Azure 中的 Active Directory。在 Azure 經典管理門戶中,單擊" Active Directory」。
ACS 管理門戶僅適用於服務總線命名空間。
除了這些自定義帶來的差別,中國區 Azure 中的 Azure AD 設計與境外 Azure 所有一致。
Note
中國區 Azure 在預覽期間,其建立的訪問控制命名空間既不能操做,也不能訪問。 可是,相似的功能可在 Azure 管理門戶的 Active Directory 中使用。
若是使用共享訪問簽名(SAS)鏈接服務總線,只需在項目配置文件中更改端點便可。
若是使用訪問控制服務(ACS)鏈接服務總線,能夠採起如下任一選項,將使用服務總線的應用程序重定向到特定端點:
選項 1:使用環境變量重定向單個或所有應用程序。
選項 2:使用 ServiceBus.config 文件重定向單個應用程序。
選項 3:使用 ServiceBus.config 文件重定向所有應用程序。
若是 EXE 文件或工做人員角色處於運行狀態,任一選項都可用。 若是使用 Web 角色,僅選項 3 可用。
不管選擇哪一種選項,端點名稱都將按照下表進行更改。
服務總線端點 | 等效的中國 Azure 服務總線端點 |
servicebus.windows.net | servicebus.chinacloudapi.cn |
accesscontrol.windows.net | accesscontrol.chinacloudapi.cn |
1.考慮變量設置的級別。 對於整個計算機、單個用戶或運行單個應用程序的環境,其環境變量設置的含義都不相同。
2.以適當的級別設置如下環境變量:
RELAYHOST=servicebus.chinacloudapi.cn
STSHOST=accesscontrol.chinacloudapi.cn
RELAYENV=Custom
Warning
經過 csdef 文件中的 <environment> 標記爲 Web 角色添加環境變量時,此選項不可用。 Web 角色在 w3wp.exe 的上下文中運行。 環境變量不會傳播到 w3wp.exe 環境。 請參閱 Web 角色的選項 3。
1.建立以下的 ServiceBus.config 文件,其中包含適當的主機信息。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<Microsoft.ServiceBus>
<relayHostName>servicebus.chinacloudapi.cn</relayHostName>
<stsHostName>accesscontrol.chinacloudapi.cn</stsHostName>
</Microsoft.ServiceBus>
</configuration>
2.將 ServiceBus.config 文件與服務總線 / ACS應用程序的 .exe 文件放置在同一目錄中。
此選項不適用於 Azure 雲服務 Web 角色,由於它們在 w3wp.exe 的上下文中運行。 所以,系統在 %Windir%\ System32 \ inetsrv \ 中查找 servicebus.config 文件時,該文件不存在。
1.在 .NET Framework 配置目錄中查找現有的 ServiceBus.config 文件。 .NET Framework 配置目錄取決於 32 位或 64 位的操做系統版本,以及已安裝的框架版本,如下爲經常使用位置。
Microsoft .NET Framework 版本 | 操做系統版本 | 目錄 |
2.0 至 3.5 | 32 位 | %Windir%\Microsoft.NET\Framework\v2.0.50727\CONFIG |
2.0 至 3.5 | 64 位 | %Windir%\Microsoft.NET\Framework64\v2.0.50727\CONFIG |
4.0 | 32 位 | %Windir%\Microsoft.NET\Framework\v4.0.30319\Config |
4.0 | 64 位 | %Windir%\Microsoft.NET\Framework64\v4.0.30319\Config |
2.若是目錄中存在現有的 ServiceBus.config 文件,必須編輯該文件,添加選項 2(使用 ServiceBus.config 重定向單個應用程序)列出的 XML 配置。 若是該配置添加後,與 ServiceBus.config 文件中的現有信息產生衝突,則不能使用此選項。 必須使用選項 1 或選項 2。
開發人員只有瞭解角色使用的框架,才能指向特定的框架目錄。 可是,如下腳本歸納了使用 Web 角色的複製過程。 若是 servicebus.config 文件存在,該腳本會將此文件複製到每一個 .NET 目錄中。
@echo off
pushd .
cd %windir%\Microsoft.Net\Framework64\
REM set copylocal=true on servicebus.config so its present in bin dir
for /f %%i in ('dir /s /b config') do copy /y %~dp0servicebus.config %%~fi
popd
12.使用服務管理 API
經過服務管理 API,開發人員能夠對 Azure 中運行的託管服務進行部署管理。 事實上,境外 Azure 和中國區 Azure 的管理門戶都使用服務管理 API。
境外 Azure 編寫代碼使用的路徑爲:https://management.core.windows.net。中國區 Azure 編寫代碼使用的路徑爲:https://management.core.chinacloudapi.cn。
13.重定將自定義域名定位到中國區 Azure 的託管服務中
若是用戶使用的自定義域名被轉發到境外 Azure 中運行的託管服務,並將該託管服務移至中國區 Azure,必須更新轉發域,指向新的中國特定終端點。
例如,若是要將 www.contoso.com 重定向到運行在 contoso.cloudapp.net 的 web 角色中,那麼如今就必須將其重定向到 contoso.chinacloudapp.cn 中。
14.使用 Azure 診斷
Azure 診斷經過使用開發計算機上的本地存儲或中國區 Azure 存儲賬戶,存儲診斷信息。
在* .cscfg 文件中添加如下配置信息:
<ConfigurationSettings>
<Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="<YourStorageString>" />
</ConfigurationSettings>
<YourStorageString> 的值是個自定義端點,將URI併入中國區 Azure。
爲 HTTPS 端點從新發布證書
15.使用自定義域名時無需更改證書。
若是任一現有應用程序使用 HTTPS 端點,並將證書綁定到 https://*.cloudapp.net(其中 * 是服務的名稱),則必須爲*.chinacloudapp.cn 從新發布證書。 在中國部署服務時,必須使用這些新證書。
16.使用 Azure PowerShell
在 PowerShell 控制檯鍵入如下命令,登陸 Azure China Cloud:
ASM 模式:
Add-AzureAccount -Environment AzureChinaCloud
ARM 模式
Login-AzureRmAccount -EnvironmentName AzureChinaCloud
17.使用 Azure CLI
在命令提示符下鍵入如下命令,登陸 Azure China Cloud:
azure
login
-e
AzureChinaCloud
在命令提示符下鍵入如下命令,登陸 Azure China Cloud:
az
cloud
set
--name
AzureChinaCloud
az
login
18.爲 Node.js 使用 Azure SDK
若是要在中國區 Azure 中使用 SDK,需從管理門戶或 CLI 中提供鏈接字符串。
存儲、服務總線和通知中心都接受各自的鏈接字符串,可經過管理門戶或使用 CLI 獲取該值。
var tableService = azure.createTableService(storageConn);
var blobService= azure.createBlobService(storageConn);
var queueService = azure.createQueueService(storageConn);
var serviceBusService = azure.createServiceBusService(sbConn);
var notificationHubService = azure.createNotificationHubService(nhConn);
要管理 SQL 數據庫服務器,可使用此配置:
var sqlManagementService = azure.createSqlManagementService(subscriptionId, authentication, hostOptions);
19.附錄:Azure 的內容庫
如下列出了 Azure 當前可用的全部內容資產,並指明該資產是否專門針對中國區 Azure。
資產 | 內容是否專爲中國建立 | 說明 |
azure.microsoft.com | 否 | 在境外由微軟運營的 Microsoft Azure 官網。 |
azure.cn | 是 | 由世紀互聯運營的 Microsoft Azure 官網 |
境外客戶案例 | 否 | http://azure.microsoft.com/zh-cn/case-studies/ |
中國客戶案例 | 是 | https://www.azure.cn/partnerancasestudy/case-studies/ |
P&P 叢書 | 否 |
|
MVP 的著做 | 否 | |
MSDN 庫 | 是/否 | https://msdn.microsoft.com/library/azure/ |
Azure 團隊的博客 | 是/否 | http://blogs.msdn.com/b/azchina/ |
MSDN Azure 門戶 | 否 | http://msdn.microsoft.com/zh-cn/ff380142 |
MSDN 雜誌 | 否 | |
虛擬實驗室 | 否 | |
視頻 | 否 | 第 9 頻道的視頻討論境外服務,與優酷上的中國視頻 (http://www.youku.com/playlist_show/id_19321941.html)相同 |
Azure 培訓包 | 否 | Github 中的本地化培訓包用於境外服務 |
MSDN 代碼庫 | 否 | http://code.msdn.microsoft.com/windowsazure/ |
Github | 否 | 僅在此處託管 azure.cn 的英文內容,不提供本地化內容 |