CloudQueryCLI
Run CloudQuery CLI commands
CloudQueryCLI
Run CloudQuery CLI commands
yaml
type: io.kestra.plugin.cloudquery.CloudQueryCLIExamples
yaml
id: cloudquery_sync_cli
namespace: company.team
tasks:
- id: hn_to_duckdb
type: io.kestra.plugin.cloudquery.CloudQueryCLI
env:
CLOUDQUERY_API_KEY: "{{ secret('CLOUDQUERY_API_KEY') }}"
inputFiles:
config.yml: |
kind: source
spec:
name: hackernews
path: cloudquery/hackernews
version: v3.0.13
tables: ["*"]
backend_options:
table_name: cq_cursor
connection: "@@plugins.duckdb.connection"
destinations:
- "duckdb"
spec:
item_concurrency: 100
start_time: "{{ now() | dateAdd(-1, 'DAYS') }}"
---
kind: destination
spec:
name: duckdb
path: cloudquery/duckdb
version: v4.2.10
write_mode: overwrite-delete-stale
spec:
connection_string: hn.db
commands:
- cloudquery sync config.yml --log-consoleProperties
commands *Requiredarray
SubTypestring
containerImage string
Default
ghcr.io/cloudquery/cloudquery:latestenv object
SubTypestring
inputFiles objectstring
namespaceFiles Non-dynamic
Definitions
io.kestra.core.models.tasks.NamespaceFiles
enabledbooleanstring
Default
trueexcludearray
SubTypestring
folderPerNamespacebooleanstring
Default
falseifExistsstring
Default
OVERWRITEPossible Values
OVERWRITEFAILWARNIGNOREincludearray
SubTypestring
namespacesarray
SubTypestring
Default
["{{flow.namespace}}"]outputFiles array
SubTypestring
taskRunner Non-dynamic
Definitions
Run a task in a Docker container.
Example
yaml
id: simple_shell_example
namespace: company.team
tasks:
- id: shell
type: io.kestra.plugin.scripts.shell.Commands
taskRunner:
type: io.kestra.plugin.scripts.runner.docker.Docker
commands:
- echo "Hello World"yaml
id: shell_example_with_files
namespace: company.team
inputs:
- id: file
type: FILE
tasks:
- id: shell
type: io.kestra.plugin.scripts.shell.Commands
inputFiles:
data.txt: "{{ inputs.file }}"
outputFiles:
- "*.txt"
containerImage: centos
taskRunner:
type: io.kestra.plugin.scripts.runner.docker.Docker
commands:
- cp {{ workingDir }}/data.txt {{ workingDir }}/out.txtyaml
id: allocate_memory_to_python_script
namespace: company.team
tasks:
- id: script
type: io.kestra.plugin.scripts.python.Script
taskRunner:
type: io.kestra.plugin.scripts.runner.docker.Docker
pullPolicy: IF_NOT_PRESENT
cpu:
cpus: 1
memory:
memory: "512Mb"
containerImage: ghcr.io/kestra-io/kestrapy:latest
script: |
from kestra import Kestra
data = dict(message="Hello from Kestra!")
Kestra.outputs(data)type*Requiredobject
configstringobject
cpu
io.kestra.plugin.scripts.runner.docker.Cpu
cpusnumberstring
credentials
Credentials for a private container registry.
authstring
identityTokenstring
passwordstring
registrystring
registryTokenstring
usernamestring
deletebooleanstring
Default
truedeviceRequestsarray
A request for devices to be sent to device drivers.
capabilitiesarray
SubTypearray
countintegerstring
deviceIdsarray
SubTypestring
driverstring
optionsobject
SubTypestring
entryPointarray
SubTypestring
Default
[
""
]extraHostsarray
SubTypestring
fileHandlingStrategystring
Default
VOLUMEPossible Values
MOUNTVOLUMEhoststring
killGracePeriodstring
Default
PT0SFormat
durationmemory
io.kestra.plugin.scripts.runner.docker.Memory
kernelMemorystring
memorystring
memoryReservationstring
memorySwapstring
memorySwappinessstring
oomKillDisablebooleanstring
networkModestring
portBindingsarray
SubTypestring
privilegedbooleanstring
pullPolicyobject
resumebooleanstring
Default
trueshmSizestring
userstring
versionstring
volumesarray
SubTypestring
waitbooleanstring
Default
trueRun tasks as local subprocesses on the worker.
Example
yaml
id: new_shell
namespace: company.team
tasks:
- id: shell
type: io.kestra.plugin.scripts.shell.Commands
taskRunner:
type: io.kestra.plugin.core.runner.Process
commands:
- echo "Hello World"yaml
id: before_commands_example
namespace: company.team
inputs:
- id: url
type: URI
defaults: https://jsonplaceholder.typicode.com/todos/1
tasks:
- id: transform
type: io.kestra.plugin.scripts.python.Script
taskRunner:
type: io.kestra.plugin.core.runner.Process
beforeCommands:
- pip install kestra requests --break-system-packages
script: |
import requests
from kestra import Kestra
url = "{{ inputs.url }}"
response = requests.get(url)
print('Status Code:', response.status_code)
Kestra.outputs(response.json())
yaml
id: new_shell_with_file
namespace: company.team
inputs:
- id: file
type: FILE
tasks:
- id: shell
type: io.kestra.plugin.scripts.shell.Commands
inputFiles:
data.txt: "{{inputs.file}}"
outputFiles:
- out.txt
taskRunner:
type: io.kestra.plugin.core.runner.Process
commands:
- cp {{workingDir}}/data.txt {{workingDir}}/out.txttype*Requiredobject
versionstring
Task runner that executes a task inside a job in Azure Batch.
Example
yaml
id: new_shell
namespace: company.team
tasks:
- id: shell
type: io.kestra.plugin.scripts.shell.Commands
taskRunner:
type: io.kestra.plugin.ee.azure.runner.Batch
account: "{{secrets.account}}"
accessKey: "{{secrets.accessKey}}"
endpoint: "{{secrets.endpoint}}"
poolId: "{{vars.poolId}}"
commands:
- echo "Hello World"yaml
id: new_shell_with_file
namespace: company.team
inputs:
- id: file
type: FILE
tasks:
- id: shell
type: io.kestra.plugin.scripts.shell.Commands
inputFiles:
data.txt: "{{inputs.file}}"
outputFiles:
- out.txt
containerImage: centos
taskRunner:
type: io.kestra.plugin.azure.ee.runner.Batch
account: "{{secrets.account}}"
accessKey: "{{secrets.accessKey}}"
endpoint: "{{secrets.endpoint}}"
poolId: "{{vars.poolId}}"
blobStorage:
connectionString: "{{secrets.connectionString}}"
containerName: "{{vars.containerName}}"
commands:
- cp {{workingDir}}/data.txt {{workingDir}}/out.txtyaml
id: azure_batch_runner
namespace: company.team
variables:
pool_id: poolId
container_name: containerName
tasks:
- id: scrape_environment_info
type: io.kestra.plugin.scripts.python.Commands
containerImage: ghcr.io/kestra-io/pydata:latest
taskRunner:
type: io.kestra.plugin.ee.azure.runner.Batch
account: "{{ secret('AZURE_ACCOUNT') }}"
accessKey: "{{ secret('AZURE_ACCESS_KEY') }}"
endpoint: "{{ secret('AZURE_ENDPOINT') }}"
poolId: "{{ vars.pool_id }}"
blobStorage:
containerName: "{{ vars.container_name }}"
connectionString: "{{ secret('AZURE_CONNECTION_STRING') }}"
commands:
- python {{ workingDir }}/main.py
namespaceFiles:
enabled: true
outputFiles:
- environment_info.json
inputFiles:
main.py: |
import platform
import socket
import sys
import json
from kestra import Kestra
print("Hello from Azure Batch and kestra!")
def print_environment_info():
print(f"Host's network name: {platform.node()}")
print(f"Python version: {platform.python_version()}")
print(f"Platform information (instance type): {platform.platform()}")
print(f"OS/Arch: {sys.platform}/{platform.machine()}")
env_info = {
"host": platform.node(),
"platform": platform.platform(),
"OS": sys.platform,
"python_version": platform.python_version(),
}
Kestra.outputs(env_info)
filename = 'environment_info.json'
with open(filename, 'w') as json_file:
json.dump(env_info, json_file, indent=4)
if __name__ == '__main__':
print_environment_info()
account*Requiredstring
endpoint*Requiredstring
poolId*Requiredstring
type*Requiredobject
Possible Values
io.kestra.plugin.ee.azure.runner.Batchio.kestra.plugin.azure.runner.BatchaccessKeystring
blobStorage
io.kestra.plugin.ee.azure.storage.blob.models.BlobStorageForBatch
containerName*Requiredstring
connectionStringstring
endpointstring
sharedKeyAccountAccessKeystring
sharedKeyAccountNamestring
completionCheckIntervalstring
Default
PT5Sdeletebooleanstring
Default
trueregistry
io.kestra.plugin.ee.azure.batch.models.ContainerRegistry
identityReference
io.kestra.plugin.ee.azure.batch.models.ComputeNodeIdentityReference
resourceIdstring
passwordstring
registryServerstring
userNamestring
resumebooleanstring
Default
truestreamLogsbooleanstring
Default
falsesyncWorkingDirectorybooleanstring
Default
falseversionstring
waitUntilCompletionstring
Default
PT1HTask runner that executes a task inside a job in AWS Batch.
Example
yaml
id: run_container
namespace: company.team
variables:
region: eu-west-2
computeEnvironmentArn: "arn:aws:batch:eu-central-1:123456789012:compute-environment/kestraFargateEnvironment"
tasks:
- id: shell
type: io.kestra.plugin.scripts.shell.Commands
taskRunner:
type: io.kestra.plugin.ee.aws.runner.Batch
accessKeyId: "{{ secret('AWS_ACCESS_KEY_ID') }}"
secretKeyId: "{{ secret('AWS_SECRET_KEY_ID') }}"
region: "{{ vars.region }}"
computeEnvironmentArn: "{{ vars.computeEnvironmentArn }}"
commands:
- echo "Hello World"yaml
id: container_with_input_files
namespace: company.team
inputs:
- id: file
type: FILE
variables:
region: eu-west-2
computeEnvironmentArn: "arn:aws:batch:eu-central-1:123456789012:compute-environment/kestraFargateEnvironment"
tasks:
- id: shell
type: io.kestra.plugin.scripts.shell.Commands
inputFiles:
data.txt: "{{ inputs.file }}"
outputFiles:
- out.txt
containerImage: centos
taskRunner:
type: io.kestra.plugin.ee.aws.runner.Batch
accessKeyId: "{{ secret('AWS_ACCESS_KEY_ID') }}"
secretKeyId: "{{ secret('AWS_SECRET_KEY_ID') }}"
region: "{{ vars.region }}"
bucket: "{{ vars.bucket }}"
computeEnvironmentArn: "{{ vars.computeEnvironmentArn }}"
commands:
- cp {{ workingDir }}/data.txt {{ workingDir }}/out.txtyaml
id: aws_batch_runner
namespace: company.team
variables:
compute_environment_arn: arn:aws:batch:us-east-1:123456789:compute-environment/kestra
job_queue_arn: arn:aws:batch:us-east-1:123456789:job-queue/kestra
execution_role_arn: arn:aws:iam::123456789:role/ecsTaskExecutionRole
task_role_arn: arn:aws:iam::123456789:role/ecsTaskRole
tasks:
- id: send_data
type: io.kestra.plugin.scripts.python.Script
containerImage: ghcr.io/kestra-io/pydata:latest
taskRunner:
type: io.kestra.plugin.ee.aws.runner.Batch
region: us-east-1
accessKeyId: "{{ secret('AWS_ACCESS_KEY_ID') }}"
secretKeyId: "{{ secret('AWS_SECRET_KEY_ID') }}"
computeEnvironmentArn: "{{ vars.compute_environment_arn }}"
jobQueueArn: "{{ vars.job_queue_arn}}"
executionRoleArn: "{{ vars.execution_role_arn }}"
taskRoleArn: "{{ vars.task_role_arn }}"
bucket: kestra-us
script: |
import platform
import socket
import sys
print("Hello from AWS Batch and kestra!")
def print_environment_info():
print(f"Host's network name: {platform.node()}")
print(f"Python version: {platform.python_version()}")
print(f"Platform information (instance type): {platform.platform()}")
print(f"OS/Arch: {sys.platform}/{platform.machine()}")
try:
hostname = socket.gethostname()
ip_address = socket.gethostbyname(hostname)
print(f"Host IP Address: {ip_address}")
except socket.error as e:
print("Unable to obtain IP address.")
if __name__ == '__main__':
print_environment_info()
computeEnvironmentArn*Requiredstring
region*Requiredstring
type*Requiredobject
accessKeyIdstring
bucketstring
completionCheckIntervalstring
Default
PT5Sdeletebooleanstring
Default
trueendpointOverridestring
executionRoleArnstring
jobQueueArnstring
resources
Default
{
"request": {
"memory": "2048",
"cpu": "1"
}
}io.kestra.plugin.ee.aws.runner.Batch-Resources
request*Required
io.kestra.plugin.ee.aws.runner.Batch-Resource
cpu*Requiredstring
memory*Requiredstring
resumebooleanstring
Default
truesecretKeyIdstring
sessionTokenstring
sidecarResources
io.kestra.plugin.ee.aws.runner.Batch-Resources
request*Required
io.kestra.plugin.ee.aws.runner.Batch-Resource
cpu*Requiredstring
memory*Requiredstring
stsEndpointOverridestring
stsRoleArnstring
stsRoleExternalIdstring
stsRoleSessionDurationstring
Default
PT15MstsRoleSessionNamestring
syncWorkingDirectorybooleanstring
Default
falsetaskRoleArnstring
versionstring
waitUntilCompletionstring
Default
PT1HRun tasks on Google Cloud Batch
Example
yaml
id: new_shell
namespace: company.team
variables:
projectId: "myproject"
region: "europe-west2"
tasks:
- id: shell
type: io.kestra.plugin.scripts.shell.Commands
taskRunner:
type: io.kestra.plugin.ee.gcp.runner.Batch
projectId: "{{vars.projectId}}"
region: "{{ vars.region} }"
serviceAccount: "{{ secret('GOOGLE_SA') }}"
commands:
- echo "Hello World"yaml
id: new_shell_with_file
namespace: company.team
inputs:
- id: file
type: FILE
variables:
projectId: "myProject"
region: "europe-west2"
bucket: "myBucket"
tasks:
- id: shell
type: io.kestra.plugin.scripts.shell.Commands
inputFiles:
data.txt: "{{ inputs.file }}"
outputFiles:
- out.txt
containerImage: centos
taskRunner:
type: io.kestra.plugin.ee.gcp.runner.Batch
projectId: "{{ vars.projectId }}"
region: "{{ vars.region }}"
bucket: "{{ vars.bucket }}"
serviceAccount: "{{ secret('GOOGLE_SA') }}"
commands:
- cp {{workingDir}}/data.txt {{workingDir}}/out.txtyaml
id: gcp_batch_runner
namespace: company.team
tasks:
- id: scrape_environment_info
type: io.kestra.plugin.scripts.python.Commands
containerImage: ghcr.io/kestra-io/pydata:latest
taskRunner:
type: io.kestra.plugin.ee.gcp.runner.Batch
projectId: "{{ secret('GCP_PROJECT_ID') }}"
region: "europe-west9"
bucket: "{{ secret('GCS_BUCKET')}}"
serviceAccount: "{{ secret('GOOGLE_SA') }}"
commands:
- python {{ workingDir }}/main.py
namespaceFiles:
enabled: true
outputFiles:
- environment_info.json
inputFiles:
main.py: |
import platform
import socket
import sys
import json
from kestra import Kestra
print("Hello from GCP Batch and kestra!")
def print_environment_info():
print(f"Host's network name: {platform.node()}")
print(f"Python version: {platform.python_version()}")
print(f"Platform information (instance type): {platform.platform()}")
print(f"OS/Arch: {sys.platform}/{platform.machine()}")
env_info = {
"host": platform.node(),
"platform": platform.platform(),
"OS": sys.platform,
"python_version": platform.python_version(),
}
Kestra.outputs(env_info)
filename = '{{ workingDir }}/environment_info.json'
with open(filename, 'w') as json_file:
json.dump(env_info, json_file, indent=4)
if __name__ == '__main__':
print_environment_info()
region*Requiredstring
type*Requiredobject
Possible Values
io.kestra.plugin.ee.gcp.runner.Batchio.kestra.plugin.gcp.runner.Batchbucketstring
completionCheckIntervalstring
Default
PT5ScomputeResource
io.kestra.plugin.ee.gcp.runner.Batch-ComputeResource
bootDiskstring
cpustring
memorystring
deletebooleanstring
Default
trueentryPointarray
SubTypestring
impersonatedServiceAccountstring
lifecyclePoliciesarray
io.kestra.plugin.ee.gcp.runner.Batch-LifecyclePolicy
actionstring
Possible Values
ACTION_UNSPECIFIEDRETRY_TASKFAIL_TASKUNRECOGNIZEDactionCondition
io.kestra.plugin.ee.gcp.runner.Batch-LifecyclePolicyAction
exitCodesarray
SubTypeinteger
machineTypestring
Default
e2-mediummaxCreateJobRetryCountintegerstring
Default
2maxRetryCountinteger
Minimum
>= 0Maximum
<= 10networkInterfacesarray
io.kestra.plugin.ee.gcp.runner.Batch-NetworkInterface
network*Requiredstring
subnetworkstring
projectIdstring
reservationstring
resumebooleanstring
Default
truescopesarray
SubTypestring
Default
["https://www.googleapis.com/auth/cloud-platform"]serviceAccountstring
syncWorkingDirectorybooleanstring
Default
falseversionstring
waitForLogIntervalstring
Default
PT5SwaitUntilCompletionstring
Default
PT1HRun tasks on Google Cloud Run
Example
yaml
id: new-shell
namespace: company.team
variables:
projectId: "projectId"
region: "europe-west2"
tasks:
- id: shell
type: io.kestra.plugin.scripts.shell.Commands
taskRunner:
type: io.kestra.plugin.ee.gcp.runner.CloudRun
projectId: "{{ vars.projectId }}"
region: "{{ vars.region }}"
serviceAccount: "{{ secret('GOOGLE_SA') }}"
commands:
- echo "Hello World"yaml
id: new-shell-with-file
namespace: company.team
inputs:
- id: file
type: FILE
variables:
projectId: "projectId"
bucket: "bucket"
region: "europe-west2"
tasks:
- id: shell
type: io.kestra.plugin.scripts.shell.Commands
inputFiles:
data.txt: "{{ inputs.file }}"
outputFiles:
- out.txt
containerImage: centos
taskRunner:
type: io.kestra.plugin.ee.gcp.runner.CloudRun
projectId: "{{ vars.projectId }}"
region: "{{ vars.region }}"
bucket: "{{ vars.bucket }}"
serviceAccount: "{{ secret('GOOGLE_SA') }}"
commands:
- cp {{ workingDir }}/data.txt {{ workingDir }}/out.txtyaml
id: shell-direct-vpc-egress
namespace: company.team
variables:
projectId: "projectId"
region: "europe-west1"
network: "projects/projectId/global/networks/my-vpc"
subnetwork: "projects/projectId/regions/europe-west1/subnetworks/my-subnet"
tasks:
- id: shell
type: io.kestra.plugin.scripts.shell.Commands
taskRunner:
type: io.kestra.plugin.ee.gcp.runner.CloudRun
projectId: "{{ vars.projectId }}"
region: "{{ vars.region }}"
network: "{{ vars.network }}"
subnetwork: "{{ vars.subnetwork }}"
vpcEgress: ALL_TRAFFIC
serviceAccount: "{{ secret('GOOGLE_SA') }}"
commands:
- echo "Hello from Direct VPC Egress"region*Requiredstring
type*Requiredobject
Possible Values
io.kestra.plugin.ee.gcp.runner.CloudRunio.kestra.plugin.gcp.runner.CloudRunbucketstring
completionCheckIntervalstring
Default
PT5Sdeletebooleanstring
Default
trueimpersonatedServiceAccountstring
maxRetriesintegerstring
Default
3networkstring
projectIdstring
resources
io.kestra.plugin.ee.gcp.runner.CloudRun-ContainerResources
cpustring
memorystring
resumebooleanstring
Default
trueruntimeServiceAccountstring
scopesarray
SubTypestring
Default
["https://www.googleapis.com/auth/cloud-platform"]serviceAccountstring
subnetworkstring
syncWorkingDirectorybooleanstring
versionstring
vpcAccessConnectorstring
vpcEgressstring
Possible Values
VPC_EGRESS_UNSPECIFIEDALL_TRAFFICPRIVATE_RANGES_ONLYUNRECOGNIZEDwaitForLogIntervalstring
Default
PT5SwaitUntilCompletionstring
Default
PT1HRun tasks inside Kubernetes pods
Example
yaml
id: new-shell
namespace: company.team
tasks:
- id: shell
type: io.kestra.plugin.scripts.shell.Commands
taskRunner:
type: io.kestra.plugin.ee.kubernetes.runner.Kubernetes
commands:
- echo "Hello World"
yaml
id: new-shell-with-file
namespace: company.team
inputs:
- id: file
type: FILE
tasks:
- id: shell
type: io.kestra.plugin.scripts.shell.Commands
inputFiles:
data.txt: "{{ inputs.file }}"
outputFiles:
- out.txt
containerImage: centos
taskRunner:
type: io.kestra.plugin.ee.kubernetes.runner.Kubernetes
commands:
- cp {{ workingDir }}/data.txt {{ workingDir }}/out.txt
type*Requiredobject
Possible Values
io.kestra.plugin.ee.kubernetes.runner.Kubernetesio.kestra.plugin.kubernetes.runner.Kubernetesconfig
io.kestra.plugin.ee.kubernetes.models.Connection
apiVersionstring
Default
v1caCertDatastring
caCertFilestring
clientCertDatastring
clientCertFilestring
clientKeyAlgostring
Default
RSAclientKeyDatastring
clientKeyFilestring
clientKeyPassphrasestring
disableHostnameVerificationbooleanstring
keyStoreFilestring
keyStorePassphrasestring
masterUrlstring
Default
https://kubernetes.default.svcnamespacestring
oauthTokenstring
oauthTokenProvider
OAuth token provider
outputstring
task
passwordstring
trustCertsbooleanstring
trustStoreFilestring
trustStorePassphrasestring
usernamestring
containerDefaultSpecobject
containerSpecobject
deletebooleanstring
Default
truefileSideCarSpecobject
fileSidecar
Default
{
"image": "busybox"
}io.kestra.plugin.ee.kubernetes.runner.SideCar
defaultSpecobject
imagestring
Default
busyboxresourcesobject
killed
Default
falsejava.util.concurrent.atomic.AtomicBoolean
labelsobject
namespacestring
Default
defaultnodeSelectorobject
podSpecobject
pullPolicystring
Default
ALWAYSPossible Values
IF_NOT_PRESENTALWAYSNEVERresources
io.kestra.plugin.ee.kubernetes.runner.Kubernetes-Resources
limit
io.kestra.plugin.ee.kubernetes.runner.Kubernetes-Resource
cpustring
memorystring
request
io.kestra.plugin.ee.kubernetes.runner.Kubernetes-Resource
cpustring
memorystring
resumebooleanstring
Default
trueserviceAccountNamestring
syncWorkingDirectorybooleanstring
Default
falseversionstring
waitForLogsstring
Default
PT30SwaitUntilCompletionstring
Default
PT1HwaitUntilRunningstring
Default
PT10MOutputs
exitCode integer
Default
0outputFiles object
SubTypestring
taskRunner
Definitions