質問
S3コネクターにおけるの「ファイル/フォルダ読み取り」において、ファイルが読み取れていないのにコンポーネントでエラーが発生しません。
どのようにエラーを検知すればいいでしょうか。
回答
S3コネクターにおけるエラーを検知したい場合、出力データを確認する必要があります。
前提として、S3コネクターは以下マニュアルの制限事項に沿って動作しています。
■Amazon S3 コネクターのメッセージおよび制限事項 > AMAZONS3カテゴリの制限事項 > ファイル/フォルダ読み取り処理
実行時に、接続関連以外のエラー(「AMAZONS3カテゴリの例外メッセージ」項に記載のないエラー)が発生した場合、
エラーが発生したファイル/フォルダのfile要素のstatus属性に「Error」を設定して結果データとして出力し、後続の処理を続行します。
そのため、指定ディレクトリの誤りなどがあった場合、ファイル読み取り処理には失敗しますが、
出力されるエラーは接続関連以外のものとなりますため、そのままではコンポーネント処理単位での例外エラーが発生せず、
スクリプト処理のエラーとして扱われません。
出力データを確認する方法としては、「データログ出力(XML型)処理」を用いて処理結果の出力データを確認いただく方法があります。
各ファイルの取得結果につきましては、出力データのスキーマにおける
「bucket > status」 要素、および「file > status」要素に格納されるため、
「ファイル/フォルダ書き込み」処理の出力データを「データログ出力(XML型)処理」にてログ出力することで、
実行ログに出力される出力データのstatusをご確認いただく事が可能です。
また、ファイル取得結果によるエラーハンドリングを実装したい場合、
出力データを用いて処理成否の判定を行っていただく方法があります。
以下にエラーハンドリングの構築例を紹介いたします。
■構築例
読み取りに成功した場合、[status]には「Exist」が格納されます。
このため、この値がExistかどうかを判定することで処理が成功したかで
処理を分岐させることが可能です。
- バケットとファイル/ディレクトリの存在確認を判定した結果を
格納するスクリプト変数をそれぞれ用意します(真偽値型)。 - [マッピング]または[変数代入]にて、ファイルとそれが格納されているバケットが
それぞれ存在している(値がExistかどうか)を確認し、結果を変数に格納します。
例では比較に[等しい]ロジックを、比較対象には[単一行文字列定数]ロジックを
それぞれ使用しています。
-
[条件分岐]処理にて、それぞれの変数がTrue(statusがExistsであった)かどうかで処理を分岐させます。
例では、変数がTrueでなかった(statusがExistsでなかった、すなわち対象がなかった)時に[例外通知]処理で
スクリプトを異常終了させるようにしています。
出力スキーマの内容につきましては、下記オンラインヘルプを
ご参照ください。
◇ファイル/フォルダ読み取り処理
コメント
0件のコメント
記事コメントは受け付けていません。