MASVとBackblazeによるメディアファイルの自動転送とアーカイブ

by Ankit Verma|2021/12/14

日常的に映像を扱う方であれば、大容量のメディアファイルをクライアントやチームメンバーに送信したり、その後メディアファイルを何らかのストレージにバックアップしたりすることに慣れていることでしょう。おそらく、メディアファイルを転送したりアーカイブしたりする際には、2つのステップを踏むことになるでしょう。今日は、MASV PortalsとBackblazeの組み合わせを例に、メディアファイルの転送とアーカイブを1つのプロセスで自動的に行う方法をご紹介したいと思います。

この2つのアクションを組み合わせることの主な利点は、スピードと効率のほかに、バックアッププロセス中にファイルを忘れることがないということです。誰もが一度はフォルダを開いて、次のような名前のファイルを見たことがあるでしょう。 file01.mp4, file02.mp, file01changed.mp4.驚くほどすぐに複雑になってしまうクイックバックアッププロセス。しかし、自動で簡単なバックアッププロセスを使用すると、アップロード日とファイルサイズによって各ファイルを分けることができます。これにより、どのバージョンのファイルが重要なのかを把握するための時間と労力を節約することができます。 

今日、BackblazeのようなクラウドプロバイダーとMASVを統合することは、私たちの 数回のクリックでウェブアプリ.しかし、この記事では、もう少し踏み込んで、これらの手順を以下のように使用して実装する方法を紹介します。 MASVのCloud Connect API.これにより、単一のクラウド接続を超えて、複数のクラウドを接続する自動化の力を発揮します。 MASVポータル を複数のクラウドプロバイダー/ストレージバケットに送信することができます。ここではスクリプト言語としてpython3を使用し、いかに簡単に実現できるかを説明します。

MASV + Backblazeによるメディアの転送とアーカイブ

masvとbackblazeによるメディアファイルの転送とアーカイブ

前述の通り、今日はMASVとBackblazeを使用します。私たちの目的は、両方のサービスを接続するシンプルなpython3スクリプトを作成し、MASVのCloud Connect技術がいかに簡単に機能するかを示すことです。これらの技術はどちらも多くの機能を備えています。今日使用しているもののハイライトをご紹介します。

MASV:

  • 超高速大容量ファイル転送。
  • ディレクトリ全体の自動転送
  • Cloud Connectです。 外部のクラウドバケットとの連携により、必要な場所にファイルを自動的に移動させることができます。

BackBlaze。

  • 安い無制限の長期保存が可能です。
  • 信じられないほど簡単なクラウドバックアップ。
  • ワークフローにも配慮しています。
  • 2ファクタ認証に対応。

MASVとの統合には、BackblazeをCloud Connectのプロバイダーとして利用しています。これらの手順は、以下に説明するように、どのプロバイダーでも使用できます。 ドキュメンテーション.

MASVのアカウントをお持ちでない方

サインアップすると100GBをプレゼント

ワークフローの想定

今後は、以下のように想定しています。

  • のようなコードエディタが必要です。 ビジュアルスタジオコード.
  • Python3がインストールされていて、スクリプトが実行できること。
  • MASVのアカウントです。
  • Backblaze B2アカウントとAPIキー。

始める前に、お客様がBackblaze B2キーをお持ちであることを確認させていただきます。https://www.backblaze.com/b2/docs/application_keys.html のガイドに従ってください。

要求事項の設定

というファイルを作ることから始めましょう。 backblaze.py これは、すべてのコードを記述するためのスクリプトです。

このスクリプトには、httpリクエストを送信する機能が必要で、そのためには リクエスト のライブラリを使用しています。

ターミナルでは以下のものをインストールします。 リクエスト パッケージを使用しています。

$ pip3インストールリクエスト

MASVでの認証について

認証には、ユーザー名とパスワードを使用します。これはユーザートークンでもできますが、今日はシンプルにするために、ユーザ名/パスワードを使用します。APIキーの使用を強くお勧めします。APIキーは、万が一キーが流出した場合でも簡単に変更することができます。ユーザー認証では、アカウントの全ダッシュボードにアクセスすることができます。


