次の方法で共有


クイックスタート: メール通信サービスに Azure マネージド ドメインを追加する方法

このクイック スタートでは、Azure Communication Services のメール通信サービスに Azure マネージド ドメインをプロビジョニングする方法について説明します。

前提条件

Azure マネージド ドメインをプロビジョニングする

  1. メール通信リソースを作成して開始する」で作成したメール通信サービス リソースの [概要] ページを開きます。

  2. 次のいずれかのオプションを使用して Azure マネージド ドメインを作成します。

    • (オプション 1) [Add a free Azure subdomain] (無料の Azure サブドメインを追加する)[1-click add] (1 クリックで追加) ボタンをクリックします。 手順 3 に進みます。

    無料の Azure マネージド ドメインの追加が強調表示されているスクリーンショット。

    • (オプション 2) 左側のナビゲーション パネルで [Provision Domains] (ドメインのプロビジョニング) をクリックします。

    [ドメインのプロビジョニング] ナビゲーション ページを示すスクリーンショット。

    • 上部のナビゲーション バーで [ドメインの追加] をクリックします。
    • ドロップダウンから [Azure domain] (Azure ドメイン) を選択します。
  3. デプロイが完了するまで待ちます。

    デプロイの進捗を示すスクリーンショット。

  4. ドメインが作成されると、新しいドメインを含むリスト ビューが表示されます。

    プロビジョニングされたメール ドメインの一覧を示すスクリーンショット。

  5. プロビジョニングされたドメインの名前をクリックすると、ドメイン リソースの種類の概要ページが開きます。

    Azure マネージド ドメインの概要ページを示すスクリーンショット。

前提条件

ドメイン リソースを作成する

ドメイン リソースを作成するには、Azure CLI にサインインします。 ターミナルから az login コマンドを実行し、資格情報を入力してサインインできます。 リソースを作成するには、次のコマンドを実行します。

az communication email domain create --domain-name AzureManagedDomain --email-service-name "<EmailServiceName>" --location "Global" --resource-group "<resourceGroup>" --domain-management AzureManaged

特定のサブスクリプションを選択したい場合は、--subscription フラグを指定してサブスクリプション ID を指定することもできます。

az communication email domain create --domain-name AzureManagedDomain --email-service-name "<EmailServiceName>" --location "Global" --resource-group "<resourceGroup>" --domain-management AzureManaged --subscription "<subscriptionId>"

ドメイン リソースは、次のオプションを使用して構成できます。

  • リソース グループ
  • Email Communication Services リソースの名前
  • リソースが関連付けられる地理的な場所
  • ドメイン リソースの名前:
    • Azure ドメインの場合、名前は AzureManagedDomain である必要があります。
  • ドメイン管理プロパティの値。
    • Azure ドメインの場合、値は AzureManaged である必要があります。

次の手順では、ドメイン リソースにタグを割り当てることができます。 タグは、ドメイン リソースを整理するために使用できます。 タグの詳細については、リソースのタグ付けに関するドキュメントを参照してください。

ドメイン リソースを管理する

ドメイン リソースにタグを追加するには、次のコマンドを実行します。 また、特定のサブスクリプションを対象にすることもできます。

az communication email domain update --domain-name AzureManagedDomain --email-service-name "<EmailServiceName>" --resource-group "<resourceGroup>" --tags newTag="newVal1"

az communication email domain update --domain-name AzureManagedDomain --email-service-name "<EmailServiceName>" --resource-group "<resourceGroup>" --tags newTag="newVal1" --subscription "<subscriptionId>"

特定の Email Communication Service 内のすべてのドメイン リソースを一覧表示するには、次のコマンドを使用します。

az communication email domain list --email-service-name "<EmailServiceName>" --resource-group "<resourceGroup>"

特定のドメイン リソースに関するすべての情報を表示するには、次のコマンドを使用します。

az communication email domain show --domain-name AzureManagedDomain --email-service-name "<EmailServiceName>" --resource-group "<resourceGroup>"

ドメイン リソースをクリーンアップする

ドメイン リソースをクリーンアップして削除する場合は、次のコマンドを実行して削除できます。

