複数地域テナントの構成を検出する
SharePoint のテナントを扱う場合は、テナントが複数地域テナントであるかどうかを判定し、既定の地理的位置とサテライト位置を特定することができる必要があります。
次の図に示す複数地域テナントでは、
- 既定の地理的位置は北米、
- サテライト位置のひとつはヨーロッパ、
- サテライト位置のひとつはアジアになっています。
複数地域テナントの構成に関する情報
シナリオによっては、複数地域テナント サイトにアクセスするために次の API を単独または組み合わせて使用できます。
SharePoint CSOM API: 複数地域非対応。 シナリオによっては、正しい地理的位置をターゲットとする必要が生じることがあります (たとえば、ユーザープロファイルへのアクセスやテナントの API を操作する場合など)。
Microsoft Graph API: 複数地域対応。 複数地域テナント サイトへのアクセスには Microsoft Graph を使用することをお勧めします。
SharePoint REST API: 通常、この API はサイト URL のコンテキストで使用します。そのため、テナントが複数地域対応であるかは問題となりません。 一部の REST API のシナリオ (検索やユーザー プロファイル) では、地理的位置ごとの呼び出しを行う必要が生じることがあります。
CSOM API を使用する
テナントの地理的位置を取得するには、以下のスニペットに示すように Tenant
クラスと GetTenantInstances
メソッドを使用し、CSOM で行うことができます。
Tenant tenant = new Tenant(clientContext);
var tenantInstances = tenant.GetTenantInstances();
clientContext.Load(tenantInstances);
clientContext.ExecuteQuery();
Microsoft Graph API を使用する
Microsoft Graph を使用して、テナントの地理的位置情報を取得できます。 次の例では、地理的位置ごとのオブジェクトのコレクションを返します。
注:
次のコード例では、siteCollection
オブジェクトの dataLocationCode
属性を使用します。 発行の時点でこのプロパティは、Microsoft Graph のベータ エンドポイントでのみ使用できます。
GET https://graph.microsoft.com/beta/sites?filter=siteCollection/root%20ne%20null&select=webUrl,siteCollection
複数地域テナントの場合の応答の例
{
"@odata.context": "https://graph.microsoft.com/beta/$metadata#sites",
"value": [
{
"webUrl": "https://contoso.sharepoint.com/",
"siteCollection": {
"dataLocationCode":"NAM",
"hostname": "contoso.sharepoint.com"
}
},
{
"webUrl": "https://contosoeur.sharepoint.com/",
"siteCollection": {
"dataLocationCode":"EUR",
"hostname": "contosoeur.sharepoint.com"
}
},
{
"webUrl": "https://contosoapc.sharepoint.com/",
"siteCollection": {
"dataLocationCode":"APC",
"hostname": "contosoapc.sharepoint.com"
}
}
]
}
詳細については、MultiGeo.TenantInformationCollection の例を参照してください。
注:
アクセス許可とアプリケーションを構成する方法の詳細については、「複数地域機能のサンプル アプリケーションをセットアップする」を参照してください。
テナントが複数地域テナントであるかどうか確認する
Microsoft Graph を使用すると、テナントが複数地域テナントであるかどうかを確認できます。Microsoft Graph を介して複数地域テナントに要求を送ると複数のアイテムが入ったコレクションが返されるので、それを判断できます。
次の例は、単一地域テナントへの Microsoft Graph 呼び出しの結果を示しています。
GET https://graph.microsoft.com/beta/sites?filter=siteCollection/root%20ne%20null&select=webUrl,siteCollection
単一地域テナントの場合の応答の例
{
"@odata.context": "https://graph.microsoft.com/beta/$metadata#sites",
"value": [
{
"webUrl": "https://singlegeotest.sharepoint.com/",
"siteCollection": {
"dataLocationCode":"",
"hostname": "singlegeotest.sharepoint.com"
}
}
]
}