Getting Started
s3api, s3token, and keystoneauth; include bulk and slo for multipart uploads. A deployment with only the native Swift API cannot accept this destination.
Create an existing container/bucket and obtain Keystone EC2 credentials using the Horizon API Access panel or openstack ec2 credentials create. Use the EC2 access and secret keys in the destination’s secret fields. A raw Swift token, Keystone password or application credential is not an S3 signing credential. Each destination has its own credential environment variables and S3 client.
Set S3_ENDPOINT to the deployment’s S3 base URL, not /v1/AUTH_<project>. S3_REGION must match Swift’s configured s3api location (commonly us-east-1). Path style is enabled by default; virtual-host addressing requires bucket DNS and matching TLS certificates. Prefer HTTPS. For a private CA, set S3_CA_PEM; certificate verification stays enabled. An explicit http:// URL is suitable for local testing.
Data and delivery behavior
The upstream S3 exporter writes batches using unique object keys and retains OTLP resources, scopes, attributes and signal data in otlp_json or otlp_proto. All OpenTelemetry metric types are serialized; no conversion to Swift-native metrics occurs. Objects may be uncompressed, gzip or zstd compressed. Optional AWS SDK checksums are disabled for Swift compatibility; mandatory checksums remain enabled.
The SDK retries transient S3 failures (three attempts by default), and the collector uses its sending queue and retry helper. Authentication errors and missing buckets prevent archival. S3 has no OTLP partial-success response: an upload either succeeds or fails, and multipart completion must succeed before its object is readable. Retries can create duplicate archive objects; this is not an exactly-once delivery guarantee. Check both upload and multipart behavior on your deployed middleware version and verify object download/decoding before relying on the archive.
Configuring Destination Fields
Supported Signals:
Supported Signals:
✅ Traces
✅ Metrics
✅ Logs
❌ Profiles
- S3_ENDPOINT
string: S3 Gateway Endpoint. S3 API base URL. Requires deployed s3api middleware; do not use the native Swift /v1/AUTH endpoint.- This field is required
- Example:
https://swift.example.com
- S3_BUCKET
string: Bucket Name. Existing Swift container accessible through the S3 API.- This field is required
- S3_REGION
string: Signing Region. Must match the location configured in Swift s3api.- This field is required and defaults to
us-east-1
- This field is required and defaults to
- S3_ACCESS_KEY_ID
string: Keystone EC2 Access Key. Keystone EC2 credential access key, not a Swift token.- This field is required
- S3_SECRET_ACCESS_KEY
string: Keystone EC2 Secret Key.- This field is required
- S3_FORCE_PATH_STYLE
string: Use Path Style Addressing. Use path style unless the deployment supports bucket hostnames.- This field is optional and defaults to
true
- This field is optional and defaults to
- S3_CA_PEM
string: Trusted CA Certificate. PEM CA certificate for an HTTPS endpoint signed by a private CA. TLS verification remains enabled.- This field is optional
- S3_PARTITION_FORMAT
string: Partition Format.- This field is optional
- Example:
%Y/%m/%d/%H/%M
- S3_MARSHALER
string: Data Format.- This field is required and defaults to
otlp_json
- This field is required and defaults to
- S3_COMPRESSION
string: Object Compression.- This field is optional and defaults to
none
- This field is optional and defaults to
Adding Destination to Odigos
There are two primary methods for configuring destinations in Odigos:Using the UI
1
Use the Odigos CLI to access the UI
2
Click on
Add Destination, select OpenStack Swift S3 Gateway and follow the on-screen instructionsUsing Kubernetes manifests
1
Save the YAML below to a file (e.g.
openstackswift.yaml)2
Apply the YAML using
kubectl