az communication email domain delete --domain-name AzureManagedDomain --email-service-name "<EmailServiceName>" --resource-group "<resourceGroup>"

Note

リソースの削除は永続的であり、リソースを削除すると、イベント グリッド フィルター、電話番号など、リソースに関連付けられたデータを含むデータを復元できなくなります。

その他のコマンドについては、ドメイン CLI に関するページを参照してください。

前提条件

SDK のインストール

まず、Communication Services Management SDK を C# プロジェクトにインクルードします。

using Azure.ResourceManager.Communication;

サブスクリプション ID

Azure サブスクリプションの ID を把握しておく必要があります。 これは、ポータルから取得できます。

  1. Azure アカウントにログインします
  2. 左側のサイドバーで サブスクリプション を選択します
  3. 必要なサブスクリプションを選択します
  4. [概要] をクリックします
  5. サブスクリプション ID を選択します

このクイックスタートでは、 AZURE_SUBSCRIPTION_ID という名前の環境変数にサブスクリプション ID を格納していることを前提としています。

認証

ドメイン リソースと通信するには、まず自分自身を Azure に対して認証する必要があります。

クライアントを認証する

認証されたクライアントを作成する既定のオプションは、DefaultAzureCredential を使用することです。 すべての管理 API は同じエンドポイントを経由するため、リソースを操作するために、最上位レベルの ArmClient を 1 つだけ作成する必要があります。

Azure に対して認証を行い、ArmClient を作成するには、次のコードを実行します。

using System;
using System.Threading.Tasks;
using Azure;
using Azure.Core;
using Azure.Identity;
using Azure.ResourceManager;
using Azure.ResourceManager.Communication;
using Azure.ResourceManager.Resources;
...
// get your azure access token, for more details of how Azure SDK get your access token, please refer to https://learn.microsoft.com/dotnet/azure/sdk/authentication?tabs=command-line
TokenCredential cred = new DefaultAzureCredential();
// authenticate your client
ArmClient client = new ArmClient(cred);

Azure リソースの操作

これで認証されました。

次の各例では、ドメイン リソースを既存の Email Communication Service.に割り当てます。

Email Communication Service を作成する必要がある場合は、Azure portal を使用してそのようにすることができます。

ドメイン リソースを作成する

ドメイン リソースを作成するときは、リソース グループ名、Email Communication Service 名、リソース名、DomainManagement を指定する必要があります。

Note

Location プロパティは常に globalです。

// this example assumes you already have this EmailServiceResource created on azure
// for more information of creating EmailServiceResource, please refer to the document of EmailServiceResource
string subscriptionId = "11112222-3333-4444-5555-666677778888";
string resourceGroupName = "MyResourceGroup";
string emailServiceName = "MyEmailServiceResource";
ResourceIdentifier emailServiceResourceId = EmailServiceResource.CreateResourceIdentifier(subscriptionId, resourceGroupName, emailServiceName);
EmailServiceResource emailServiceResource = client.GetEmailServiceResource(emailServiceResourceId);

// get the collection of this CommunicationDomainResource
CommunicationDomainResourceCollection collection = emailServiceResource.GetCommunicationDomainResources();

// invoke the operation
string domainName = "AzureManagedDomain";
CommunicationDomainResourceData data = new CommunicationDomainResourceData(new AzureLocation("Global"))
{
    DomainManagement = DomainManagement.AzureManaged,
};
ArmOperation<CommunicationDomainResource> lro = await collection.CreateOrUpdateAsync(WaitUntil.Completed, domainName, data);            
CommunicationDomainResource result = lro.Value;

// the variable result is a resource, you could call other operations on this instance as well
// but just for demo, we get its data from this resource instance
CommunicationDomainResourceData resourceData = result.Data;
// for demo we just print out the id
Console.WriteLine($"Succeeded on id: {resourceData.Id}");

ドメイン リソースを管理する

ドメイン リソースを更新する

