13.6. 使用方法
たとえば、camelazure ストレージアカウントの container1 にあるブロック blob hello.txt から blob コンテンツをダウンロードするには、次のスニペットを使用します。
from("azure-storage-blob://camelazure/container1?blobName=hello.txt&credentialType=SHARED_ACCOUNT_KEY&accessKey=RAW(yourAccessKey)").to("file://blobdirectory");
from("azure-storage-blob://camelazure/container1?blobName=hello.txt&credentialType=SHARED_ACCOUNT_KEY&accessKey=RAW(yourAccessKey)").to("file://blobdirectory");
13.6.1. メッセージヘッダー リンクのコピーリンクがクリップボードにコピーされました!
Azure Storage Blob Service コンポーネントは、以下にリストされている 63 個のメッセージヘッダーをサポートしています。
| ヘッダー | 変数名 | 型 | 操作 | 説明 |
|---|---|---|---|---|
|
|
|
| すべて | それを超えると {@link RuntimeException} が発生する任意のタイムアウト値。 |
|
|
|
| コンテナーと Blob に関する操作 | コンテナーまたは Blob に関連付けるメタデータ。 |
|
|
|
|
|
このコンテナー内のデータを公開する方法を指定します。パブリックアクセスがない場合は |
|
|
|
| コンテナーと Blob に関する操作 | これには、さまざまな要求の正常な動作を現在の条件に制限する値が含まれています。これらの条件は完全にオプションです。 |
|
|
|
|
| 特定のブロブを一覧表示するための詳細 |
|
|
|
|
| 結果をフィルター処理して、名前が指定された接頭辞で始まる Blob のみを返します。すべての Blob を返すには null の場合があります。 |
|
|
|
|
| すべての BlobPrefix 要素を含め、返される Blob の最大数を指定します。要求で maxResultsPerPage が指定されていないか、5,000 を超える値が指定されている場合、サーバーは最大 5,000 項目を返します。 |
|
|
|
|
| {@link BlobContainerClient} オブジェクトで listBlobsFlatSegment への呼び出しの動作を設定するために使用できるオプションを定義します。 |
|
|
|
|
| 一連の操作の追加パラメーター。 |
|
|
|
|
| AccessTier の値を定義します。 |
|
|
|
| Blob のアップロードに関連するほとんどの操作 | ブロックコンテンツの MD5 ハッシュ。このハッシュは、転送中にブロックの整合性を検証するために使用されます。このヘッダーが指定されている場合、ストレージサービスは、到着したコンテンツのハッシュとこのヘッダー値を比較します。この MD5 ハッシュは Blob には保存されないことに注意してください。2 つのハッシュが一致しない場合、操作は失敗します。 |
|
|
|
| ページブロブに関連する操作 | {@link PageRange} オブジェクト。ページを 512 バイトの境界に揃える必要がある場合、開始オフセットは 512 の係数である必要があり、終了オフセットは 512 - 1 の係数である必要があります。有効なバイト範囲の例は、0 - 511、512 - 1023 などです。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 返すブロックのタイプを指定します。 |
|
|
|
|
| ページ Blob の最大サイズを 8 TB まで指定します。ページ Blob のサイズは、512 バイトの境界に合わせる必要があります。 |
|
|
|
|
| リクエストの追跡に使用できるユーザー制御の値。シーケンス番号の値は、0 から 2^63 - 1 の間でなければなりません。デフォルト値は 0 です。 |
|
|
|
|
| この Blob のスナップショットを削除するための動作を指定します。\{@code Include} は、ベース Blob とすべてのスナップショットを削除します。\{@code Only} はスナップショットのみを削除します。スナップショットが削除されている場合は、null を渡す必要があります。 |
|
|
|
|
| サービスによって返されるデータを指定する {@link ListBlobContainersOptions}。 |
|
|
|
|
| ファイルへのダウンロードに使用する {@link ParallelTransferOptions}。並列転送数パラメーターは無視されます。 |
|
|
|
|
| ダウンロードした Blob が保存されるファイルディレクトリー。 |
|
|
|
|
| URL ダウンロードリンクのデフォルトの有効期限 (ミリ秒) をオーバーライドします。 |
|
|
|
| ブロブに関連する操作 | 交換ヘッダーの Blob 名をオーバーライド/設定します。 |
|
|
|
| コンテナーと Blob に関する操作 | 交換ヘッダーのコンテナー名をオーバーライド/設定します。 |
|
|
|
| すべて | 実行する producer 操作を指定します。producer 操作に関連するこのページのドキュメントを参照してください。 |
|
|
|
|
| 結果をフィルタリングして、指定された正規表現と名前が一致する Blob のみを返します。すべてを返すには null の場合があります。接頭辞と正規表現の両方が設定されている場合、正規表現が優先され、接頭辞は無視されます。 |
|
|
|
|
| 結果をフィルタリングして、開始時刻の前後のイベントを返します。注意: 前の時間に属するいくつかのイベントも返される可能性があります。この時間に属するいくつかのイベントが欠落している可能性があります。その時間のすべてのイベントが確実に返されるようにするには、開始時間を 1 時間単位で切り捨てます。 |
|
|
|
|
| 結果をフィルタリングして、終了時刻のほぼ前にイベントを返します。注意: 次の 1 時間に属するいくつかのイベントも返される可能性があります。この時間に属するいくつかのイベントが欠落している可能性があります。その時間のすべてのイベントが確実に返されるようにするには、終了時間を 1 時間単位で切り上げます。 |
|
|
|
|
| これにより、サービス呼び出し中に Http パイプラインを介して渡される追加のコンテキストが提供されます。 |
|
|
|
|
| コピー Blob 操作でソースアカウント名として使用されるソース Blob アカウント名 |
|
|
|
|
| コピー Blob 操作でソースコンテナー名として使用されるソース Blob コンテナー名 |
13.6.2. コンポーネントの producer または consumer によって設定されるメッセージヘッダー リンクのコピーリンクがクリップボードにコピーされました!
| ヘッダー | 変数名 | 型 | 説明 |
|---|---|---|---|
|
|
|
| Blob のアクセス層。 |
|
|
|
| Blob のアクセス層が最後に変更された日時。 |
|
|
|
| Blob のアーカイブステータス。 |
|
|
|
| ブロブの作成時間。 |
|
|
|
| ページ Blob の現在のシーケンス番号。 |
|
|
|
| ブロブのサイズ。 |
|
|
|
| ブロブのタイプ。 |
|
|
|
| Blob に指定されたキャッシュコントロール。 |
|
|
|
| 追加 Blob にコミットされたブロックの数 |
|
|
|
| Blob に指定されたコンテンツの配置。 |
|
|
|
| Blob に指定されたコンテンツエンコーディング。 |
|
|
|
| Blob に指定されたコンテンツ言語。 |
|
|
|
| Blob に指定されたコンテンツ MD5。 |
|
|
|
| Blob に指定されたコンテンツタイプ。 |
|
|
|
| Blob に対する最後のコピー操作が完了した日時。 |
|
|
|
| Blob の最後の増分コピースナップショットのスナップショット識別子。 |
|
|
|
| Blob に対して実行された最後のコピー操作の識別子。 |
|
|
|
| Blob に対して実行された最後のコピー操作の状態。 |
|
|
|
| Blob に対して実行された最後のコピー操作のソース。 |
|
|
|
| Blob に対して実行された最後のコピー操作の状態。 |
|
|
|
| Blob に対する最後のコピー操作の説明。 |
|
|
|
| ブロブの E タグ |
|
|
|
| Blob のアクセス層が Blob のプロパティーから推測されたかどうかを示すフラグ。 |
|
|
|
| Blob が増分コピーされたかどうかを示すフラグ。 |
|
|
|
| Blob のコンテンツがサーバー上で暗号化されているかどうかを示すフラグ。 |
|
|
|
| Blob が最後に変更された日時。 |
|
|
|
| Blob のリースの種類。 |
|
|
|
| Blob のリースの状態。 |
|
|
|
| Blob のリースのステータス。 |
|
|
|
| Blob に関連付けられた追加のメタデータ。 |
|
|
|
| ブロックがブロック Blob にコミットされたオフセット。 |
|
|
|
|
操作 |
|
|
|
|
|
|
|
|
| ユーザーが使用できる解析されていない httpHeaders を返します。 |
13.6.3. 高度な Azure Storage Blob 設定 リンクのコピーリンクがクリップボードにコピーされました!
Camel アプリケーションがファイアウォールの背後で実行されている場合、または BlobServiceClient インスタンス設定をより詳細に制御する必要がある場合は、独自のインスタンスを作成できます。
次に、Camel azure-storage-blob コンポーネント設定でこのインスタンスを参照します。
from("azure-storage-blob://cameldev/container1?blobName=myblob&serviceClient=#client")
.to("mock:result");
from("azure-storage-blob://cameldev/container1?blobName=myblob&serviceClient=#client")
.to("mock:result");
13.6.4. レジストリー内の BlobServiceClient クライアントの自動検出 リンクのコピーリンクがクリップボードにコピーされました!
このコンポーネントは、レジストリー内の BlobServiceClient bean の存在を検出できます。そのタイプの唯一のインスタンスである場合、それはクライアントとして使用され、上記の例のように uri パラメーターとして定義する必要はありません。これは、エンドポイントのよりスマートな設定に非常に役立つ場合があります。
13.6.5. Azure Storage Blob producer の操作 リンクのコピーリンクがクリップボードにコピーされました!
Camel Azure Storage Blob コンポーネントは、producer 側で幅広い操作を提供します。
サービスレベルの操作
これらの操作には、accountName が 必要 です。
| 操作 | 説明 |
|---|---|
|
| ブロブの内容を取得します。この操作の出力をブロブ範囲に制限できます。 |
|
| ストレージアカウント内の Blob と Blob メタデータに発生したすべての変更のトランザクションログを返します。変更フィードは、これらの変更の順序付けられた、保証された、永続的で不変の読み取り専用ログを提供します。 |
コンテナーレベルでの操作
これらの操作には、accountName と containerName が 必要です。
| 操作 | 説明 |
|---|---|
|
| ストレージアカウント内に新しいコンテナーを作成します。同じ名前のコンテナーがすでに存在する場合、producer はそれを無視します。 |
|
| ストレージアカウント内の指定されたコンテナーを削除します。コンテナーが存在しない場合、操作は失敗します。 |
|
| フォルダー構造がフラット化された、このコンテナー内の Blob のリストを返します。 |
Blob レベルでの操作
これらの操作では、accountName、containerName、および blobName が 必須です。
| 操作 | ブロブの種類 | 説明 |
|---|---|---|
|
| 共通 | ブロブの内容を取得します。この操作の出力をブロブ範囲に制限できます。 |
|
| 共通 | ブロブを削除します。 |
|
| 共通 | パスで指定されたファイルに Blob 全体をダウンロードします。ファイルが作成されますが、存在してはなりません。ファイルがすでに存在する場合、{@link FileAlreadyExistsException} が出力されます。 |
|
| 共通 | Shared Access Signature (SAS) を使用して、指定された Blob のダウンロードリンクを生成します。デフォルトでは、これは許可されたアクセスを 1 時間に制限します。ただし、ヘッダーを使用してデフォルトの有効期限をオーバーライドできます。 |
|
| BlockBlob | 新しいブロック Blob を作成するか、既存のブロック Blob の内容を更新します。既存のブロック Blob を更新すると、Blob の既存のメタデータが上書きされます。PutBlob では部分的な更新はサポートされていません。既存の Blob のコンテンツは新しいコンテンツで上書きされます。 |
|
|
|
指定されたブロックをブロック Blob の "ステージング領域" にアップロードし、後で commitBlobBlockList の呼び出しによってコミットします。ただし、ヘッダー |
|
|
|
Blob を設定するブロック ID のリストを指定して、Blob を書き込みます。ブロックが Blob の一部として書き込まれるためには、ブロックが前の |
|
|
| 指定されたブロックリストフィルターを使用して、ブロック Blob の一部としてアップロードされたブロックのリストを返します。 |
|
|
| 長さ 0 の追加 Blob を作成します。commitAppendBlo`b 操作を呼び出して、追加 Blob にデータを追加します。 |
|
|
|
新しいデータブロックを既存の追加 Blob の末尾にコミットします。ヘッダー |
|
|
|
指定された長さのページ Blob を作成します。 |
|
|
|
1 つ以上のページをページ Blob に書き込みます。書き込みサイズは 512 の倍数である必要があります。ヘッダー |
|
|
| ページ Blob のサイズを指定されたサイズ (512 の倍数である必要があります) に変更します。 |
|
|
| 指定されたページをページ Blob から解放します。範囲のサイズは 512 の倍数でなければなりません。 |
|
|
| ページ Blob またはページ Blob のスナップショットの有効なページ範囲のリストを返します。 |
|
|
| 異なるアカウントからでも、あるコンテナーから別のコンテナーに Blob をコピーします。 |
これらの操作を camel アプリケーションで使用する方法は、このページの例のセクションを参照してください。
13.6.6. consumer の例 リンクのコピーリンクがクリップボードにコピーされました!
ファイルコンポーネントを使用して Blob をファイルに取り込むには、次のようにします。
from("azure-storage-blob://camelazure/container1?blobName=hello.txt&accountName=yourAccountName&accessKey=yourAccessKey").
to("file://blobdirectory");
from("azure-storage-blob://camelazure/container1?blobName=hello.txt&accountName=yourAccountName&accessKey=yourAccessKey").
to("file://blobdirectory");
ただし、ファイルコンポーネントを使用せずにファイルに直接書き込むこともできます。Blob をマシンに保存するには、fileDir フォルダーパスを指定する必要があります。
from("azure-storage-blob://camelazure/container1?blobName=hello.txt&accountName=yourAccountName&accessKey=yourAccessKey&fileDir=/var/to/awesome/dir").
to("mock:results");
from("azure-storage-blob://camelazure/container1?blobName=hello.txt&accountName=yourAccountName&accessKey=yourAccessKey&fileDir=/var/to/awesome/dir").
to("mock:results");
また、コンポーネントはバッチ consumer をサポートしているため、コンテナー名を指定するだけで複数の Blob を使用できます。consumer は、コンテナー内の Blob の数に応じて複数の交換を返します。
例
from("azure-storage-blob://camelazure/container1?accountName=yourAccountName&accessKey=yourAccessKey&fileDir=/var/to/awesome/dir").
to("mock:results");
from("azure-storage-blob://camelazure/container1?accountName=yourAccountName&accessKey=yourAccessKey&fileDir=/var/to/awesome/dir").
to("mock:results");
13.6.7. producer 操作の例 リンクのコピーリンクがクリップボードにコピーされました!
-
listBlobContainers
-
createBlobContainer
-
deleteBlobContainer:
-
listBlobs:
-
getBlob:
交換本体に outputStream を設定し、それにデータを書き込むことができます。例:
本体を設定しない場合、この操作は、さらに下流に進むことができる InputStream インスタンスを提供します。
-
deleteBlob:
-
downloadBlobToFile:
-
downloadLink
-
uploadBlockBlob
-
stageBlockBlobList
-
commitBlockBlobList
-
getBlobBlockList
from("direct:start")
.to("azure-storage-blob://camelazure/container1?blobName=blob&operation=getBlobBlockList&serviceClient=#client")
.log("${body}")
.to("mock:result");
from("direct:start")
.to("azure-storage-blob://camelazure/container1?blobName=blob&operation=getBlobBlockList&serviceClient=#client")
.log("${body}")
.to("mock:result");
-
createAppendBlob
from("direct:start")
.to("azure-storage-blob://camelazure/container1?blobName=blob&operation=createAppendBlob&serviceClient=#client")
.to("mock:result");
from("direct:start")
.to("azure-storage-blob://camelazure/container1?blobName=blob&operation=createAppendBlob&serviceClient=#client")
.to("mock:result");
-
commitAppendBlob
-
createPageBlob
from("direct:start")
.to("azure-storage-blob://camelazure/container1?blobName=blob&operation=createPageBlob&serviceClient=#client")
.to("mock:result");
from("direct:start")
.to("azure-storage-blob://camelazure/container1?blobName=blob&operation=createPageBlob&serviceClient=#client")
.to("mock:result");
-
uploadPageBlob
-
resizePageBlob
-
clearPageBlob
-
getPageBlobRanges
-
copyBlob
このようにして、アカウント 'account' のコンテナー containerblob1 内の file.txt が、同じアカウントのコンテナー containerblob2 にコピーされます。
13.6.8. SAS トークン生成例 リンクのコピーリンクがクリップボードにコピーされました!
SAS Blob コンテナートークンは、プログラムまたは Azure UI 経由で生成できます。Java コードを使用してトークンを生成するには、次の操作を実行します。
生成された SAS トークンは、次のように、camel ルートでロードできるように application.properties ファイルに保存できます。
camel.component.azure-storage-blob.sas-token=MY_TOKEN_HERE
from("direct:copyBlob")
.to("azure-storage-blob://account/containerblob2?operation=uploadBlockBlob&credentialType=AZURE_SAS")
camel.component.azure-storage-blob.sas-token=MY_TOKEN_HERE
from("direct:copyBlob")
.to("azure-storage-blob://account/containerblob2?operation=uploadBlockBlob&credentialType=AZURE_SAS")