ObjectCreated:* イベントを待ち受け、ファイル名の命名規則に関係なく、新しいファイルを取り込めるようになります。
順不同モードは Amazon S3 でのみサポートされており、パブリックバケットや S3 互換サービスではサポートされていません。このモードを使用するには、Amazon SQS キューをバケットに接続し、必要に応じて Amazon EventBridge をイベントルーターとして使用する設定が必要です。
仕組み
ObjectCreated:* イベントを監視します。すでに処理済みのファイルに関するメッセージ、パスに一致しないファイル、または別種のイベントは、すべて無視されます。ファイルは、max insert bytes または max file count で設定されたしきい値に達した時点、または設定可能な間隔 (デフォルトでは 30 秒) 経過後に取り込まれます。特定のファイルや特定の時点からインジェストを開始することはできません。ClickPipes は常に、選択したパス内のすべてのファイルを読み込みます。
データの取り込み時にはさまざまな障害が発生する可能性があり、その結果、一部のみが挿入されたり、重複データが発生したりすることがあります。Object Storage 用 ClickPipes は挿入の失敗に強く、一時的なステージングテーブルを使用して exactly-once セマンティクスを提供します。データはまずステージングテーブルに挿入され、問題が発生した場合はステージングテーブルを空にして、クリーンな状態から挿入を再試行します。挿入が正常に完了した場合にのみ、パーティションがターゲットテーブルに移動されます。
Amazon SQS キューの作成
1. AWS Console で Simple Queue Service > Create queue に移動します。デフォルト設定のまま新しい標準キューを作成します。2. 以下の2つのオプションのいずれかを使用して、S3バケットをSQSキューに接続します。EventBridgeは、ファンアウトのサポート、より柔軟なイベントフィルタリング、そしてイベントタイプおよびプレフィックスごとの通知ルール数が1つに制限されるS3の制約を受けないという利点があるため、ほとんどのユースケースで推奨されます。- EventBridge 経由
- Direct S3 → SQS
a. S3 バケットのプロパティで Event notifications > Amazon EventBridge に移動し、EventBridge への通知送信を有効にします。Save changes をクリックします。b. AWS Console で Amazon EventBridge > Rules > Create rule に移動します。ルールに名前を付け (例: 必要に応じて、プレフィックスまたは接尾辞で絞り込むための
S3ObjectCreated) 、default event bus を選択して、Next をクリックします。Build event pattern ステップで、イベントソースとして AWS events or EventBridge partner events を選択し、次のイベントパターンを手動で入力します。このとき、<bucket-name> は使用するバケット名に置き換えてください。object.key 条件をパターンに追加できます。その場合は、ClickPipe に設定したパスと一致していることを確認してください。c. Select target(s) ステップで、ターゲットタイプとして AWS service を選択し、SQS queue を選びます。前のステップで作成したキューを選択してください。EventBridge が必要な IAM ロールを自動作成できるよう、Use execution role (recommended) はチェックしたままにして、Next をクリックし、ウィザードを完了します。d. SQS キューのアクセスポリシーを編集し、EventBridge がメッセージを送信できるようにします。<sqs-queue-arn> と <eventbridge-rule-arn> は適切な値に置き換えてください。IAM ロールを設定する
1. ClickHouse Cloud console で Settings > Network security information に移動し、サービスの IAM role ARN をコピーします。2. AWS Console で IAM > Roles > Create role に移動します。Custom trust policy を選択し、以下の内容を貼り付けます。<ch-cloud-arn> は、前の手順でコピーした IAM role ARN に置き換えてください。<bucket-arn> と <sqs-queue-arn> は適切な値に置き換えてください。順不同モードで ClickPipe を作成する
1. ClickHouse Cloudコンソールで Data Sources > Create ClickPipe に移動し、Amazon S3 を選択します。S3 バケットへの接続に必要な情報を入力します。Authentication method で IAM role を選択し、前の手順で作成したロールの ARN を指定します。2. Incoming data で Continuous ingestion をオンにします。インジェストモードとして Any order を選択し、バケットに接続されたキューの SQS queue URL を指定します。3. Parse information で、ターゲットテーブルの Sorting key を定義します。マッピングされたスキーマに必要な調整を加えたら、ClickPipes のデータベースユーザーに割り当てるロールを設定します。4. 設定内容を確認し、Create ClickPipe をクリックします。ClickPipes はまずバケットを初回スキャンして、指定したパスに一致する既存のファイルをすべて読み込みます。その後、新しいObjectCreated:* イベントがキューに到着すると、ファイルの処理を開始します。