//python
インポート リクエスト

api_uri = 'https://api.massive.app/v1'
api_auth_route = '/auth'

auth_request = {
    "email":"[email protected]"
    "password":"yourpassword"
}

r = requests.post(
    api_uri + api_auth_route,
    json=auth_request
)
auth_response = r.json()
auth_token = auth_response['token'].
team_id = auth_response['team'][0]['id']

print("認証トークンを取得しました")

ここでは、作業を開始するためのちょっとした定型文があります。#1行目では リクエスト のライブラリを使用しています。一方、#3行目では、api uriを定義しています。これは、将来ドメインが変更された場合に、デフォルトのルートを簡単に変更できるようにするために重要です。続いて、認証のための正確なルートを指定します。

authリクエストのために、ユーザー名とパスワードを記入します。このユーザー名とパスワードは、MASVのダッシュボードにアクセスする際に使用するものです。最後に、実際にリクエストを行う手順に移ります。文字列を連結してapi_uriとapi_auth_routeを組み合わせ、完全なURLを作成します。 https://api.massive.app/v1/auth を添付してください。 auth_request 変数をjsonに変換します。

今日は気分がいいので、リクエストが通ったと仮定して、変数の取得を開始します(返されるすべての変数の概要については、以下を参照してください)。 ドキュメント.)

必要な変数は

  • auth_token: 我々のリクエストを認証するために使用されます。
  • team_id: リクエストとクラウド接続を行うチームです。

認証済みリクエストの送信

凄いですね。さて、ユーザー・トークンを手に入れましたが、実際にはどうやって使うのでしょうか?MASVのAPIの場合は、トークンをリクエストヘッダーに添付します。簡単なjsonを作成して、スクリプト全体で使用できるようにしましょう。

//python
team_id = auth_response['team'][0]['id'].
...

リクエストヘッダー = {
    "Content-Type":"application/json",
    "X-User-Token": auth_token,
}

MASVポータルによる自動化の設定

Backblazeを使い始める前に、少し寄り道をします。ここでの目的は以下の通りです。 自動的に メディアファイルをBackblazeに転送、アーカイブすることができます。それを行うには ポータル 機能を搭載しています。ポータルは、MASV上のすべてのファイルが格納されるバケットと考えることができます。

ポータルは、GUIでもクイックスクリプトでも作成できます。今回は、クイック・スクリプトを使ってみましょう。

//python
    "X-User-Token": auth_token,
}
...

# ポータルIDの取得
api_portals_route = '/teams/{}/portals'.format(team_id)

# サブドメインが変更されていない場合、このリクエストは失敗します。
#が変更されていない場合、このリクエストは失敗します。サブドメインの行のコメントを外して
#をアンコメントして、`masvbackblaze`を独自のものに置き換えてください。
#に置き換えると、リクエストが成功します。
portal_request = {
    "name":"masvtobackblaze",
    "message":"Sending data to backblaze" (バックブレイズにデータを送信中)
    "subdomain":"masvbackblaze",
    "recipients":[
        "[email protected]"
    ],
    "access_code":"your_access_code",
    "has_access_code":Trueです。
    "download_password":"your_download_password",
    "has_download_password":真です。
}

r = requests.post(
    api_uri + api_portals_route,
    headers=request_headers,
    json=portal_request
)

# 私たちは何かを作っています。
#なので、それが実際に機能するかどうかを評価する必要があります。
#が実際に動作するかどうかを評価する必要があります。
if r.status_code != 201:
    print(r.status_code)
    print(r.json()["メッセージ"])
    exit()

portal = r.json()
portal_id = portal["id"].
print("作成されたポータル。{}".format(portal_id))

ここには、解き明かすべきことがたくさんあります。私たちはまず api_portals_route このルートは、私たちが行う必要があるかもしれない Portal リクエストと相互作用します。Pythonには、美しい .format() 関数を使用しています。 team_id uriには、先ほど取得した

実際の対応には、ちょっとした定型文を作成する必要があります。妥当なデフォルト値を設定しました。その サブドメイン はユニークなフィールドで、各人に固有のものが必要となります。 

