Zum Hauptinhalt springen
connic

AWS S3

Von connic
Inbound

Starte einen Agenten für jede Datei, die in deinem Bucket landet. Er bekommt Key und Event-Details und mit Include Content auch die Datei selbst.

Publisher
Von connic
Modi
Inbound
Einrichtung
Dashboard oder connectors/*.yaml
Dokumentation
AWS S3 Docs

Richte deinen Bucket auf eine URL aus

S3 sendet seine Event Notifications über eine SNS-Subscription oder eine EventBridge-Regel direkt an die Verbindung, ohne Funktion dazwischen.

SNS-Subscription
Abonniere die URL der Verbindung mit angehängtem ?secret=. connic bestätigt die Subscription, prüft die AWS-Signatur jeder Nachricht und entpackt den Umschlag.
EventBridge
Nutze dieselbe URL samt Secret als API Destination einer EventBridge-Regel. EventBridge-Events erreichen den Agenten im selben Payload-Format.
Ein Secret bei jedem Aufruf
Sende es als Query-Parameter secret, als X-Connic-Secret Header oder als Bearer Token. Bei falschem Secret antwortet connic mit 401, und kein Run startet.
setup-sns.sh
# 1. Create an SNS topic
aws sns create-topic --name s3-events

# 2. Subscribe the connector URL
aws sns subscribe \
  --topic-arn arn:aws:sns:eu-central-1:123456789012:s3-events \
  --protocol https \
  --notification-endpoint '<connector-url>?secret=<secret-key>'

# 3. Send the bucket's events to the topic
aws s3api put-bucket-notification-configuration \
  --bucket example-invoices \
  --notification-configuration '{
    "TopicConfigurations": [{
      "TopicArn": "arn:aws:sns:eu-central-1:123456789012:s3-events",
      "Events": ["s3:ObjectCreated:*"]
    }]
  }'

Erhalte das Event oder die Datei gleich mit

Jedes passende Objekt startet einen eigenen Run. Mit Include Content lädt connic die Datei herunter und gibt sie zusammen mit dem Event an das Modell.

Standardmäßig Metadaten
Bucket, Key, Größe, ETag, Event-Name und Zeitpunkt, dazu unter _s3 die AWS-Region, Request-ID und Quell-IP.
Include Content
Text, JSON und XML kommen als UTF-8-Text an, alles andere base64-codiert, bis zu einer Max File Size zwischen 1 und 10 MiB.
Dateien über dem Limit
Der Run startet trotzdem mit den Metadaten, und content.skipped und file_issues nennen den Grund. Aktiviere Files required an der Agent-Verknüpfung, damit solche Runs gar nicht erst starten.
Nur Lesezugriff
Downloads brauchen s3:GetObject für den Bucket. Ohne Include Content liest die Verbindung nie daraus.
event-payload.json
{
  "bucket": "example-invoices",
  "key": "incoming/inv-2041.pdf",
  "size": 182344,
  "etag": "9b2cf535f27731c974343645a3985328",
  "event_name": "ObjectCreated:Put",
  "event_time": "2026-10-13T09:00:00.000Z",
  "_s3": {
    "event_source": "aws:s3",
    "aws_region": "eu-central-1",
    "request_id": "C3D13FE58DE4C810",
    "source_ip": "192.0.2.1"
  }
}
with-include-content.json
{
  "bucket": "example-invoices",
  "key": "incoming/inv-2041.pdf",
  "size": 182344,
  "etag": "9b2cf535f27731c974343645a3985328",
  "event_name": "ObjectCreated:Put",
  "event_time": "2026-10-13T09:00:00.000Z",
  "content": {
    "base64": "JVBERi0xLjcKJeLjz9MK...",
    "content_type": "application/pdf",
    "size_bytes": 182344,
    "encoding": "base64"
  },
  "_s3": { ... }
}

Halte den Trigger neben deinen Agenten

Deklariere ihn als YAML-Datei in connectors/. AWS-Schlüssel und Region liegen in einer Connection, die die Datei per Name referenziert. URL und Secret erzeugt connic beim ersten Deployment.

connectors/invoice-uploads.yaml
type: s3
name: Invoice uploads
connection: invoices-aws
config:
  bucket_name: example-invoices
  prefix: incoming/
  suffix: .pdf
  include_content: true
agents:
  - name: invoice-pipeline
    files_required: true
create: connectors/invoice-uploads.yaml (s3)

Lass AWS wiederholen, ohne doppelte Runs

connic verwirft herausgefilterte Events, bevor ein Run startet, und ein erneut zugestelltes Event verwendet den Run, den es schon gestartet hat.

Event-Typen
Standard ist Object Created mit Put, Post, Copy und CompleteMultipartUpload. All Events nimmt Löschungen und Wiederherstellungen dazu.
Prefix und Suffix
Beschränke Runs auf Keys wie incoming/ und .pdf. Andere Keys werden ohne Run ignoriert.
Privater Speicher
Leite Datei-Downloads über eine Bridge, wenn dein Storage-Endpoint in deinem Netzwerk liegt.
  1. Notification kommt an

    SNS oder EventBridge senden bis zu 100 Records in einem Body von höchstens 10 MiB.

  2. connic filtert

    Records für einen anderen Bucket, einen anderen Event-Typ oder einen Key außerhalb von Prefix und Suffix werden übersprungen.

  3. Runs starten

    Jeder verbleibende Record startet einen Run pro verknüpftem Agenten, mit einer Run-ID, die aus dem Event abgeleitet ist.

  4. Fehler lösen eine Wiederholung aus

    Kann ein Run nicht starten, antwortet connic mit 503. Die Wiederholung ergibt dieselben Run-IDs, bereits gestartete Runs werden also wiederverwendet.

Wo ein S3-Trigger passt

Wähle ein Szenario und sieh, was im Bucket landet, was der Agent bekommt und wohin das Ergebnis geht.

Gescannte Rechnungen landen in incoming/, und ein ausgehender Webhook schickt die extrahierten Felder an dein ERP.

Rechnungsscanner
S3 Inbound
invoice-pipeline
Felder im ERP
event-payload.json
{
  "bucket": "example-invoices",
  "key": "incoming/inv-2041.pdf",
  "size": 182344,
  "etag": "9b2cf535f27731c974343645a3985328",
  "event_name": "ObjectCreated:Put",
  "event_time": "2026-10-13T09:00:00.000Z",
  "content": {
    "base64": "JVBERi0xLjcKJeLjz9MK...",
    "content_type": "application/pdf",
    "size_bytes": 182344,
    "encoding": "base64"
  },
  "_s3": { ... }
}
outbound-payload.json
{
  "run_id": "550e8400-e29b-41d4-a716-446655440000",
  "agent_name": "invoice-pipeline",
  "status": "completed",
  "output": "Invoice 2041, Example Supplies, 1,240 EUR net, due Nov 12.",
  "error": null,
  "started_at": "2026-10-13T09:00:00Z",
  "ended_at": "2026-10-13T09:00:09Z",
  "token_usage": {
    "input_tokens": 2140,
    "output_tokens": 72,
    "thinking_tokens": 0,
    "cached_input_tokens": 0,
    "total_tokens": 2212
  }
}

Unterschriebene Verträge landen in contracts/, und der Agent postet Laufzeit, Kündigungsfrist und Verlängerung in Slack.

Rechtsabteilung
S3 Inbound
contract-reviewer
Zusammenfassung in Slack
event-payload.json
{
  "bucket": "example-contracts",
  "key": "contracts/msa-example-gmbh.pdf",
  "size": 264511,
  "etag": "4c1e8f0b7d2a93e65f10a8c7b3d94e21",
  "event_name": "ObjectCreated:Put",
  "event_time": "2026-10-13T09:00:00.000Z",
  "content": {
    "base64": "JVBERi0xLjcKJeLjz9MK...",
    "content_type": "application/pdf",
    "size_bytes": 264511,
    "encoding": "base64"
  },
  "_s3": { ... }
}
connector-payload.json
{
  "text": "Example GmbH MSA: 24 months, 3 months notice, auto-renews.",
  "channel_id": "C01234567"
}

Partner legen CSV-Exporte in imports/ ab, und der Agent schickt ihnen per E-Mail die Zeilen, die korrigiert werden müssen.

Partner-Export
S3 Inbound
import-checker
E-Mail an den Partner
event-payload.json
{
  "bucket": "example-imports",
  "key": "imports/products-2026-10.csv",
  "size": 53,
  "etag": "e7a2c94b0f1d36852b8e4a7f0c9d1b63",
  "event_name": "ObjectCreated:Put",
  "event_time": "2026-10-13T09:00:00.000Z",
  "content": {
    "text": "sku,qty,price\nA-100,4,19.90\nA-101,,24.50\nB-207,2,9.99",
    "content_type": "text/csv",
    "size_bytes": 53,
    "encoding": "utf-8"
  },
  "_s3": { ... }
}
connector-payload.json
{
  "to": "imports@example.com",
  "subject": "2 rows to fix in products-2026-10.csv",
  "body": "Row 3 has no quantity. Row 4 uses the unknown SKU B-207."
}

Neue Fotos landen im Medien-Bucket, und ein ausgehender Webhook schickt Alt-Text und Tags an dein CMS.

Fotostudio
S3 Inbound
catalog-tagger
Alt-Text im CMS
event-payload.json
{
  "bucket": "example-media",
  "key": "products/shirt-0412.jpg",
  "size": 734002,
  "etag": "b05d7e3a91c84f26e0a3d58b7c12f9e4",
  "event_name": "ObjectCreated:Put",
  "event_time": "2026-10-13T09:00:00.000Z",
  "content": {
    "base64": "/9j/4AAQSkZJRgABAQAAAQABAAD...",
    "content_type": "image/jpeg",
    "size_bytes": 734002,
    "encoding": "base64"
  },
  "_s3": { ... }
}
outbound-payload.json
{
  "run_id": "550e8400-e29b-41d4-a716-446655440000",
  "agent_name": "catalog-tagger",
  "status": "completed",
  "output": "Blue linen shirt on white. Tags: shirt, linen, blue.",
  "error": null,
  "started_at": "2026-10-13T09:00:00Z",
  "ended_at": "2026-10-13T09:00:09Z",
  "token_usage": {
    "input_tokens": 2140,
    "output_tokens": 72,
    "thinking_tokens": 0,
    "cached_input_tokens": 0,
    "total_tokens": 2212
  }
}

FAQ zu AWS S3

Füge dem Agenten eine S3-Verbindung mit einer Connection für deine AWS-Schlüssel und Region hinzu. Sende dann die Event Notifications des Buckets über eine SNS-Subscription oder eine EventBridge-Regel an die URL der Verbindung. Jeder passende Upload startet einen Run mit den Angaben zum Objekt. Die AWS-CLI-Befehle für beide Wege findest du in der S3-Dokumentation.

Standardmäßig die Metadaten. Mit Include Content lädt connic jedes Objekt bis zur eingestellten Max File Size von 1 bis 10 MiB herunter und gibt es zusammen mit dem Event an das Modell. Text und JSON kommen als UTF-8-Text an, andere Formate base64-codiert. Größere Dateien kann der Agent selbst über Bucket und Key abrufen.

Nein. Die Notifications des Buckets gehen über SNS oder EventBridge direkt an die URL der Verbindung, und die Verarbeitung übernimmt dein Agent.

Die Run-ID wird aus dem Event abgeleitet. Eine wiederholte Zustellung an denselben Agenten verwendet deshalb den bestehenden Run, und Wiederholungen nach einem 503 sind unkritisch.

Nur s3:GetObject für den Bucket, und auch das nur mit Include Content. Ohne diese Option arbeitet die Verbindung allein mit der Notification und liest nie aus deinem Bucket.