restore_database_with_multiple_kms_keys

in spanner/spanner_samples.rb [2199:2248]


def restore_database_with_multiple_kms_keys(
  project_id:, instance_id:, database_id:, backup_id:, kms_key_names:
)
  
  
  
  
  
  

  require "google/cloud/spanner"
  require "google/cloud/spanner/admin/database"

  database_admin_client = Google::Cloud::Spanner::Admin::Database.database_admin

  instance_path = database_admin_client.instance_path(
    project: project_id, instance: instance_id
  )

  db_path = database_admin_client.database_path project: project_id,
                                                instance: instance_id,
                                                database: database_id

  backup_path = database_admin_client.backup_path project: project_id,
                                                  instance: instance_id,
                                                  backup: backup_id

  encryption_config = {
    encryption_type: :CUSTOMER_MANAGED_ENCRYPTION,
    kms_key_names:    kms_key_names
  }
  job = database_admin_client.restore_database(
    parent: instance_path,
    database_id: database_id,
    backup: backup_path,
    encryption_config: encryption_config
  )

  puts "Waiting for restore backup operation to complete"

  job.wait_until_done!
  database = database_admin_client.get_database name: db_path
  restore_info = database.restore_info
  puts "Database #{restore_info.backup_info.source_database} was restored " \
       "to #{database_id} from backup #{restore_info.backup_info.backup} " \
       "using encryption key #{database.encryption_config.kms_key_names}"

  
end