Create Deployment

 

Create Deployment 非同期操作は、新しいサービス パッケージをアップロードし、ステージング環境または運用環境での新しい展開を作成します。

この操作を実行する前に、次の作業を完了する必要があります。

  • サブスクリプションを作成して、サブスクリプション識別子を取得します。 Microsoft Azure サブスクリプションを作成する方法の詳細については、次を参照してください。 Microsoft Azure へようこそです。 サブスクリプション識別子は、管理ポータルの [設定] ページで取得できます。

  • 操作を承認するための管理証明書を作成しアップロードします。 詳細については、次を参照してください。 を作成し、Microsoft Azure の管理証明書をアップロードです。

  • 使用して、クラウド サービスを作成する クラウド サービスの作成です。

  • ステージング環境または運用環境にアプリケーションをデプロイするかどうかを決定します。 詳細については、を参照してください クラウド サービスは何ですか。

Create Deployment 要求は次のように指定します。 置き換える <subscription-id> をサブスクリプション ID に、 <cloudservice-name> 、クラウド サービスの名前を持つと <deployment-slot>staging または productionです。

メソッド

要求 URI

POST

https://management.core.windows.net/<subscription-id>/services/hostedservices/<cloudservice-name>/deploymentslots/<deployment-slot>

管理サービスに対して行われる要求をセキュリティで保護する必要があります。 詳細については、次を参照してください。 サービス管理要求の認証です。

ありません。

要求ヘッダーの説明を次の表に示します。

要求ヘッダー

説明

Content-Type

必須です。 このヘッダーを設定 application/xmlです。

x-ms-version

必須です。 この要求に使用する操作のバージョンを指定します。 このヘッダーを設定する必要があります 2009年-10-01 またはそれ以降。 バージョン ヘッダーの詳細については、次を参照してください。 サービス管理のバージョン管理です。

要求本文の形式は次のとおりです。


<?xml version="1.0" encoding="utf-8"?> <CreateDeployment xmlns="http://schemas.microsoft.com/windowsazure"> <Name>deployment-name</Name> <PackageUrl>package-url-in-blob-storage</PackageUrl> <Label>base64-encoded-deployment-label</Label> <Configuration>base64-encoded-configuration-file</Configuration> <StartDeployment>start-deployment</StartDeployment> <TreatWarningsAsError>prioritize-warnings</TreatWarningsAsError> <ExtendedProperties> <ExtendedProperty> <Name>property-name</Name> <Value>property-value</Value> </ExtendedProperty> </ExtendedProperties> <ExtensionConfiguration> <AllRoles> <Extension> <Id>identifier-of-extension</Id> <State>state-of-extension</State> </Extension> </AllRoles> <NamedRoles> <Role> <RoleName>role_name1</RoleName> <Extensions> <Extension> <Id>identifier-of-extension</Id> <State>state-of-extension</State> </Extension> </Extensions> </Role> </NamedRoles> </ExtensionConfiguration> </CreateDeployment>

要求本文の要素を次の表に示します。

要素名

説明

名前

必須です。 デプロイの名前を指定します。

PackageUrl

必須です。 BLOB サービス内のサービス パッケージの場所を表す URL を指定します。 サービス パッケージは、同じサブスクリプションのストレージ アカウント、または任意のストレージ アカウントの共有アクセス署名 (SAS) URI にあります。 共有アクセス署名の詳細については、次を参照してください。 共有アクセス署名によるアクセスの委任です。

構成

必須です。 デプロイの Base 64 エンコード サービス構成ファイルを指定します。

Label (英語の可能性あり)

必須です。 Base 64 でエンコードされたデプロイの識別子を指定します。 識別子の最大長は 100 文字です。 サブスクリプション内で一意のラベルを使用することをお勧めします。 ラベルは追跡の目的で使用できます。

StartDeployment

省略可能です。 作成後すぐにデプロイを開始するかどうかを指定します。 既定値は falseです。

場合 false, 、サービス モデルは引き続きデプロイされますが、コードがすぐに実行されません。 サービスは、代わりに、 Suspended が呼び出されるまで 更新展開の状態 に状態を設定して Running, 、サービスを開始する時点。 デプロイされたサービスについては、中断されていても料金がかかります。

StartDeployment 要素ではバージョン 2010年-04-01 を使用して利用可能なまたはそれ以上のみです。

TreatWarningsAsError

省略可能です。 パッケージの検証警告をエラーとして処理するかどうかを示します。 既定値は falseです。 場合に設定 true, 、 Created Deployment 、サービス パッケージの検証の警告がある場合、操作が失敗しました。

TreatWarningsAsError 要素のバージョン 2011年-04-01 を使用して利用可能なまたはそれ以上はだけです。

名前

省略可能です。 デプロイの拡張プロパティの名前を指定します。 各拡張プロパティには、定義済みの名前と値の両方が必要です。 25 の拡張プロパティの名前と値のペアは最大ことができます。

