このページでは、ポイントインタイム リカバリ(PITR)を使用して、HL7v2 ストア内の HL7v2 メッセージを過去 21 日以内の状態に復元する方法について説明します。PITR を使用して、HL7v2 メッセージが誤って削除されるなどの不要な変更から復元できます。
始める前に
PITR リクエストは高度なオペレーション リクエストに分類され、それに応じて課金されます。PITR を使用する前に、高度なオペレーション リクエストの料金を確認してください。
復元ワークフロー
本番環境の復元が期待どおりに実行されるように、まずドライランを実行します。ドライランでは、復元する HL7v2 メッセージの ID を含む 1 つ以上のファイルが出力されます。本番環境での復元を再度実行する前に、出力ファイルの正確性を確認します。
特定の HL7v2 メッセージを復元する、またはフィルタ条件に従って HL7v2 メッセージを復元するには、フィルタを指定します。
ドライランを行う
このタスクに必要な権限
このタスクを実行するには、次の権限または Identity and Access Management(IAM)のロールが付与されている必要があります。
権限
healthcare.hl7V2Stores.rollback
ロール
-
Healthcare HL7v2 ストア管理者(
roles/healthcare.hl7V2StoreAdmin
)
これらの Identity and Access Management ロールを付与するよう管理者に依頼できます。ロールの付与手順については、アクセスを管理するまたは Cloud Healthcare API リソースへのアクセスを制御するをご覧ください。必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
本番環境で HL7v2 メッセージを復元する前に、ドライランを行います。
次のサンプルは、hl7V2Stores.rollback
メソッドを使用してドライランを行う方法を示しています。
HL7v2 メッセージを復元します。
ドライランを行うには、
force
フィールドがfalse
であることを確認します。リクエストのデータを使用する前に、次のように置き換えます。
: Google Cloud プロジェクトの IDPROJECT_ID
: データセットの場所LOCATION
: HL7v2 ストアの親データセットDATASET_ID
: HL7v2 ストア IDHL7V2_STORE_ID
: 過去 21 日以内の復元ポイント。RFC 3339 形式を使用します。2 番目の部分に時刻を指定し、タイムゾーンを加えます(例:RECOVERY_TIMESTAMP 2015-02-07T13:28:17.239+02:00
、2017-01-01T00:00:00Z
)。
: 出力ファイルを書き込む Cloud Storage フォルダまたはバケットの完全修飾 URICLOUD_STORAGE_BUCKET
リクエストを送信するには、次のいずれかのオプションを選択します。
リクエスト本文を
request.json
という名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。cat > request.json << 'EOF' { "rollbackTime": "
RECOVERY_TIMESTAMP ", "resultGcsBucket": "gs://CLOUD_STORAGE_BUCKET ", "force": "false" } EOFその後、次のコマンドを実行して REST リクエストを送信します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID /locations/LOCATION /datasets/DATASET_ID /hl7V2Stores/HL7V2_STORE_ID :rollback"リクエスト本文を
request.json
という名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。@' { "rollbackTime": "
RECOVERY_TIMESTAMP ", "resultGcsBucket": "gs://CLOUD_STORAGE_BUCKET ", "force": "false" } '@ | Out-File -FilePath request.json -Encoding utf8その後、次のコマンドを実行して REST リクエストを送信します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID /locations/LOCATION /datasets/DATASET_ID /hl7V2Stores/HL7V2_STORE_ID :rollback" | Select-Object -Expand Contentリクエスト本文をコピーして、メソッドのリファレンス ページを開きます。ページの右側に [API Explorer] パネルが開きます。このツールを操作してリクエストを送信できます。このツールにリクエスト本文を貼り付け、その他の必須フィールドに入力して、[Execute] をクリックします。
OPERATION_ID
の値をメモします。この値は次の手順で必要になります。レスポンス
{ "name": "projects/
PROJECT_ID /locations/LOCATION /datasets/DATASET_ID /operations/OPERATION_ID " }projects.locations.datasets.operations.get
メソッドを使用して、長時間実行オペレーションのステータスを取得します。リクエストのデータを使用する前に、次のように置き換えます。
: Google Cloud プロジェクトの IDPROJECT_ID
: データセット IDDATASET_ID
: データセットの場所LOCATION
: 長時間実行オペレーションから返された ID。OPERATION_ID
リクエストを送信するには、次のいずれかのオプションを選択します。
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID /locations/LOCATION /datasets/DATASET_ID /operations/OPERATION_ID "次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID /locations/LOCATION /datasets/DATASET_ID /operations/OPERATION_ID " | Select-Object -Expand Contentメソッド リファレンス ページを開きます。ページの右側に [API Explorer] パネルが開きます。このツールを操作してリクエストを送信できます。必須フィールドを入力して、[Execute] をクリックします。
"done": true
が含まれている場合、長時間実行オペレーションは終了しています。レスポンス
{ "name": "projects/
PROJECT_ID /locations/LOCATION /datasets/DATASET_ID /operations/OPERATION_ID ", "metadata": { "@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata", "apiMethodName": "google.cloud.healthcare.v1.hl7v2.Hl7V2Service.RollbackHl7V2Messages", "createTime": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ ", "endTime": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ ", "logsUrl": "https://console.cloud.google.com/CLOUD_LOGGING_URL ", "counter": { "success": "SUCCESS_COUNT ", "failure": "FAILURE_COUNT " } }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.healthcare.v1.hl7v2.RollbackHl7V2MessagesResponse", "hl7V2Store": "projects/PROJECT_ID /locations/LOCATION /datasets/DATASET_ID /hl7V2Stores/HL7V2_STORE_ID " } }
ドライランの出力ファイルを表示する
各ドライランは、復元する HL7v2 メッセージの ID とタイプを含む 1 つ以上のファイルを出力します。ファイルは、送信先の Cloud Storage バケットの rollback_messages
フォルダ内のサブフォルダに作成されます。サブフォルダ名は、hl7V2Stores.rollback
レスポンスで返された LRO ID です。ファイルを表示して、復元が想定どおりに機能することを確認するには、オブジェクトのメタデータを表示するをご覧ください。
ファイルの数は、復元された HL7v2 メッセージの数に比例します。
ファイル名の形式は trial-NUMBER-of-TOTAL_NUMBER.txt
です。ここで、NUMBER
はファイル番号、TOTAL_NUMBER
はファイルの合計数です。
ドライランの出力ファイル スキーマ
ドライランの復元からの出力ファイルは、次の表に示すスキーマを使用します。
MESSAGE_ID |
TIMESTAMP |
---|---|
HL7v2 メッセージ ID。 | HL7v2 ストア内で HL7v2 メッセージが作成または更新された時刻。 |
本番環境で復元する
このタスクに必要な権限
このタスクを実行するには、次の権限または Identity and Access Management(IAM)のロールが付与されている必要があります。
権限
healthcare.hl7V2Stores.rollback
ロール
-
Healthcare HL7v2 ストア管理者(
roles/healthcare.hl7V2StoreAdmin
)
本番環境の出力ファイルを Cloud Storage に書き込むには、Cloud Healthcare サービス エージェントのサービス アカウントに権限を付与する必要があります。手順については、出力ファイルを Cloud Storage に書き込むをご覧ください。
これらの Identity and Access Management ロールを付与するよう管理者に依頼できます。ロールの付与手順については、アクセスを管理するまたは Cloud Healthcare API リソースへのアクセスを制御するをご覧ください。必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
本番環境で復元する前にドライランを実行し、ドライランの出力ファイルを調べて本番環境での復元が想定どおりに実行されることを確認します。
次のサンプルは、hl7V2Stores.rollback
メソッドを使用して本番環境で HL7v2 メッセージを復元する方法を示しています。
HL7v2 メッセージを復元します。
force
フィールドがtrue
であることを確認します。リクエストのデータを使用する前に、次のように置き換えます。
: Google Cloud プロジェクトの IDPROJECT_ID
: データセットの場所LOCATION
: HL7v2 ストアの親データセットDATASET_ID
: HL7v2 ストア IDHL7V2_STORE_ID
: 過去 21 日以内の復元ポイント。RFC 3339 形式を使用します。2 番目の部分に時刻を指定し、タイムゾーンを加えます(例:RECOVERY_TIMESTAMP 2015-02-07T13:28:17.239+02:00
、2017-01-01T00:00:00Z
)。
: 出力ファイルを書き込む Cloud Storage フォルダまたはバケットの完全修飾 URICLOUD_STORAGE_BUCKET
リクエストを送信するには、次のいずれかのオプションを選択します。
リクエスト本文を
request.json
という名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。cat > request.json << 'EOF' { "rollbackTime": "
RECOVERY_TIMESTAMP ", "resultGcsBucket": "gs://CLOUD_STORAGE_BUCKET ", "force": "true" } EOFその後、次のコマンドを実行して REST リクエストを送信します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID /locations/LOCATION /datasets/DATASET_ID /hl7V2Stores/HL7V2_STORE_ID :rollback"リクエスト本文を
request.json
という名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。@' { "rollbackTime": "
RECOVERY_TIMESTAMP ", "resultGcsBucket": "gs://CLOUD_STORAGE_BUCKET ", "force": "true" } '@ | Out-File -FilePath request.json -Encoding utf8その後、次のコマンドを実行して REST リクエストを送信します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID /locations/LOCATION /datasets/DATASET_ID /hl7V2Stores/HL7V2_STORE_ID :rollback" | Select-Object -Expand Contentリクエスト本文をコピーして、メソッドのリファレンス ページを開きます。ページの右側に [API Explorer] パネルが開きます。このツールを操作してリクエストを送信できます。このツールにリクエスト本文を貼り付け、その他の必須フィールドに入力して、[Execute] をクリックします。
OPERATION_ID
の値をメモします。この値は次の手順で必要になります。レスポンス
{ "name": "projects/
PROJECT_ID /locations/LOCATION /datasets/DATASET_ID /operations/OPERATION_ID " }projects.locations.datasets.operations.get
メソッドを使用して、長時間実行オペレーションのステータスを取得します。リクエストのデータを使用する前に、次のように置き換えます。
: Google Cloud プロジェクトの IDPROJECT_ID
: データセット IDDATASET_ID
: データセットの場所LOCATION
: 長時間実行オペレーションから返された ID。OPERATION_ID
リクエストを送信するには、次のいずれかのオプションを選択します。
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID /locations/LOCATION /datasets/DATASET_ID /operations/OPERATION_ID "次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID /locations/LOCATION /datasets/DATASET_ID /operations/OPERATION_ID " | Select-Object -Expand Contentメソッド リファレンス ページを開きます。ページの右側に [API Explorer] パネルが開きます。このツールを操作してリクエストを送信できます。必須フィールドを入力して、[Execute] をクリックします。
"done": true
が含まれている場合、長時間実行オペレーションは終了しています。レスポンス
{ "name": "projects/
PROJECT_ID /locations/LOCATION /datasets/DATASET_ID /operations/OPERATION_ID ", "metadata": { "@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata", "apiMethodName": "google.cloud.healthcare.v1.hl7v2.Hl7V2Service.RollbackHl7V2Messages", "createTime": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ ", "endTime": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ ", "logsUrl": "https://console.cloud.google.com/CLOUD_LOGGING_URL ", "counter": { "success": "SUCCESS_COUNT ", "failure": "FAILURE_COUNT " } }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.healthcare.v1.hl7v2.RollbackHl7V2MessagesResponse", "hl7V2Store": "projects/PROJECT_ID /locations/LOCATION /datasets/DATASET_ID /hl7V2Stores/HL7V2_STORE_ID " } }
本番環境の復元の出力ファイルを表示する
本番環境の復元では、次のファイルが出力されます。ファイルは、送信先の Cloud Storage バケットの rollback_messages
フォルダ内のサブフォルダに作成されます。サブフォルダ名は、hl7V2Stores.rollback
レスポンスで返された LRO ID です。ファイルを表示するには、オブジェクトのメタデータを表示するをご覧ください。
success-NUMBER-of-TOTAL_NUMBER.txt
: 正常に復元された HL7v2 メッセージが含まれます。fail-NUMBER-of-TOTAL_NUMBER.txt
: 復元に失敗した HL7v2 メッセージが含まれます。失敗していない場合でも、空のファイルが生成されます。
ファイル名の NUMBER
はファイル番号、TOTAL_NUMBER
はファイルの合計数です。
本番環境の出力ファイルのスキーマ
本番環境の復元からの成功ファイルと失敗ファイルは、次のスキーマを使用します。エラーファイルには追加の ERROR_MESSAGE
列が含まれています。
MESSAGE_ID |
ERROR_MESSAGE (エラーファイルのみ) |
---|---|
HL7v2 メッセージ ID。 | エラーファイルのみ。HL7v2 メッセージが復元されなかった理由を説明します。 |
フィルタを使用して HL7v2 ストアを以前の状態に復元する
HL7v2 ストアが 1 つ以上の長時間実行オペレーション(LRO)によって変更された場合は、フィルタで LRO ID を指定して、HL7v2 ストアを以前の状態に復元できます。たとえば、インポート オペレーションで HL7v2 メッセージをインポートする前の状態に HL7v2 ストアを復元できます。
hl7V2Stores.rollback
リクエストを送信するときに、RollbackHL7MessagesFilteringFields
オブジェクトで LRO ID を指定します。
Cloud Healthcare API データセットで LRO ID を一覧表示して表示する方法については、LRO の一覧表示をご覧ください。