翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
カスタムアベイラビリティプロバイダー (CAP) は、明確に定義された JSON スキーマで記述された JSON ベースのリクエスト/レスポンスプロトコルで設定されます。Lambda 関数はリクエストを解析し、有効なレスポンスを返します。
リクエストとレスポンスの要素
リクエストの要素
Amazon WorkMail ユーザーの CAP 設定に使用されるリクエストの例を以下に示します。
{
"requester": {
"email": "user1@internal.example.com",
"userName": "user1",
"organization": "m-0123456789abcdef0123456789abcdef",
"userId": "S-1-5-18",
"origin": "127.0.0.1"
},
"mailboxes": [
"user2@external.example.com",
"unknown@internal.example.com"
],
"window": {
"startDate": "2021-05-04T00:00:00.000Z",
"endDate": "2021-05-06T00:00:00.000Z"
}
}
リクエストは、リクエスタ、メールボックス、ウィンドウの 3 つのセクションで構成されています。これらについては、本ガイドの次のリクエスタ、メールボックス、Windowの各セクションで説明しています。
リクエスタ
リクエスタセクション、Amazon WorkMail に最初のリクエストを行ったユーザーに関する情報が表示されます。CAP はこの情報を使用してプロバイダーの行動を変更します。たとえば、このデータを使用してバックエンドのアベイラビリティプロバイダーの同じユーザーになりすましたり、特定の詳細を応答から省略したりできます。
フィールド | 説明 | 必須 |
---|---|---|
|
リクエスタのメインメールアドレス。 |
はい |
|
リクエスタのユーザー名。 |
はい |
|
リクエスタの組織 ID。 |
はい |
|
リクエスタ ID。 |
はい |
|
リクエスタの リモートアドレス。 |
いいえ |
|
将来の利用のために予約されています。 |
いいえ |
メールボックス
メールボックスセクションには、空き状況情報を要求するユーザーの電子メールアドレスのコンマ区切りリストが含まれます。
Window
ウィンドウセクションには、可用性情報を要求する時間枠が含まれます。startDate
、endDate
とも UTC で指定され、RFC 3339StartDate
、元の開始位置が使用されます。
レスポンス要素
Amazon WorkMail は CAP Lambda 関数から応答を受け取るまで 25 秒間待機します。25 秒後、Amazon WorkMail は関数が失敗したとみなし、EWS の GetUserAvailability レスポンスで関連するメールボックスの障害を生成します。これによって GetUserAvailability オペレーション全体が失敗するわけではありません。
以下は、このセクションの冒頭で定義した構成からの応答例です。
{
"mailboxes": [{
"mailbox": "user2@external.example.com",
"events": [{
"startTime": "2021-05-03T23:00:00.000Z",
"endTime": "2021-05-04T03:00:00.000Z",
"busyType": "BUSY"|"FREE"|"TENTATIVE",
"details": { // optional
"subject": "Late meeting",
"location": "Chime",
"instanceType": "SINGLE_INSTANCE"|"RECURRING_INSTANCE"|"EXCEPTION",
"isMeeting": true,
"isReminderSet": true,
"isPrivate": false
}
}],
"workingHours": {
"timezone": {
"name": "W. Europe Standard Time"
"bias": 60,
"standardTime": { // optional (not needed for fixed offsets)
"offset": 60,
"time": "02:00:00",
"month": "JAN"|"FEB"|"MAR"|"APR"|"JUN"|"JUL"|"AUG"|"SEP"|"OCT"|"NOV"|"DEC",
"week": "FIRST"|"SECOND"|"THIRD"|"FOURTH"|"LAST",
"dayOfWeek": "SUN"|"MON"|"TUE"|"WED"|"THU"|"FRI"|"SAT"
},
"daylightTime": { // optional (not needed for fixed offsets)
"offset": 0,
"time": "03:00:00",
"month": "JAN"|"FEB"|"MAR"|"APR"|"JUN"|"JUL"|"AUG"|"SEP"|"OCT"|"NOV"|"DEC",
"week": "FIRST"|"SECOND"|"THIRD"|"FOURTH"|"LAST",
"dayOfWeek": "SUN"|"MON"|"TUE"|"WED"|"THU"|"FRI"|"SAT"
},
},
"workingPeriods":[{
"startMinutes": 480,
"endMinutes": 1040,
"days": ["SUN"|"MON"|"TUE"|"WED"|"THU"|"FRI"|"SAT"]
}]
}
},{
"mailbox": "unknown@internal.example.com",
"error": "MailboxNotFound"
}]
}
レスポンスは、メールボックスのリストで構成される 1 つのメールボックスセクションで構成されます。可用性が正常に取得された各メールボックスは、「メールボックス」、「イベント」、「稼働時間」の 3 つのセクションで構成されています。アベイラビリティプロバイダーがメールボックスの空き時間情報を取得できなかった場合、セクションはメールボックスとエラーの 2 つのセクションで構成されます。これらについては、本ガイドの次のメールボックス、イベント、稼働時間、タイムゾーン、作業期間、エラーの各セクションで説明しています。
メールボックス
メールボックスセクションは、リクエストのメールボックスセクションにあるユーザーのメールアドレスです。
イベント
イベントセクションは、リクエストされたウィンドウで発生するイベントのリストです。各イベントは、次のパラメータで定義されます。
フィールド | 説明 | 必須 |
---|---|---|
|
イベントの開始時刻は UTC で、RFC 3339 |
はい |
|
イベントの終了時刻は UTC で、RFC 3339 |
はい |
|
イベントのビジータイプ。 |
はい |
|
イベントの詳細 |
いいえ |
|
イベントの件名 |
はい |
|
イベントの場所。 |
はい |
|
イベントのインスタンスタイプ。 |
はい |
|
イベントに出席者がいるかどうかを示すブール値。 |
はい |
|
イベントにリマインダーが設定されているかどうかを示すブール値。 |
はい |
|
イベントが非公開に設定されているかどうかを示すブール値。 |
はい |
稼働時間
WorkingHours セクションには、メールボックス所有者の勤務時間に関する情報が含まれています。これには、タイムゾーンと稼働期間の 2 つのセクションがあります。
タイムゾーン
タイムゾーン サブセクションには、メールボックス所有者のタイムゾーンが記述されています。リクエスタが別のタイムゾーンで働いている場合は、ユーザーの勤務時間を正しく表示することが重要です。アベイラビリティプロバイダーは、名前を使用するのではなく、タイムゾーンを明示的に記述する必要があります。標準化されたタイムゾーンの説明を使用すると、タイムゾーンの不一致を防ぐことができます。
フィールド | 説明 | 必須 |
---|---|---|
|
タイムゾーンの名前。 |
はい |
|
GMT からのデフォルトオフセット (単位:分)。 |
はい |
|
指定されたタイムゾーンの標準時間の開始。 |
いいえ |
|
指定したタイムゾーンの夏時間の開始。 |
いいえ |
との両方を定義するかdaylightTime
、standardTime
両方を省略する必要があります。standardTime
and daylightTime
オブジェクトのフィールドは以下のとおりです。
フィールド | 説明 | 許可された値 |
---|---|---|
|
デフォルトオフセットを基準にしたオフセット (単位:分)。 |
NA |
|
標準時間と夏時間の切り替えが行われる時刻。 |
NA |
|
標準時間と夏時間の切り替えが行われる月。 |
|
|
指定した月のうち、標準時間と夏時間の切り替えが行われる週。 |
|
|
指定した週のうち、標準時間と夏時間の切り替えが行われる日。 |
|
作業期間
WorkingPeriodsセクションには、1つ以上の作業期間オブジェクトが含まれています。各期間は、1 日以上の稼働日の開始と終了を定義します。
フィールド | 説明 | 許可された値 |
---|---|---|
|
1 日の開始時刻を午前 0 時から分単位で表したものです。 |
NA |
|
1 日の終了時間を午前 0 時からの分単位で表したものです。 |
NA |
|
この期間が適用される日。 |
|
エラー
エラー フィールドには任意のエラーメッセージを格納できます。次の表は、既知のコードと EWS エラーコードのマッピングを示しています。その他のメッセージはすべてにマップされます。ERROR_FREE_BUSY_GENERATION_FAILED
値 | EWS エラーコード |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
アクセス権の付与
AWS Command Line Interface () から次の Lambda コマンドを実行しますAWS CLI。このコマンドは、CAP を解析する Lambda 関数にリソースポリシーを追加します。この関数により、Amazon WorkMail アベイラビリティサービスが Lambda 関数を呼び出すことができます。
aws lambda add-permission \ --region
LAMBDA_REGION
\ --function-nameCAP_FUNCTION_NAME
\ --statement-id AllowWorkMail \ --action "lambda:InvokeFunction" \ --principal availability.workmail.WM_REGION
.amazonaws.com \ --source-accountWM_ACCOUNT_ID
\ --source-arn arn:aws:workmail:WM_REGION
:WM_ACCOUNT_ID
:organization/ORGANIZATION_ID
コマンドでは、以下のパラメータを指定された場所に追加します。
-
LAMBDA_REGION — CAP Lambda
がデプロイされているリージョンの名前。例えば、us-east-1
と指定します。 -
CAP_FUNCTION_NAME
— CAP Lambda 関数の名前。注記
これには、CAP Lambda 関数の名前、エイリアス、ARN の一部または全部を使用できます。
-
WM_REGION — Amazon WorkMail
組織が Lambda 関数を呼び出すリージョンの名前。注記
CAP で使用できるのは次のリージョンのみです。
-
米国東部 (バージニア北部)
-
米国西部 (オレゴン)
-
欧州 (アイルランド)
-
-
WM_ACCOUNT_ID
— 組織アカウントの ID。 -
ORGANIZATION_ID
— CAP Lambda を呼び出す組織の ID。Org ID: m-934ebb9eb57145d0a6cab566ca81a21fなど
注記
LAMBDA_REGION
と WM_REGION
は、クロスリージョン呼び出しが必要な場合にのみ異なります。クロスリージョン呼び出しが不要な場合も同様です。
CAP Lambda 関数を使用する Amazon WorkMail の例
Amazon WorkMail が CAP Lambda 関数を使用して EWS エンドポイントをクエリする例については、Amazon WorkMail GitHub リポジトリ用の サーバーレスアプリケーション にあるこのAWS サンプルアプリケーション