
Huawei Cloud LogExporter
CertifiedEnterprise EditionExport Kestra execution logs to Huawei Cloud Log Tank Service (LTS).
Huawei Cloud LogExporter
Export Kestra execution logs to Huawei Cloud Log Tank Service (LTS).
Sends execution logs in batches to an LTS log stream. Each log record is serialized as JSON
and posted to the LTS log-ingestion endpoint
POST /v2/{project_id}/lts/groups/{logGroupId}/streams/{logStreamId}/tenant/contents/high-accuracy
on the regional lts-access host (port 8102). The high-accuracy variant preserves each
record's original nanosecond timestamp instead of stamping the whole batch with one time.
Note: the lts-access ingestion endpoint (port 8102) is reachable from hosts inside the
target Huawei Cloud region (or via a jump server); it is not exposed on the public
management gateway (port 443).
Authentication supports static AK/SK, pre-obtained security tokens, and inline IAM STS
credential exchange via temporaryCredentials. The credential exchange runs once per
sendLogs invocation; for very long log streams that outlive the STS durationSeconds,
use long-lived AK/SK credentials or renew externally.
type: io.kestra.plugin.ee.huawei.lts.LogExporterExamples
Ship Kestra execution logs to Huawei Cloud LTS daily
id: lts_log_shipper
namespace: company.team
tasks:
- id: ship_logs
type: io.kestra.plugin.ee.core.log.LogShipper
logLevelFilter: INFO
batchSize: 1000
lookbackPeriod: P1D
logExporters:
- id: huawei_lts
type: io.kestra.plugin.ee.huawei.lts.LogExporter
region: eu-west-101
projectId: "{{ vars.project_id }}"
accessKeyId: "{{ secret('HUAWEI_ACCESS_KEY_ID') }}"
secretAccessKey: "{{ secret('HUAWEI_SECRET_ACCESS_KEY') }}"
logGroupId: "{{ vars.log_group_id }}"
logStreamId: "{{ vars.log_stream_id }}"
triggers:
- id: daily
type: io.kestra.plugin.core.trigger.Schedule
cron: "@daily"
Properties
id *RequiredNon-dynamicstring
^[a-zA-Z0-9][a-zA-Z0-9_-]*1logGroupId *Requiredstring
LTS log group ID.
The UUID of the LTS log group to ingest into. Found in the LTS console under Log Groups.
logStreamId *Requiredstring
LTS log stream ID.
The UUID of the LTS log stream within logGroupId. Found in the LTS console under Log Streams.
projectId *Requiredstring
Huawei Cloud Project ID.
Identifies the region-scoped project. Required to build the LTS ingest URL.
region *Requiredstring
Huawei Cloud region.
Region identifier such as eu-west-101, ap-southeast-1, or cn-north-4.
accessKeyId string
Access Key (AK) used to authenticate with Huawei Cloud.
Huawei Cloud access key used together with secretAccessKey to sign API requests.
Required for AK/SK-based authentication; not required when using temporaryCredentials.
Sensitive — always provide via {{ secret('NAME') }}.
chunk integerstring
1000Number of log records per LTS ingest request.
Defaults to 1000. Reduce if individual log records are very large.
domainId string
Huawei Cloud Account Domain ID.
Required only when using temporaryCredentials with domain-scoped token scope.
endpointOverride string
Override the LTS service endpoint URL.
Replaces the region-derived endpoint (e.g. https://lts-access.eu-west-101.myhuaweicloud.eu).
Intended for testing against a local WireMock server; do not set in production.
secretAccessKey string
Secret Key (SK) used to authenticate with Huawei Cloud.
Huawei Cloud secret key paired with accessKeyId.
Sensitive — always provide via {{ secret('NAME') }}.
securityToken string
Pre-obtained Huawei Cloud security token.
When set, requests are authenticated with this token in the X-Auth-Token header
instead of AK/SK signing. Sensitive.
temporaryCredentials string
Inline IAM credential exchange.
When set, the connection layer calls the Huawei IAM STS API once per task execution and
uses the returned temporary AK/SK + security token. The exchange runs once at invocation
start; credentials will expire mid-run for streams that outlive durationSeconds.
io.kestra.plugin.huawei.TemporaryCredentialsConfig
PASSWORDPASSWORDTOKENAuthentication method.
Controls which credentials are used to obtain the session token before exchanging for temporary STS credentials.
PASSWORD(default): provideusername,password, anddomainName.TOKEN: provide an existingiamToken(X-Auth-Token).
Account domain name (PASSWORD method only).
The Huawei Cloud account name (domain name) that owns the IAM user.
Required when authMethod is PASSWORD. Visible in the Huawei Cloud console under
My Credentials → Domain Name.
900Lifetime of the temporary credentials in seconds.
How long the returned temporary AK/SK/security-token should remain valid. Huawei Cloud accepts values between 900 (15 minutes) and 86400 (24 hours). Defaults to 900 seconds.
myhuaweicloud.comHuawei Cloud IAM endpoint suffix.
Domain suffix used to build the IAM endpoint URL when no explicit endpoint override is set.
Defaults to myhuaweicloud.com. Set to myhuaweicloud.eu for the European sovereign cloud
(region eu-west-101 / EU-Dublin).
IAM token to exchange (TOKEN method only).
An existing Huawei Cloud X-Auth-Token to exchange for temporary STS credentials.
Required when authMethod is TOKEN. Sensitive — always provide via {{ secret('NAME') }}.
IAM password (PASSWORD method only).
Password for the IAM user identified by username.
Required when authMethod is PASSWORD.
Sensitive — always provide via {{ secret('NAME') }}.
Project name for project-scoped tokens (PASSWORD method only).
Overrides the project name used for scope=PROJECT token requests.
Defaults to the task's region value when omitted, which is correct for most regions.
PROJECTPROJECTDOMAINToken scope (PASSWORD method only).
Scope of the session token obtained during password authentication.
PROJECT(default): token is scoped to the project matchingprojectName(or the task'sregionwhenprojectNameis omitted). Use for most downstream tasks.DOMAIN: token is scoped to the domain.
IAM username (PASSWORD method only).
Huawei Cloud IAM username. Required when authMethod is PASSWORD.
Metrics
logs counter
Total number of log records sent to LTS.
requests.count counter
Number of POST requests sent to LTS.
requests.duration timer
Total wall-clock duration of all LTS batch requests.