Huawei Cloud LogExporter

Huawei Cloud LogExporter

Certified
Enterprise Edition

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.

yaml
type: io.kestra.plugin.ee.huawei.lts.LogExporter

Ship Kestra execution logs to Huawei Cloud LTS daily

yaml
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
Validation RegExp^[a-zA-Z0-9][a-zA-Z0-9_-]*
Min length1

LTS log group ID.

The UUID of the LTS log group to ingest into. Found in the LTS console under Log Groups.

LTS log stream ID.

The UUID of the LTS log stream within logGroupId. Found in the LTS console under Log Streams.

Huawei Cloud Project ID.

Identifies the region-scoped project. Required to build the LTS ingest URL.

Huawei Cloud region.

Region identifier such as eu-west-101, ap-southeast-1, or cn-north-4.

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') }}.

Default1000

Number of log records per LTS ingest request.

Defaults to 1000. Reduce if individual log records are very large.

Huawei Cloud Account Domain ID.

Required only when using temporaryCredentials with domain-scoped token scope.

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.

Secret Key (SK) used to authenticate with Huawei Cloud.

Huawei Cloud secret key paired with accessKeyId. Sensitive — always provide via {{ secret('NAME') }}.

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.

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.

Definitions
authMethodstring
DefaultPASSWORD
Possible Values
PASSWORDTOKEN

Authentication method.

Controls which credentials are used to obtain the session token before exchanging for temporary STS credentials.

  • PASSWORD (default): provide username, password, and domainName.
  • TOKEN: provide an existing iamToken (X-Auth-Token).
domainNamestring

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.

durationSecondsintegerstring
Default900

Lifetime 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.

endpointSuffixstring
Defaultmyhuaweicloud.com

Huawei 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).

iamTokenstring

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') }}.

passwordstring

IAM password (PASSWORD method only).

Password for the IAM user identified by username. Required when authMethod is PASSWORD. Sensitive — always provide via {{ secret('NAME') }}.

projectNamestring

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.

scopestring
DefaultPROJECT
Possible Values
PROJECTDOMAIN

Token scope (PASSWORD method only).

Scope of the session token obtained during password authentication.

  • PROJECT (default): token is scoped to the project matching projectName (or the task's region when projectName is omitted). Use for most downstream tasks.
  • DOMAIN: token is scoped to the domain.
usernamestring

IAM username (PASSWORD method only).

Huawei Cloud IAM username. Required when authMethod is PASSWORD.

Total number of log records sent to LTS.

Number of POST requests sent to LTS.

Total wall-clock duration of all LTS batch requests.