すべてのプロダクト
Search
ドキュメントセンター

CloudOps Orchestration Service:ACS-HBR-SAPHanaRestorationAutomationByExistingECS

最終更新日:Dec 21, 2025

ACS-HBR-SAPHanaRestorationAutomationByExistingECS:SAP HANA バックアップを既存のインスタンスに復元することで検証します。

テンプレートの説明

Hybrid Backup Recovery (HBR) サービスを使用して、ソース SAP HANA インスタンスから既存の宛先 SAP HANA インスタンスにバックアップデータを復元します。データ復元後、このテンプレートは宛先インスタンスのステータスを確認します。 今すぐ実行

テンプレートタイプ

自動化

所有者

Alibaba Cloud

入力パラメーター

パラメーター

説明

タイプ

必須

デフォルト値

制約

vaultId

Hybrid Backup Recovery (HBR) バックアップボールトの ID。

文字列

はい

sourceClusterId

ソース HBR インスタンスの ID。

文字列

はい

destinationClusterId

宛先 HBR インスタンスの ID。

文字列

はい

HANASID

宛先 SAP HANA インスタンスのシステム ID (SID)。

文字列

はい

正規表現:^[A-Z][A-Z0-9][A-Z0-9]$

ECSHostname

宛先インスタンスのホスト名。

文字列

はい

正規表現:^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-])*([a-zA-Z0-9])$

HANAInstanceNumber

宛先 SAP HANA インスタンスのインスタンス番号。

文字列

はい

正規表現:^([0-8][0-9]|9[0-6])$

dingTalkWebhook

DingTalk チャットボットの Webhook URL。

文字列

はい

databaseName

データベースインスタンスのリスト。

リスト

いいえ

['SYSTEMDB@<SID>:SYSTEMDB']

出力パラメーター

なし

必要なアクセスポリシー

{
    "Version": "1",
    "Statement": [
        {
            "Action": [
                "hbr:CreateHanaRestore",
                "hbr:DescribeClients",
                "hbr:DescribeHanaBackupSetting",
                "hbr:DescribeHanaBackupsAsync",
                "hbr:DescribeHanaRestores",
                "hbr:DescribeTask",
                "hbr:UpdateHanaBackupSetting"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "ecs:DescribeInvocationResults",
                "ecs:DescribeInvocations",
                "ecs:RunCommand"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "oos:ListExecutions"
            ],
            "Resource": "*",
            "Effect": "Allow"
        }
    ]
}

詳細

詳細については、「GitHub の ACS-HBR-SAPHanaRestorationAutomationByExistingECS.yml」をご参照ください。

テンプレートコンテンツ

FormatVersion: OOS-2019-06-01
Description:
  name-ja: ACS-HBR-SAPHanaRestorationAutomationByExistingECS
  ja: このテンプレートは、既存の SAP HANA インスタンス (ソースインスタンスと宛先インスタンス) を使用して、Hybrid Backup Recovery (HBR) サービスを介してソースインスタンスから宛先インスタンスにバックアップデータを復元します。また、復元後に宛先インスタンスのステータスを確認します。
