コンテンツにスキップ

S3コネクタ

S3コネクタは、AWS S3および任意のS3互換サービス(MinIO、Ceph、Cloudflare R2、Backblaze B2)上のJSONオブジェクトを読み書きします。

コネクタタイプ:

  • S3Reader - バケットプレフィックスをポーリングし、新しい各オブジェクトをペイロードとして発行
  • S3Writer - 各ペイロードをテンプレート化されたキーでS3オブジェクトとして書き込む

バケットをポーリングして新しい各オブジェクトを発行:

{
"type": "S3Reader",
"config": {
"region": "us-east-1",
"bucket": "meddle-ingest",
"prefix": "incoming/",
"accessKey": "AKIAIOSFODNN7EXAMPLE",
"secretKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"pollingRate": 5000
}
}

発行された後に各オブジェクトを削除します。インボックススタイルの取り込みに役立ちます:

{
"type": "S3Reader",
"config": {
"region": "eu-west-1",
"bucket": "meddle-inbox",
"prefix": "events/",
"pollingRate": 10000,
"deleteAfter": true
}
}

S3互換エンドポイント(MinIO、R2)

Section titled “S3互換エンドポイント(MinIO、R2)”

非AWSサービスを対象とする場合はendpointを設定します。endpointが設定されている場合、パススタイルアドレッシングが自動的に有効になります:

{
"type": "S3Reader",
"config": {
"endpoint": "https://minio.example.com:9000",
"region": "us-east-1",
"bucket": "sensor-data",
"prefix": "raw/",
"accessKey": "minio_access_key",
"secretKey": "minio_secret_key",
"pollingRate": 5000
}
}

Goテンプレートをキーとして使用し、各ペイロードを新しいオブジェクトとして書き込みます:

{
"type": "S3Writer",
"config": {
"region": "us-east-1",
"bucket": "meddle-archive",
"keyTemplate": "events/{{.deviceId}}/{{.timestamp}}.json",
"accessKey": "AKIAIOSFODNN7EXAMPLE",
"secretKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
}
}
{
"type": "S3Writer",
"config": {
"endpoint": "https://minio.example.com:9000",
"region": "us-east-1",
"bucket": "processed",
"keyTemplate": "out/{{.line}}/{{.timestamp}}.json",
"accessKey": "minio_access_key",
"secretKey": "minio_secret_key",
"contentType": "application/json"
}
}
  • region: AWSリージョン(リーダーとライターの両方に必須)
  • bucket: S3バケット名(必須)
  • endpoint: (オプション)S3互換サービス用のカスタムエンドポイントURL。パススタイルアドレッシングを有効化
  • accessKey: (オプション)AWSアクセスキーID。省略した場合はデフォルトのAWS資格情報チェーンにフォールバック
  • secretKey: (オプション)AWSシークレットアクセスキー
  • prefix: (Reader)リストをフィルタリングするオブジェクトキープレフィックス
  • pollingRate: (Reader、必須)ミリ秒単位のポーリング間隔
  • deleteAfter: (Reader)読み取り後に各オブジェクトを削除
  • keyTemplate: (Writer、必須)各ペイロードのオブジェクトキーを構築するためのGoテンプレート
  • contentType: (Writer)書き込みオブジェクトのMIMEタイプ(デフォルト:application/json

ライターのkeyTemplateは、ペイロードに対して評価されるGoのtext/template文字列です。トップレベルのペイロードフィールドは{{.fieldName}}として参照されます:

テンプレート結果のキー(サンプルペイロード)
events/{{.deviceId}}/{{.timestamp}}.jsonevents/sensor-42/1737036000.json
raw/{{.year}}/{{.month}}/{{.id}}.jsonraw/2026/05/abc-123.json
flat-{{.id}}.jsonflat-abc-123.json

テンプレートで参照されているすべてのフィールドがペイロードに存在することを確認してください。そうでないと、テンプレートは欠落キーに対して空の文字列をレンダリングし、上書き時に衝突する可能性があります。

  • accessKeysecretKeyの両方が設定されている場合、コネクタは静的資格情報を使用します。
  • 省略された場合、AWS SDKデフォルトチェーンが適用されます:環境変数、EC2/ECSタスクロール、共有~/.aws/credentialsプロファイルなど。

リーダーは既に発行したオブジェクトキーのインメモリセットを保持するため、各オブジェクトはMeddleプロセスのライフタイム中に1回だけ処理されます。再起動をまたいだ永続的なインボックススタイル取り込みにはdeleteAfter: trueと組み合わせて使用してください。

  • MongoDB - ドキュメントストレージの代替
  • InfluxDB - 時系列ストレージの代替
  • HTTP - 代わりにREST APIにデータをプッシュ