Preview. Audit streaming is available to organisations in the audit streaming pilot.
Amazon S3
- In Wordsmith, start adding an Amazon S3 destination. Copy the Wordsmith role ARN and the external ID.
- Deploy
s3-destination.yamlwith CloudFormation. Enter those two values, your bucket name, an optional prefix, and the KMS key ARN if the bucket uses SSE-KMS. - Copy the stack’s
RoleArnoutput into Wordsmith, then verify and activate the destination.
<prefix>/wordsmith/v1/dt=YYYY-MM-DD/ and one manifest per batch to <prefix>/wordsmith/v1/_manifests/dt=YYYY-MM-DD/. The manifest records the object’s event count and SHA-256. The role allows s3:PutObject under <prefix>/wordsmith/v1/ only. Wordsmith never reads objects back: each write is conditional, so a retry never overwrites data.
If the bucket is in a different account from the role, add a bucket policy statement that allows the role s3:PutObject on arn:aws:s3:::<bucket>/<prefix>/wordsmith/v1/*.
Query with Athena
athena/s3-jsonl-table.sql creates a table over JSONL objects with partition projection, and a wordsmith_audit_events view that removes duplicate deliveries. The table reads only the dt= folders, so it never reads the manifests. athena/s3-example-queries.sql has queries for failed sign-ins, role changes, API key changes, export bursts and MCP tool failures.
Amazon Security Lake
Security Lake takes one OCSF event class per custom source, so Wordsmith uses one custom source for each class it sends.-
Deploy
security-lake-provider.yamlin your Security Lake account and Region. It creates the role the AWS Glue crawler uses. - In Wordsmith, start adding an Amazon Security Lake destination and copy the Wordsmith role ARN and external ID.
-
With AWS CLI v2 and
jq, run:The script creates a custom source for each class Wordsmith sends: Account Change (3001), Authentication (3002), Entity Management (3004) and API Activity (6003). It limits each source’s provider role to the Wordsmith role and external ID, and prints the settings underwordsmith_config. -
In Wordsmith, enter the Region and account ID, then add each class with its source location and provider role from
wordsmith_config. Each provider role can write only to its own source, so every class needs its own role. API Activity (6003) is required, because Wordsmith verifies the destination with it. - Verify and activate the destination.
athena/security-lake-example-queries.sql has example queries for the Wordsmith tables. Each source has its own Glue table; the script prints the table ARNs. If a table has no columns after the first delivery, run that source’s Glue crawler: aws glue start-crawler --name <source name>.
Related pages
- List Audit Events: the event fields each JSON line carries.
- Microsoft Sentinel, Splunk and HTTPS receiver: the other ways to collect the audit log.