Parameters:
  vaultId:
    Label:
      ja: バックアップボールト ID
    Description:
      ja: バックアップボールトの ID。
    Type: String
  sourceClusterId:
    Label:
      ja: ソース SAP HANA インスタンス ID
    Description:
      ja: ソース SAP HANA インスタンスの ID。この ID は、Hybrid Backup Recovery コンソールで見つけることができます。[ECS アプリケーションバックアップ] に移動し、[インスタンス名/ID] 列を確認してください。
    Type: String
  destinationClusterId:
    Label:
      ja: 宛先 SAP HANA インスタンス ID
    Description:
      ja: 宛先 SAP HANA インスタンスの ID。この ID は、Hybrid Backup Recovery コンソールで見つけることができます。[ECS アプリケーションバックアップ] に移動し、[インスタンス名/ID] 列を確認してください。
    Type: String
  databaseName:
    Label:
      ja: SAP HANA データベースリスト
    Description:
      ja: 復元する SAP HANA データベースインスタンスのリスト。フォーマット:<ソースデータベース名>@<SID>:<宛先データベース名> を使用します。複数のデータベースインスタンスは改行で区切ります。
    Type: List
    Default:
      - 'SYSTEMDB@<SID>:SYSTEMDB'
  HANASID:
    Type: String
    ConstraintDescription:
      ja: 3 文字である必要があります。大文字と数字を含めることができ、大文字で始まる必要があります。
    Label:
      ja: SAP HANA SID
    Description:
      ja: 宛先 SAP HANA インスタンスの SID。
    AllowedPattern: '^[A-Z][A-Z0-9][A-Z0-9]$'
  ECSHostname:
    Type: String
    Label:
      ja: ホスト名
    Description:
      ja: SAP HANA ECS インスタンスのホスト名。
    AllowedPattern: '^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-])*([a-zA-Z0-9])$'
    ConstraintDescription:
      ja: 長さは 2~13 文字である必要があります。文字、数字、ハイフン (-) を含めることができますが、ハイフンで開始または終了することはできません。
  HANAInstanceNumber:
    Type: String
    Label:
      ja: SAP HANA インスタンス番号
    Description:
      ja: SAP HANA インスタンスのインスタンス番号。
    ConstraintDescription:
      ja: 00 から 97 までの 2 桁の数字。
    AllowedPattern: '^([0-8][0-9]|9[0-6])$'
  dingTalkWebhook:
    Label:
      ja: DingTalk ロボット Webhook
    Description:
      ja: カスタム DingTalk チャットボットの Webhook URL。テスト結果やクラウドリソース削除の承認メッセージの送信に使用されます。詳細については、<a href=''https://open-doc.dingtalk.com/microapp/serverapi2/qf2nxq'' target=''_blank''>カスタム DingTalk チャットボット</a>をご参照ください。
    Type: String