Name 要素の最大長は 64 文字です。Name では英数字とアンダースコアのみが有効であり、名前の先頭にはアルファベットを使用する必要があります。

Name 要素で、バージョン 2012年-03-01 を使用して利用可能なまたはそれ以上のみです。

省略可能です。 クラウド サービスの拡張プロパティの値を指定します。 各拡張プロパティには、定義済みの名前と値の両方が必要です。 最大 25 の拡張プロパティの名前と値のペアのことが可能し、各拡張プロパティの値は 255 文字の最大長を持ちます。

Value 要素で、バージョン 2012年-03-01 を使用して利用可能なまたはそれ以上のみです。

ExtensionConfiguration

省略可能です。 クラウド サービスに追加される拡張機能を指定します。 Azure では、プロセスはクラウド サービスの拡張機能として実行できます。 使用して、クラウド サービスに拡張機能を追加する必要があります 拡張機能を追加します。 前に、展開に追加できます。

ExtensionConfiguration 要素ではバージョン 2013年-03-01 を使用して利用可能なまたはそれ以上のみです。

クラウド サービスに追加される拡張機能を指定します。

要素名

説明

AllRoles

省略可能です。 デプロイ内のすべてのロールに適用される拡張機能のリストを指定します。

内線

必須です。 クラウド サービスのロールにデプロイされる拡張機能を指定します。

NamedRoles

省略可能です。 デプロイの特定のロールに適用される拡張機能のリストを指定します。

クラウド サービスのロールにデプロイされる拡張機能を指定します。

要素名

説明

ID

必須です。 拡張機能の識別子を指定します。 識別子は、クラウド サービスに拡張機能が追加されると作成されます。 使用して、クラウド サービスに追加された拡張機能の識別子を確認することができます 拡張機能の一覧表示です。

State

省略可能です。 拡張機能の状態を指定します。 この要素は JSON で構成された拡張機能にのみ適用されます。

次の値をとります。

  • Enable

  • Disable

  • Uninstall

既定値は Enableです。

State 要素ではバージョン 2014年-06-01 を使用して利用可能なまたはそれ以上のみです。

デプロイの特定のロールに適用される拡張機能のリストを指定します。

要素名

説明

ロール

必須です。 拡張機能が追加される特定のロールを指定します。

RoleName

必須です。 ロールの名前を指定します。

内線

必須です。 クラウド サービスのロールにデプロイされる拡張機能を指定します。

応答には、HTTP ステータス コードと一連の応答ヘッダーが含まれます。

操作に成功すると、状態コード 200 (OK) が返されます。 状態コードについては、次を参照してください。 サービス管理のステータス コードとエラー コードです。

この操作の応答には、次のヘッダーが含まれています。 追加の標準 HTTP ヘッダーが応答に含まれていることもあります。 すべての標準ヘッダーに準拠している、 http/1.1 プロトコル仕様です。

応答ヘッダー

説明

x-ms-request-id

管理サービスに対して行われた要求を一意に識別する値。 非同期操作を呼び出すことができます 操作の状態を取得します。 、操作が完了するかどうかを判断するヘッダーの値を含むが失敗、または進行中です。

ありません。

次のコンソール アプリケーションの例は、アプリケーションのデプロイ方法を示しています。 次の変数の値は置き換えてください。

  • 拇印 -サブスクリプションの管理証明書のサムプリントに置き換えます

  • SubscriptionId – 管理ポータルから取得したサブスクリプション識別子を持つ

  • ServiceName -作成したクラウド サービスの名前に置き換えます

  • DeploymentName -、展開を使用する名前に置き換えます

    System_CAPS_noteメモ

    使用することができます List Locations 適切な場所を取得します。

  • PackageName – パッケージ ファイルを Blob ストレージにパスを使用

  • ConfigFile – サービスの構成ファイルの名前を持つ