...
// this example assumes you already have this CommunicationDomainResource created on azure
// for more information of creating CommunicationDomainResource, please refer to the document of CommunicationDomainResource
string subscriptionId = "11112222-3333-4444-5555-666677778888";
string resourceGroupName = "MyResourceGroup";
string emailServiceName = "MyEmailServiceResource";
string domainName = "AzureManagedDomain";
ResourceIdentifier communicationDomainResourceId = CommunicationDomainResource.CreateResourceIdentifier(subscriptionId, resourceGroupName, emailServiceName, domainName);
CommunicationDomainResource communicationDomainResource = client.GetCommunicationDomainResource(communicationDomainResourceId);

// invoke the operation
CommunicationDomainResourcePatch patch = new CommunicationDomainResourcePatch()
{
    Tags =
    {
    ["newTag"] = "newVal",
    },
};
ArmOperation<CommunicationDomainResource> lro = await communicationDomainResource.UpdateAsync(WaitUntil.Completed, patch);
CommunicationDomainResource result = lro.Value;

// the variable result is a resource, you could call other operations on this instance as well
// but just for demo, we get its data from this resource instance
CommunicationDomainResourceData resourceData = result.Data;
// for demo we just print out the id
Console.WriteLine($"Succeeded on id: {resourceData.Id}");

メール サービス別に一覧表示する

// this example assumes you already have this EmailServiceResource created on azure
// for more information of creating EmailServiceResource, please refer to the document of EmailServiceResource
string subscriptionId = "11112222-3333-4444-5555-666677778888";
string resourceGroupName = "MyResourceGroup";
string emailServiceName = "MyEmailServiceResource";
ResourceIdentifier emailServiceResourceId = EmailServiceResource.CreateResourceIdentifier(subscriptionId, resourceGroupName, emailServiceName);
EmailServiceResource emailServiceResource = client.GetEmailServiceResource(emailServiceResourceId);

// get the collection of this CommunicationDomainResource
CommunicationDomainResourceCollection collection = emailServiceResource.GetCommunicationDomainResources();

// invoke the operation and iterate over the result
await foreach (CommunicationDomainResource item in collection.GetAllAsync())
{
    // the variable item is a resource, you could call other operations on this instance as well
    // but just for demo, we get its data from this resource instance
    CommunicationDomainResourceData resourceData = item.Data;
    // for demo we just print out the id
    Console.WriteLine($"Succeeded on id: {resourceData.Id}");
}

Console.WriteLine($"Succeeded");

ドメイン リソースを取得する

// this example assumes you already have this EmailServiceResource created on azure
// for more information of creating EmailServiceResource, please refer to the document of EmailServiceResource
string subscriptionId = "11112222-3333-4444-5555-666677778888";
string resourceGroupName = "MyResourceGroup";
string emailServiceName = "MyEmailServiceResource";
ResourceIdentifier emailServiceResourceId = EmailServiceResource.CreateResourceIdentifier(subscriptionId, resourceGroupName, emailServiceName);
EmailServiceResource emailServiceResource = client.GetEmailServiceResource(emailServiceResourceId);

// get the collection of this CommunicationDomainResource
CommunicationDomainResourceCollection collection = emailServiceResource.GetCommunicationDomainResources();

// invoke the operation
string domainName = "AzureManagedDomain";
bool result = await collection.ExistsAsync(domainName);

Console.WriteLine($"Succeeded: {result}");

ドメイン リソースをクリーンアップする

// this example assumes you already have this CommunicationDomainResource created on azure
// for more information of creating CommunicationDomainResource, please refer to the document of CommunicationDomainResource
string subscriptionId = "11112222-3333-4444-5555-666677778888";
string resourceGroupName = "MyResourceGroup";
string emailServiceName = "MyEmailServiceResource";
string domainName = "AzureManagedDomain";
ResourceIdentifier communicationDomainResourceId = CommunicationDomainResource.CreateResourceIdentifier(subscriptionId, resourceGroupName, emailServiceName, domainName);
CommunicationDomainResource communicationDomainResource = client.GetCommunicationDomainResource(communicationDomainResourceId);

// invoke the operation
await communicationDomainResource.DeleteAsync(WaitUntil.Completed);

Console.WriteLine($"Succeeded");

Note