Tasks:
  - Name: checkHanaBackupSetting
    Action: 'ACS::CheckFor'
    Description:
      ja: ソース SAP HANA インスタンスのデータベースバックアップ設定をクエリします。
    Properties:
      Service: HBR
      API: DescribeHanaBackupSetting
      Parameters:
        VaultId: '{{ vaultId }}'
        ClusterId: '{{ sourceClusterId }}'
        DatabaseName: 
          'Fn::Select':
            - 0
            - 'Fn::Split':
              - '@'
              - '{{ ACS::TaskLoopItem }}'
      PropertySelector: HanaBackupSetting.CatalogBackupUsingBackint
      DesiredValues:
        - true
    Retries: 2
    Loop:
      Items: '{{ databaseName }}'
      RateControl:
        MaxErrors: 0
        Mode: Concurrency
        Concurrency: 1
  - Name: checkForActivateClient
    Action: 'ACS::CheckFor'
    OnError: getExecutionFaildMessage
    Description:
      ja: クライアントがアクティベートされているかどうかを確認します。
    Properties:
      Service: HBR
      API: DescribeClients
      Parameters:
        ClusterId: '{{ destinationClusterId }}'
        VaultId: '{{ vaultId }}'
        SourceType: HANA
        ClientType: ECS_AGENT
      PropertySelector: 'Clients.Client[].Status'
      DesiredValues:
        - ACTIVATED
    Retries: 2
    Outputs:
      ClientId:
        Type: String
        ValueSelector: 'Clients.Client[].ClientId'
      InstanceId:
        Type: String
        ValueSelector: 'Clients.Client[].InstanceId'
  - Name: RestoreBuckup
    Action: 'ACS::HBR::RestoreHanaDatabaseBackup'
    OnError: getExecutionFaildMessage
    Description:
      ja: バックアップを復元して検証します。
    Properties:
      vaultId: '{{ vaultId }}'
      sourceClusterId: '{{ sourceClusterId }}'
      sourceSystemName:
        'Fn::Select':
          - 0
          - 'Fn::Split':
            - ':'
            - '{{ ACS::TaskLoopItem }}'
      clusterId: '{{ destinationClusterId }}'
      databaseName:
        'Fn::Select':
          - 1
          - 'Fn::Split':
            - ':'
            - '{{ ACS::TaskLoopItem }}'
      HANAInstanceServerId: '{{ checkForActivateClient.InstanceId }}'
      HANASID: '{{ HANASID }}'
      masterClientId: '{{ checkForActivateClient.ClientId }}'
    Loop:
      Items: '{{ databaseName }}'
      RateControl:
        MaxErrors: 0
        Mode: Concurrency
        Concurrency: 1
  - Name: runCommand
    Action: 'ACS::ECS::RunCommand'
    OnSuccess: DingTalkNotify
    OnError: getExecutionFaildMessage
    Description:
      ja: SAP HANA インスタンスの実行ステータスを検証します。
    Properties:
      regionId: '{{ ACS::RegionId }}'
      commandContent:
        'Fn::Join':
          - ''
          - - 'su - '
            - 'Fn::Jq':
                - First
                - .key | ascii_downcase
                - key: '{{ HANASID }}'
            - 'adm -c "sapcontrol -nr '
            - '{{ HANAInstanceNumber }}'
            - ' -function GetProcessList"; if [[ $? -eq 3 ]]; then exit 0;fi'
      instanceId: '{{ checkForActivateClient.InstanceId }}'
      commandType: RunShellScript
      timeout: '180'
    Outputs:
      commandOutputs:
        Type: String
        ValueSelector: invocationOutput
  - Name: getExecutionFaildMessage
    Action: 'ACS::ExecuteAPI'
    Description:
      ja: 実行失敗メッセージを取得します。
    Properties:
      Service: OOS
      API: ListExecutions
      Parameters:
        ExecutionId: '{{ ACS::ExecutionId }}'
    Outputs:
      statusMessage:
        Type: String
        ValueSelector: 'Executions[].StatusMessage'
  - Name: DingTalkNotifyExecutionFailed
    Action: 'ACS::Notify'
    OnSuccess: 'ACS::END'
    Description:
      ja: 実行失敗に関する通知を送信します。
    Properties:
      NotifyType: WebHook
      WebHook:
        URI: '{{ dingTalkWebhook }}'
        Headers:
          Content-Type: application/json
        Content:
          msgtype: markdown
          markdown:
            title: '{{ ACS::CurrentUTCTime }}-HBR 自動テスト失敗レポート'
            text:
              'Fn::Join':
                - |+


                - - '#### {{ ACS::CurrentUTCTime }} - HBR 自動テスト失敗レポート'
                  - 'チェック対象データベース:{{ databaseName }}'
                  - 'エラーメッセージ:{{ getExecutionFaildMessage.statusMessage }}'
                  - '**詳細については、[OOS コンソール](https://oos.console.alibabacloud.com/{{ ACS::RegionId }}/execution/detail/{{ ACS::ExecutionId }}) をご参照ください**'
          at:
            atMobiles: []
            isAtAll: true
  - Name: DingTalkNotify
    Action: 'ACS::Notify'
    Description:
      ja: テスト結果を含む通知を送信します。
    Properties:
      NotifyType: WebHook
      WebHook:
        URI: '{{ dingTalkWebhook }}'
        Headers:
          Content-Type: application/json
        Content:
          msgtype: markdown
          markdown:
            title: '{{ ACS::CurrentUTCTime }}-HBR 自動テストレポート'
            text:
              'Fn::Join':
                - |+


                - - '#### {{ ACS::CurrentUTCTime }} - HBR 自動テストレポート'
                  - 'テスト結果:SUCCESS'
                  - 'チェック対象データベース:{{ databaseName }}'
                  - '宛先インスタンス:{{ ECSHostname }}'
                  - '宛先インスタンス ID:{{ checkForActivateClient.InstanceId }}'
                  - '**詳細については、[OOS コンソール](https://oos.console.alibabacloud.com/{{ACS::RegionId}}/execution/detail/{{ ACS::ExecutionId }}) をご参照ください**'
          at:
            atMobiles: []
            isAtAll: true