using System; using System.Collections.Generic; using System.Xml.Linq; using System.Text; using System.Security.Cryptography.X509Certificates; using System.Net; using System.IO; using System.Xml; namespace CreateDeployment { class Program { private static XNamespace wa = "http://schemas.microsoft.com/windowsazure"; private const string Thumbprint = "certificate-thumbprint"; private const string SubscriptionId = "identifier-of-subscription"; private const string ServiceName = "name-of-cloud-service"; private const string DeploymentName = "name-of-deployment-name"; private const string PackageName = "location-of-package"; private const string ConfigFile = "name-of-configuration-file"; private const string Version = "2013-08-01"; static void Main(string[] args) { // Set the certificate that matches the Thumbprint value. X509Certificate2 certificate = GetStoreCertificate(Thumbprint); // Create the URI for the request string uriFormat = "https://management.core.windows.net/{0}/" + "services/hostedservices/{1}/deploymentslots/production"; Uri uri = new Uri(String.Format(uriFormat, SubscriptionId, ServiceName)); // Base-64 encode the label of the deployment byte[] bytes = System.Text.Encoding.UTF8.GetBytes(ServiceName); string base64Label = Convert.ToBase64String(bytes); // Create the request body XDocument requestBody = new XDocument( new XDeclaration("1.0", "UTF-8", "no"), new XElement(wa + "CreateDeployment", new XElement(wa + "Name", DeploymentName), new XElement(wa + "PackageUrl", PackageName), new XElement(wa + "Label", base64Label), new XElement(wa + "Configuration", ConvertFile(ConfigFile)), new XElement(wa + "StartDeployment", true))); // Submit the request and get the response XDocument responseBody; HttpWebResponse response = InvokeRequest(uri, "POST", certificate, requestBody, out responseBody); string requestId = String.Empty; if (response.Headers != null) { requestId = response.Headers["x-ms-request-id"]; } if (responseBody != null) { Console.WriteLine(responseBody.ToString(SaveOptions.OmitDuplicateNamespaces)); } XDocument statusResponse = GetStatus(requestId); if (statusResponse != null) { Console.WriteLine(statusResponse.ToString(SaveOptions.OmitDuplicateNamespaces)); } Console.Write("Press any key to continue:"); Console.ReadKey(); } //Get the status of the request private static XDocument GetStatus(string requestId) { // Set the certificate that matches the Thumbprint value. X509Certificate2 certificate = GetStoreCertificate(Thumbprint); // Create the URI for the request string uriFormat = "https://management.core.windows.net/{0}/" + "operations/" + requestId; Uri uri = new Uri(String.Format(uriFormat, SubscriptionId)); HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri); request.Method = "GET"; request.Headers.Add("x-ms-version", Version); request.ClientCertificates.Add(certificate); request.ContentType = "application/xml"; // Submit the request and get the response XDocument responseBody = null; HttpWebResponse response; try { response = (HttpWebResponse)request.GetResponse(); } catch (WebException ex) { response = (HttpWebResponse)ex.Response; } if (response.ContentLength > 0) { using (XmlReader reader = XmlReader.Create(response.GetResponseStream())) { responseBody = XDocument.Load(reader); } } response.Close(); return responseBody; } // Add the request headers and get the response from the request private static HttpWebResponse InvokeRequest( Uri uri, string method, X509Certificate2 certificate, XDocument requestBody, out XDocument responseBody) { HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri); request.Method = method; request.Headers.Add("x-ms-version", Version); request.ClientCertificates.Add(certificate); request.ContentType = "application/xml"; if (requestBody != null) { using (Stream requestStream = request.GetRequestStream()) { using (StreamWriter streamWriter = new StreamWriter( requestStream, System.Text.UTF8Encoding.UTF8)) { requestBody.Save(streamWriter, SaveOptions.DisableFormatting); } } } responseBody = null; HttpWebResponse response; try { response = (HttpWebResponse)request.GetResponse(); } catch (WebException ex) { response = (HttpWebResponse)ex.Response; } XmlReaderSettings settings = new XmlReaderSettings(); settings.DtdProcessing = DtdProcessing.Ignore; if (response.ContentLength > 0) { using (XmlReader reader = XmlReader.Create(response.GetResponseStream(), settings)) { try { responseBody = XDocument.Load(reader); } catch { responseBody = null; } } } response.Close(); return response; } // Base-64 encode the contents of the service configuration file. private static string ConvertFile(string configFileName) { string fileContents; string base64String = ""; try { using (StreamReader reader = new StreamReader( File.Open(configFileName, System.IO.FileMode.Open, System.IO.FileAccess.Read))) { fileContents = reader.ReadToEnd(); } } catch (System.Exception exp) { Console.WriteLine(exp.Message); return base64String; } // Convert the binary input into base-64 encoded output. try { base64String = Convert.ToBase64String(Encoding.UTF8.GetBytes(fileContents)); return base64String; } catch (System.ArgumentNullException) { Console.WriteLine("Binary data array is null."); return base64String; } } // Gets the certificate matching the thumbprint from the local store. // Throws an ArgumentException if a matching certificate is not found. private static X509Certificate2 GetStoreCertificate(string thumbprint) { List<StoreLocation> locations = new List<StoreLocation> { StoreLocation.CurrentUser, StoreLocation.LocalMachine }; foreach (var location in locations) { X509Store store = new X509Store("My", location); try { store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly); X509Certificate2Collection certificates = store.Certificates.Find( X509FindType.FindByThumbprint, thumbprint, false); if (certificates.Count == 1) { return certificates[0]; } } finally { store.Close(); } } throw new ArgumentException(string.Format( "A Certificate with Thumbprint '{0}' could not be located.", thumbprint)); } } }
表示: