S3 Logs
The S3 Logs module enables reading log and trace events from a single AWS S3 object for analysis and transformation into TenXObjects.
How It Works
The S3 Logs input fetches a single S3 object by key using the GetObject API. The object's line-delimited content is then split into individual events for processing.
graph LR
A["Timer<br/>Trigger"] --> B["GetObject<br/>API"]
B --> C["Stream<br/>Content"]
C --> D["Split by<br/>Newlines"]
D --> E["Transform to<br/>TenXObjects"]
E --> F["Close<br/>Route"]
classDef trigger fill:#2563eb88,stroke:#1d4ed8,color:#ffffff
classDef api fill:#ea580c88,stroke:#c2410c,color:#ffffff
classDef process fill:#05966988,stroke:#047857,color:#ffffff
class A trigger
class B api
class C,D,E process
class F trigger
Authentication
The module supports the AWS default credential provider chain:
- Environment variables (
AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY) - Java system properties
- Web identity token (for EKS/IRSA)
- Shared credentials file (
~/.aws/credentials) - ECS container credentials
- EC2 instance profile credentials
Explicit credentials can also be provided via configuration:
s3Logs:
- name: MyS3LogsInput
bucket: my-bucket
key: logs/app.log
awsAccessKeyID: AKIAIOSFODNN7EXAMPLE
awsSecretKey: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Backpressure Controls
Control resource usage with backpressure options:
| Option | Description | Default |
|---|---|---|
totalBytesLimit |
Max bytes to read | 50MB |
totalEventsLimit |
Max events to read | 10000 |
totalDuration |
Max time to keep input open | 5min |
Example Configuration
tenx: run
include: run/modules/input/analyzer/s3Logs
s3Logs:
- name: ProductionLogs
bucket: my-company-logs
key: logs/2024/01/15/application.log
awsRegion: us-west-2
totalBytesLimit: $=parseBytes("100MB")
totalEventsLimit: 50000
printProgress: true
Related Modules
- CloudWatch Logs Input - Read from CloudWatch Logs
- Object Storage Query - Query-based object storage access
Configuration
To configure the AWS S3 Logs input module, Edit these settings.
Below is the default configuration from: s3Logs/config.yaml (* Required Fields).
ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgInMzTG9ncyIgOiB7CiAgICAgICJ0eXBlIiA6ICJhcnJheSIsCiAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAgICJuYW1lIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTG9naWNhbCBuYW1lIGZvciB0aGlzIEFXUyBTMyBpbnB1dFxuXG5TZXRzIGEgbG9naWNhbCBuYW1lIChlLmcuLCAnbXlTM0lucHV0JykgZm9yIHRoaXMgaW5wdXQuIFRoZSBbaW5wdXROYW1lXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWEJhc2VPYmplY3QraW5wdXROYW1lKSBmaWVsZCByZXR1cm5zIHRoaXMgdmFsdWUgYXQgcnVuIHRpbWUgdG8gYWxsb3cgZm9yIGlkZW50aWZ5aW5nIGFuZCBvcGVyYXRpbmcgb24gaW5zdGFuY2VzIG9yaWdpbmF0aW5nIGZyb20gdGhpcyBpbnB1dC4iCiAgICAgICAgICB9LAogICAgICAgICAgImVuYWJsZWQiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgImJvb2xlYW4iLAogICAgICAgICAgICAgICJzdHJpbmciCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJTZXRzIHdoZXRoZXIgdGhpcyBpbnB1dCBpcyBlbmFibGVkXG5cblNldHMgd2hldGhlciB0byBvcGVuIHRoZSBpbnB1dCBzdHJlYW0uIFRvIGVuYWJsZSB0aGlzIGlucHV0IG9ubHkgd2hlbiBhbiAnczNMb2dzQnVja2V0JyBzdGFydHVwIGFyZ3VtZW50IHZhbHVlIGlzIHRydXRoeSwgdXNlOiBgYGAgeWFtbCBzM0xvZ3NFbmFibGVkOiAkPVRlblhFbnYuZ2V0KFwiczNMb2dzQnVja2V0XCIpIGBgYCBUbyBsZWFybiBtb3JlIHNlZSBbVGVuWEVudi5nZXRdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YRW52LmdldCkuIChBY2NlcHRzIGJvb2xlYW4gb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIgogICAgICAgICAgfSwKICAgICAgICAgICJwcmludFByb2dyZXNzIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJib29sZWFuIiwKICAgICAgICAgICAgICAic3RyaW5nIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiU2V0cyB3aGV0aGVyIHRoaXMgaW5wdXQgcHJpbnRzIHRocm91Z2hwdXQgc3RhdHMgdG8gdGhlIGNvbnNvbGVcblxuU2V0cyB3aGV0aGVyIHRoaXMgaW5wdXQgcHJpbnRzIHRocm91Z2hwdXQgc3RhdHMgdG8gdGhlIGNvbnNvbGUgZm9yIHRlc3RpbmcgYW4gaW50ZWdyYXRpb24gdG8gYSByZW1vdGUgZW5kcG9pbnQuIChBY2NlcHRzIGJvb2xlYW4gb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiBmYWxzZSkiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiBmYWxzZQogICAgICAgICAgfSwKICAgICAgICAgICJhd3NSZWdpb24iIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJBV1MgcmVnaW9uXG5cblNldHMgdGhlIEFXUyByZWdpb24gKGUuZy4sICd1cy1lYXN0LTEnKSBob3N0aW5nIHRoZSB0YXJnZXQgUzMgYnVja2V0LiAgVG8gbGVhcm4gbW9yZSBzZWUgW0FXUyBSZWdpb25zXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvdXNpbmctcmVnaW9ucy1hdmFpbGFiaWxpdHktem9uZXMuaHRtbCkiCiAgICAgICAgICB9LAogICAgICAgICAgImF3c0FjY2Vzc0tleUlEIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiQVdTIGF1dGhlbnRpY2F0aW9uIGFjY2VzcyBrZXkgSURcblxuU2V0cyB0aGUgQVdTIGFjY2VzcyBrZXkgKGUuZy4sICdBS0lBSU9TRk9ETk43RVhBTVBMRScpIHVzZWQgYXMgcGFydCBvZiB0aGUgcmVxdWVzdCBzaWduaW5nIHByb2Nlc3MuICAqKklmIG5vdCBzcGVjaWZpZWQqKiwgdGhlIHN5c3RlbSBhdXRvbWF0aWNhbGx5IGZhbGxzIGJhY2sgdG8gdGhlIFtBV1MgZGVmYXVsdCBjcmVkZW50aWFsIHByb3ZpZGVyIGNoYWluXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc2RrLWZvci1qYXZhL2xhdGVzdC9kZXZlbG9wZXItZ3VpZGUvY3JlZGVudGlhbHMtY2hhaW4uaHRtbCksIHdoaWNoIGNoZWNrcyAoaW4gb3JkZXIpOiAgMS4gRW52aXJvbm1lbnQgdmFyaWFibGVzIChgQVdTX0FDQ0VTU19LRVlfSURgLCBgQVdTX1NFQ1JFVF9BQ0NFU1NfS0VZYCkgMi4gSmF2YSBzeXN0ZW0gcHJvcGVydGllcyAzLiBXZWIgaWRlbnRpdHkgdG9rZW4gKGZvciBFS1MpIDQuIFNoYXJlZCBjcmVkZW50aWFscyBmaWxlIChgfi8uYXdzL2NyZWRlbnRpYWxzYCkgNS4gRUNTIGNvbnRhaW5lciBjcmVkZW50aWFscyA2LiBFQzIgaW5zdGFuY2UgcHJvZmlsZSBjcmVkZW50aWFscyAgVG8gbGVhcm4gbW9yZSBzZWUgW0FXUyBhY2Nlc3Mga2V5c10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0lBTS9sYXRlc3QvVXNlckd1aWRlL2lkX2NyZWRlbnRpYWxzX2FjY2Vzcy1rZXlzLmh0bWwpIgogICAgICAgICAgfSwKICAgICAgICAgICJhd3NTZWNyZXRLZXkiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJBV1MgYXV0aGVudGljYXRpb24gc2VjcmV0IGtleVxuXG5TZXRzIHRoZSBBV1MgYWNjZXNzIHNlY3JldCBrZXkgKGUuZy4gJ3dKYWxyWFV0bkZFTUkvSzdNREVORy9iUHhSZmlDWUVYQU1QTEVLRVknKSB1c2VkIGFzIHBhcnQgb2YgdGhlIHJlcXVlc3Qgc2lnbmluZyBwcm9jZXNzLiAgKipJZiBub3Qgc3BlY2lmaWVkKiosIHRoZSBzeXN0ZW0gYXV0b21hdGljYWxseSBmYWxscyBiYWNrIHRvIHRoZSBbQVdTIGRlZmF1bHQgY3JlZGVudGlhbCBwcm92aWRlciBjaGFpbl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3Nkay1mb3ItamF2YS9sYXRlc3QvZGV2ZWxvcGVyLWd1aWRlL2NyZWRlbnRpYWxzLWNoYWluLmh0bWwpLiBUaGlzIGFsbG93cyB1c2luZyBjcmVkZW50aWFscyBmcm9tIGB+Ly5hd3MvY3JlZGVudGlhbHNgLCBJQU0gcm9sZXMsIG9yIGVudmlyb25tZW50IHZhcmlhYmxlcyB3aXRob3V0IGV4cGxpY2l0IGNvbmZpZ3VyYXRpb24uICBUbyBsZWFybiBtb3JlIHNlZSBbQVdTIHNlY3VyaXR5IGNyZWRlbnRpYWxzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZ2VuZXJhbC9sYXRlc3QvZ3IvYXdzLXNlYy1jcmVkLXR5cGVzLmh0bWwpIgogICAgICAgICAgfSwKICAgICAgICAgICJidWNrZXQiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJBV1MgUzMgYnVja2V0IG5hbWVcblxuU2V0cyB0aGUgUzMgYnVja2V0IG5hbWUgKGUuZy4sICdteS1sb2ctYnVja2V0JykgY29udGFpbmluZyB0aGUgb2JqZWN0IHRvIHJlYWQuIFRvIGxlYXJuIG1vcmUgc2VlIFtTMyBCdWNrZXQgTmFtaW5nXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9idWNrZXRuYW1pbmdydWxlcy5odG1sKSIKICAgICAgICAgIH0sCiAgICAgICAgICAia2V5IiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiUzMgb2JqZWN0IGtleSB0byBmZXRjaFxuXG5TZXRzIHRoZSBTMyBvYmplY3Qga2V5IChlLmcuLCAnbG9ncy8yMDI0LzAxLzE1L2FwcC5sb2cnKSB0byBmZXRjaC4gVGhpcyBpbnB1dCByZWFkcyBhIHNpbmdsZSBTMyBvYmplY3QgYW5kIHRyYW5zZm9ybXMgaXRzIGxpbmUtZGVsaW1pdGVkIGNvbnRlbnQgaW50byBUZW5YT2JqZWN0cyBmb3IgYW5hbHlzaXMuICBGb3IgZXhhbXBsZTogYGBgIHlhbWwgczNMb2dzOiAgIC0gbmFtZTogTXlMb2dzICAgICBidWNrZXQ6IG15LWJ1Y2tldCAgICAga2V5OiBsb2dzL2FwcGxpY2F0aW9uLmxvZyBgYGAiCiAgICAgICAgICB9LAogICAgICAgICAgInRvdGFsQnl0ZXNMaW1pdCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk1heGltdW0gdG90YWwgYnl0ZXMgdG8gcmVhZCBmcm9tIGlucHV0IGJlZm9yZSBjbG9zaW5nXG5cblNldHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIGEgdGFyZ2V0IHBpcGVsaW5lIGlucHV0IHdpbGwgcmVhZCBpbnRvIHRoZSBwaXBlbGluZS4gVGhpcyB2YWx1ZSBsaW1pdHMgdGhlIHZvbHVtZSBvZiBldmVudHMgdG8gcmVhZCBmcm9tIHRoZSBTMyBvYmplY3QuICBGb3IgZXhhbXBsZTogYGBgIHlhbWwgczNMb2dzVG90YWxCeXRlc0xpbWl0OiAkPXBhcnNlQnl0ZXMoXCIxR0JcIikgYGBgIgogICAgICAgICAgfSwKICAgICAgICAgICJ0b3RhbEV2ZW50c0xpbWl0IiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTWF4aW11bSB0b3RhbCBldmVudHMgdG8gcmVhZCBmcm9tIGlucHV0IGJlZm9yZSBjbG9zaW5nXG5cblNldHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGV2ZW50cyBhIHRhcmdldCBwaXBlbGluZSBpbnB1dCB3aWxsIHJlYWQgaW50byB0aGUgcGlwZWxpbmUuIFRoaXMgdmFsdWUgbGltaXRzIHRoZSB2b2x1bWUgb2YgZXZlbnRzIHRvIHJlYWQgZnJvbSB0aGUgUzMgb2JqZWN0LiAoRGVmYXVsdDogMTAwMDApIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogIjEwMDAwIgogICAgICAgICAgfSwKICAgICAgICAgICJ0b3RhbER1cmF0aW9uIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTWF4aW11bSBkdXJhdGlvbiB0byBrZWVwIGlucHV0IG9wZW4gYmVmb3JlIGNsb3NpbmdcblxuU2V0cyB0aGUgbWF4aW11bSBkdXJhdGlvbiBhIHRhcmdldCBwaXBlbGluZSBpbnB1dCB3aWxsIHJlbWFpbiBvcGVuLiBXaGVuIHJlYWNoZWQsIHRoZSBpbnB1dCB3aWxsIGNsb3NlIGFuZCBubyBtb3JlIGRhdGEgd2lsbCBiZSByZWFkLiAgRm9yIGV4YW1wbGU6IGBgYCB5YW1sIHMzTG9nc1RvdGFsRHVyYXRpb246ICQ9cGFyc2VEdXJhdGlvbihcIjEwbWluXCIpIGBgYCAoRGVmYXVsdDogcGFyc2VEdXJhdGlvbihcIjVtaW5cIikpIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogInBhcnNlRHVyYXRpb24oXCI1bWluXCIpIgogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgInJlcXVpcmVkIiA6IFsKICAgICAgICAgICJuYW1lIiwKICAgICAgICAgICJidWNrZXQiLAogICAgICAgICAgImtleSIKICAgICAgICBdCiAgICAgIH0KICAgIH0KICB9LAogICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZQp9
# 'run' AWS S3 Logs input configuration
# Configure an AWS S3 Logs event input to read a single S3 object
# To learn more see https://doc.log10x.com/run/input/analyzer/s3Logs/
# Set the 10x pipeline to 'run'
tenx: run
# =============================== Dependencies ================================
include: run/modules/input/analyzer/s3Logs
# ============================== S3 Logs Options ==============================
# Multiple S3 Logs inputs can be defined below
s3Logs:
# 'name' sets a unique logical name across all pipeline inputs
- name: S3LogsInput
# --------------------------- Connection Options --------------------------
# 'awsAccessKeyID' sets the AWS access key (e.g. 'AKIAIOSFODNN7EXAMPLE')
# To learn more see: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html
awsAccessKeyID: $=TenXEnv.get("AWS_ACCESS_KEY_ID") # (EnvVar or default credential chain)
# 'awsSecretKey' sets the AWS access secret key (e.g. 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY')
# To learn more see: https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html
awsSecretKey: $=TenXEnv.get("AWS_SECRET_ACCESS_KEY") # (EnvVar or default credential chain)
# 'awsRegion' sets the region hosting the S3 bucket
# To learn more see: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html
awsRegion: $=TenXEnv.get("AWS_DEFAULT_REGION", "us-east-1")
# ---------------------------- S3 Object Options ---------------------------
# 'bucket' sets the S3 bucket name (e.g., 'my-log-bucket').
# To learn more see: https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html
bucket: "" # (❗ REQUIRED)
# 'key' sets the S3 object key to fetch (e.g., 'logs/app.log').
# To learn more see: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html
key: "" # (❗ REQUIRED)
# --------------------------- Backpressure Options -----------------------
# 'totalDuration' sets the max duration to try reading from the remote input
totalDuration: $=parseDuration("5min")
# 'totalBytesLimit' sets the max total bytes to read from the remote input
totalBytesLimit: $=parseBytes("50MB")
# 'totalEventsLimit' sets the max number of events to read the remote input
totalEventsLimit: 10000
# --------------------------- Ancillary Options ---------------------------
# 'printProgress' controls whether to print a gauge to the console
# This option helps debug and test the input
printProgress: $=!TenXEnv.get("quiet")
Options
Specify the options below to configure multiple AWS S3 Logs input:
| Name | Description | Category |
|---|---|---|
| s3LogsName | Logical name for this AWS S3 input | General |
| s3LogsEnabled | Sets whether this input is enabled | General |
| s3LogsPrintProgress | Sets whether this input prints throughput stats to the console | General |
| s3LogsAwsRegion | AWS region | Authentication |
| s3LogsAwsAccessKeyID | AWS authentication access key ID | Authentication |
| s3LogsAwsSecretKey | AWS authentication secret key | Authentication |
| s3LogsBucket | AWS S3 bucket name | Object |
| s3LogsKey | S3 object key to fetch | Object |
| s3LogsTotalBytesLimit | Maximum total bytes to read from input before closing | Backpressure |
| s3LogsTotalEventsLimit | Maximum total events to read from input before closing | Backpressure |
| s3LogsTotalDuration | Maximum duration to keep input open before closing | Backpressure |
General
s3LogsName
Logical name for this AWS S3 input.
| Type | Required | Category |
|---|---|---|
| String | ✔ | General |
Sets a logical name (e.g., 'myS3Input') for this input. The inputName field returns this value at run time to allow for identifying and operating on instances originating from this input.
s3LogsEnabled
Sets whether this input is enabled.
| Type | Default | Category |
|---|---|---|
| Boolean | false | General |
Sets whether to open the input stream. To enable this input only when an 's3LogsBucket' startup argument value is truthy, use:
To learn more see TenXEnv.get.
s3LogsPrintProgress
Sets whether this input prints throughput stats to the console.
| Type | Default | Category |
|---|---|---|
| Boolean | false | General |
Sets whether this input prints throughput stats to the console for testing an integration to a remote endpoint.
Authentication
s3LogsAwsRegion
AWS region.
| Type | Default | Category |
|---|---|---|
| String | "" | Authentication |
Sets the AWS region (e.g., 'us-east-1') hosting the target S3 bucket.
To learn more see AWS Regions.
s3LogsAwsAccessKeyID
AWS authentication access key ID.
| Type | Default | Category |
|---|---|---|
| String | "" | Authentication |
Sets the AWS access key (e.g., 'AKIAIOSFODNN7EXAMPLE') used as part of the request signing process.
If not specified, the system automatically falls back to the AWS default credential provider chain, which checks (in order):
- Environment variables (
AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY) - Java system properties
- Web identity token (for EKS)
- Shared credentials file (
~/.aws/credentials) - ECS container credentials
- EC2 instance profile credentials
To learn more see AWS access keys.
s3LogsAwsSecretKey
AWS authentication secret key.
| Type | Default | Category |
|---|---|---|
| String | "" | Authentication |
Sets the AWS access secret key (e.g. 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY') used as part of the request signing process.
If not specified, the system automatically falls back to the
AWS default credential provider chain.
This allows using credentials from ~/.aws/credentials, IAM roles, or environment variables
without explicit configuration.
To learn more see AWS security credentials.
Object
s3LogsBucket
AWS S3 bucket name.
| Type | Required | Category |
|---|---|---|
| String | ✔ | Object |
Sets the S3 bucket name (e.g., 'my-log-bucket') containing the object to read.
To learn more see S3 Bucket Naming.
s3LogsKey
S3 object key to fetch.
| Type | Required | Category |
|---|---|---|
| String | ✔ | Object |
sets the S3 object key (e.g., 'logs/2024/01/15/app.log') to fetch.
This input reads a single S3 object and transforms its line-delimited content into TenXObjects for analysis.
For example:
Backpressure
s3LogsTotalBytesLimit
Maximum total bytes to read from input before closing.
| Type | Default | Category |
|---|---|---|
| String | 50000000 | Backpressure |
sets the maximum number of bytes a target pipeline input will read into the pipeline. This value limits the volume of events to read from the S3 object.
For example:
s3LogsTotalEventsLimit
Maximum total events to read from input before closing.
| Type | Default | Category |
|---|---|---|
| String | 10000 | Backpressure |
Sets the maximum number of events a target pipeline input will read into the pipeline. This value limits the volume of events to read from the S3 object.
s3LogsTotalDuration
Maximum duration to keep input open before closing.
| Type | Default | Category |
|---|---|---|
| String | parseDuration("5min") | Backpressure |
sets the maximum duration a target pipeline input will remain open. When reached, the input will close and no more data will be read.
For example:
This module is defined in s3Logs/module.yaml.