

サポート終了通知: 2027 年 3 月 31 日、 AWS は Amazon WorkMail のサポートを終了します。2027 年 3 月 31 日以降、Amazon WorkMail コンソールまたは Amazon WorkMail リソースにアクセスできなくなります。詳細については、[Amazon WorkMail のサポート終了](https://docs.aws.amazon.com/workmail/latest/adminguide/workmail-end-of-support.html)」を参照してください。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# なりすましロールを使用する
<a name="using-impersonation-roles"></a>

メールボックスのデータにアクセスするには、Amazon WorkMail API アクション`AssumeImpersonationRole`を使用します。Amazon WorkMail API の詳細については、「[API リファレンス](https://docs.aws.amazon.com/workmail/latest/APIReference/Welcome.html)」を参照してください。

`AssumeImpersonationRole` は `Token` を返します。この `Token` は、HTTP ヘッダー `Authorization` を介して 15 分以内に EWS プロトコルに渡す必要があります。

次の例では、EWS プロトコルでなりすましロールを使用する方法を示します。例で使用されている定数は、組織とアカウントに固有の次の詳細を指定します。
+ `{{WORKMAIL_ORGANIZATION_ID}}` - Amazon WorkMail 組織 ID
+ `{{IMPERSONATION_ROLE_ID}}`— なりすましロール ID 
+ `{{WORKMAIL_EWS_URL}}` — [Amazon WorkMail エンドポイントとクォータで利用可能な](https://docs.aws.amazon.com/general/latest/gr/workmail.html) EWS エンドポイント
+ `{{EMAIL_ADDRESS}}`— ユーザーメールボックスのメールアドレス 

**Example Java — [EWS Java API](https://github.com/OfficeDev/ews-java-api)**  

```
import software.amazon.awssdk.services.workmail.WorkMailClient;
import software.amazon.awssdk.services.workmail.model.AssumeImpersonationRoleRequest;
import software.amazon.awssdk.services.workmail.model.AssumeImpersonationRoleResponse;

import microsoft.exchange.webservices.data.core.ExchangeService;
import microsoft.exchange.webservices.data.core.enumeration.misc.ExchangeVersion;
import microsoft.exchange.webservices.data.misc.ImpersonatedUserId;
import microsoft.exchange.webservices.data.core.enumeration.misc.ConnectingIdType;

// ...

AssumeImpersonationRoleResponse response = workMailClient.assumeImpersonationRole(
    AssumeImpersonationRoleRequest.builder()
        .organizationId({{WORKMAIL_ORGANIZATION_ID}})
        .impersonationRoleId({{IMPERSONATION_ROLE_ID}})
        .build());

ExchangeService exchangeService = new ExchangeService(ExchangeVersion.Exchange2010_SP2);
exchangeService.setUrl(URI.create({{WORKMAIL_EWS_URL}}));
exchangeService.getHttpHeaders().put("Authorization", "Bearer " + response.token());
exchangeService.setImpersonatedUserId(new ImpersonatedUserId(ConnectingIdType.SmtpAddress, {{EMAIL_ADDRESS}}));
```

**Example .Net – [EWS Managed API](https://github.com/OfficeDev/ews-managed-api)**  

```
using Amazon.WorkMail;
using Amazon.WorkMail.Model;

using Microsoft.Exchange.WebServices.Data;

// ...

AssumeImpersonationRoleRequest request = new AssumeImpersonationRoleRequest();
request.OrganizationId = {{WORKMAIL_ORGANIZATION_ID}};
request.ImpersonationRoleId = {{IMPERSONATION_ROLE_ID}};
AssumeImpersonationRoleResponse response = workMailClient.AssumeImpersonationRole(request);

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP2);
service.Url = new Uri({{WORKMAIL_EWS_URL}});
service.HttpHeaders.Add("Authorization", "Bearer " + response.Token);
service.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, {{EMAIL_ADDRESS}});
```

**Example Python – [Exchangelib](https://pypi.org/project/exchangelib/)**  

```
import boto3

from requests.auth import AuthBase
from exchangelib.transport import AUTH_TYPE_MAP
from exchangelib import Configuration, Account, Version, IMPERSONATION
from exchangelib.version import EXCHANGE_2010_SP2


work_mail_client = boto3.client("workmail")

class ImpersonationRoleAuth(AuthBase):
    def __init__(self):
         self.token = work_mail_client.assume_impersonation_role(
             OrganizationId={{WORKMAIL_ORGANIZATION_ID}},
             ImpersonationRoleId={{IMPERSONATION_ROLE_ID}}
        )["Token"]

     def __call__(self, r):
         r.headers["Authorization"] = "Bearer " + self.token
         return r

AUTH_TYPE_MAP["ImpersonationRoleAuth"] = ImpersonationRoleAuth

ews_config = Configuration(
     service_endpoint={{WORKMAIL_EWS_URL}},
     version=Version(build=EXCHANGE_2010_SP2),
     auth_type="ImpersonationRoleAuth"
)
ews_account = Account(
     config=ews_config,
     primary_smtp_address={{EMAIL_ADDRESS}},
     access_type=IMPERSONATION
)
```