また、リクエストには認証トークンが使用されています。 headers=request_headers 今後、認証を必要とするすべてのリクエスト関数は、これらのヘッダを含むことになります。

作成されたことを確認したいので、次のようにチェックします。 422 というエラーが表示されます。既に存在している場合は、エラーコードを出力して終了します。

注意してください。 ポータル作成の詳細はこちら ドキュメントを見る.

Backblazeの接続

これでBackblaze B2接続を作成する準備が整いました。そのために、実際のクラウド接続を作成して、前のステップで作成したポータルにアタッチします。これにより、MASVにアップロードされたビデオファイルのBackblazeへの転送とアーカイブが自動化されます。

//python
portal_id = r.json()["id"].
...

api_cloudconnect_route = '/teams/{}/cloud_connections'.format(team_id)
backblaze_connect_request = {...
    "name":"backblazetomasv",
    "provider":"backblazeb2",
    "authorization":{
        "client_id":"0005bbxxxxxxxx",
        "client_secret": "K000xxxxxxxxxxx",
        "destination":"team-bucket",
    }
}

r=requests.post(
    api_uri + api_cloudconnect_route,
    headers=request_headers,
    json=backblaze_connect_request
)

print("Created cloud connection {}".format(r.json()['id']))

# 何かを作成しています。
#を作成しているので、それが実際に動作するかどうかを評価する必要があります。
#が実際に動作するかどうかを評価する必要があります。
if r.status_code == 422:
    print(r.json()["message"])
    exit()

cloudconnect_id = r.json()['id'].

このコードの多くは見慣れたものになっているはずです。まず最初に作成するのは クラウドコネクト ルートを作成します。続いて、Backblazeの接続用のパラメータを入力します。これは 名前 フィールドは、あなたの会社が利用しているあらゆる命名規則に合わせて変更する必要があります。

で生成された認証情報を用いた認証ブロックが必要となり、記入します。 Backblaze APIキー.

//python
# ポータルに取り付ける

api_cloudconnect_attach_route = "/portals/{}".format(portal_id)

api_cloudconnect_request = portal_request
api_cloudconnect_request['active'] = True
api_cloudconnect_request['configure_cloud_connections'] = True
api_cloudconnect_request['cloud_connections'] = [{
    "id": cloudconnect_id,
    "active":真です。
    "target_action":"transfer"
}]

r=requests.put(
    api_uri + api_cloudconnect_attach_route,
    headers=request_headers,
    json=api_cloudconnect_request (リクエスト)
)

print("Created portal connection")

ファイナルでコードを実行します。

  $ python3 backblaze.py

次のように出力されます。

  認証トークンの取得
  ポータルを作成。YOUR_PORTAL_ID_HERE
  クラウド接続の作成 YOUR_CLOUD_CONNECTION_ID_HERE
  ポータル接続を作成

この出力により、スクリプトが正常に実行され、ポータルが作成され、Backblaze B2バケットに接続されたことが確認されます。 

ポータルが接続されていることを少しでも確認するために、Cloud Connectダッシュボードに移動します。Cloud Connection]ページでは、スクリプトが次のような名前の接続を作成しています。 バックブレイズトマスブ.グリーン OK の状態であれば、すべてが順調に進んでいることになります。

次にやるべきことは、メディアファイルを物理的に転送し、アーカイブすることです。MASVにドラッグ&ドロップするだけで、データが安全に送られ、保管されていることを確認して、その日のうちに帰宅することができます。

あなたのマネージャー(上記で設定した受信者)は、ファイルをダウンロードできるようになるとメールを受け取ります。Backblazeは、お客様のファイルをいずれかのバケットに準備します。

バックブレイズバケット詳細

デスクトップ上のフォルダーにファイルを移動するだけで、ファイルを転送する方法を知りたいですか?の導入に関するブログシリーズをご覧ください。 DockerでのTransferAgent.また、APIでできることをもっと見たいという方は、以下をご覧ください。 Dev Docsはこちら.

MASVを試してみませんか?

ご登録いただくと、100GB相当の転送量をご提供します。