リソースの削除は永続的であり、リソースを削除すると、イベント グリッド フィルター、電話番号など、リソースに関連付けられたデータを含むデータを復元できなくなります。

前提条件

ドメイン リソースを作成する

ドメイン リソースを作成するには、次のコマンドを使用し、Connect-AzAccount を使って Azure アカウントにサインインし、資格情報を入力します。

PS C:\> Connect-AzAccount

まず、次のコマンドを使用して、Azure Communication Services モジュール Az.Communication をインストールします。

PS C:\> Install-Module Az.Communication

次のコマンドを実行して、Azure マネージド ドメイン リソースを作成します。

PS C:\> New-AzEmailServiceDomain -ResourceGroupName ContosoResourceProvider1 -EmailServiceName ContosoEmailServiceResource1 -Name AzureManagedDomain -DomainManagement AzureManaged

ドメイン リソースは、次のオプションを使用して構成できます。

  • リソース グループ
  • Email Communication Services リソースの名前。
  • ドメイン リソースの名前:
    • Azure ドメインの場合、名前は AzureManagedDomain である必要があります。
  • ドメイン管理プロパティの値。
    • Azure ドメインの場合、値は AzureManaged である必要があります。

次の手順では、ドメイン リソースにタグを割り当てることができます。 タグは、ドメイン リソースを整理するために使用できます。 タグの詳細については、リソースのタグ付けに関するドキュメントを参照してください。

ドメイン リソースを管理する

ドメイン リソースにタグを追加するには、次のコマンドを実行します。 また、特定のサブスクリプションを対象にすることもできます。

PS C:\> Update-AzEmailServiceDomain -Name AzureManagedDomain -EmailServiceName ContosoEmailServiceResource1 -ResourceGroupName ContosoResourceProvider1 -Tag @{ExampleKey1="ExampleValue1"}

PS C:\> Update-AzEmailServiceDomain -Name AzureManagedDomain -EmailServiceName ContosoEmailServiceResource1 -ResourceGroupName ContosoResourceProvider1 -Tag @{ExampleKey1="ExampleValue1"} -SubscriptionId SubscriptionID

特定の Email Communication Service 内のすべてのドメイン リソースを一覧表示するには、次のコマンドを使用します。

PS C:\> Get-AzEmailServiceDomain -EmailServiceName ContosoEmailServiceResource1 -ResourceGroupName ContosoResourceProvider1

特定のドメイン リソースに関するすべての情報を一覧表示するには、次のコマンドを使用します。

PS C:\> Get-AzEmailServiceDomain -Name AzureManagedDomain -EmailServiceName ContosoEmailServiceResource1 -ResourceGroupName ContosoResourceProvider1

ドメイン リソースをクリーンアップする

ドメイン リソースをクリーンアップして削除する場合は、次のコマンドを実行してドメイン リソースを削除できます。

PS C:\> Remove-AzEmailServiceDomain -Name AzureManagedDomain -EmailServiceName ContosoEmailServiceResource1 -ResourceGroupName ContosoResourceProvider1

Note

リソースの削除は永続的であり、リソースを削除すると、イベント グリッド フィルター、電話番号など、リソースに関連付けられたデータを含むデータを復元できなくなります。

Azure マネージド ドメインとカスタム ドメインの比較

Azure マネージド ドメインをプロビジョニングする前に、次の表を確認して、ニーズに最も適したドメインの種類を決定します。

Azure マネージド ドメイン カスタム ドメイン
長所: - 設定がすばやく簡単
- ドメインの検証が不要
- 独自のドメインからメールを送信
短所: - 送信者ドメインは個人用に設定されず、変更不可
- 送信者のユーザー名はカスタマイズ不可
- 送信ボリュームが非常に限られている
- ユーザー エンゲージメント追跡を有効化できない
- ドメイン レコードの検証が必要
- 検証のセットアップ時間が長くなります

Azure マネージド ドメインの送信者認証

メール認証のベスト プラクティスに関するページで説明されているように、Azure Communication Services では、メールに必要なメール認証プロトコルが自動的に構成されます。

これで、メール ドメインでメールを送信する準備ができました。

次のステップ