
commands
commands
yaml
type: "io.kestra.plugin.scripts.python.commands"Examples
yaml
id: python_venv
namespace: company.team
inputs:
- id: nr
type: INT
defaults: 21
tasks:
- id: python
type: io.kestra.plugin.scripts.python.Commands
namespaceFiles:
enabled: true
folderPerNamespace: true
namespaces:
- company
- company.team
- company.team.project # Explicitly name all namespaces to include; by default only the flow namespace is loaded.
include:
- etl_script.py
taskRunner:
type: io.kestra.plugin.core.runner.Process
beforeCommands:
- uv venv --python 3.13
- uv pip install requests
commands:
- python etl_script.py --num {{inputs.nr}}
yaml
id: python_commands_example
namespace: company.team
tasks:
- id: wdir
type: io.kestra.plugin.core.flow.WorkingDirectory
tasks:
- id: clone_repository
type: io.kestra.plugin.git.Clone
url: https://github.com/kestra-io/examples
branch: main
- id: git_python_scripts
type: io.kestra.plugin.scripts.python.Commands
containerImage: ghcr.io/kestra-io/pydata:latest
beforeCommands:
- pip install faker > /dev/null
commands:
- python examples/scripts/etl_script.py
- python examples/scripts/generate_orders.py
outputFiles:
- orders.csv
- id: load_csv_to_s3
type: io.kestra.plugin.aws.s3.Upload
accessKeyId: "{{ secret('AWS_ACCESS_KEY_ID') }}"
secretKeyId: "{{ secret('AWS_SECRET_KEY_ID') }}"
region: eu-central-1
bucket: kestraio
key: stage/orders.csv
from: "{{ outputs.gitPythonScripts.outputFiles['orders.csv'] }}"
yaml
id: gpu_task
namespace: company.team
tasks:
- id: python
type: io.kestra.plugin.scripts.python.Commands
taskRunner:
type: io.kestra.plugin.core.runner.Process
commands:
- python ml_on_gpu.py
workerGroup:
key: gpu
yaml
id: python_input_as_env_variable
namespace: company.team
inputs:
- id: uri
type: URI
defaults: https://www.google.com/
tasks:
- id: code
type: io.kestra.plugin.scripts.python.Commands
taskRunner:
type: io.kestra.plugin.scripts.runner.docker.Docker
containerImage: ghcr.io/kestra-io/pydata:latest
inputFiles:
main.py: |
import requests
import os
# Perform the GET request
response = requests.get(os.environ['URI'])
# Check if the request was successful
if response.status_code == 200:
# Print the content of the page
print(response.text)
else:
print(f"Failed to retrieve the webpage. Status code: {response.status_code}")
env:
URI: "{{ inputs.uri }}"
commands:
- python main.py
yaml
id: s3_trigger_commands
namespace: company.team
description: process CSV file from S3 trigger
tasks:
- id: wdir
type: io.kestra.plugin.core.flow.WorkingDirectory
tasks:
- id: clone_repository
type: io.kestra.plugin.git.Clone
url: https://github.com/kestra-io/examples
branch: main
- id: python
type: io.kestra.plugin.scripts.python.Commands
inputFiles:
data.csv: "{{ trigger.objects | jq('.[].uri') | first }}"
description: this script reads a file `data.csv` from S3 trigger
containerImage: ghcr.io/kestra-io/pydata:latest
commands:
- python examples/scripts/clean_messy_dataset.py
outputFiles:
- "*.csv"
- "*.parquet"
triggers:
- id: wait_for_s3_object
type: io.kestra.plugin.aws.s3.Trigger
bucket: declarative-orchestration
maxKeys: 1
interval: PT1S
filter: FILES
action: MOVE
prefix: raw/
moveTo:
key: archive/raw/
accessKeyId: "{{ secret('AWS_ACCESS_KEY_ID') }}"
secretKeyId: "{{ secret('AWS_SECRET_KEY_ID') }}"
region: "{{ secret('AWS_DEFAULT_REGION') }}"
yaml
id: python_in_container
namespace: company.team
tasks:
- id: wdir
type: io.kestra.plugin.core.flow.WorkingDirectory
tasks:
- id: clone_repository
type: io.kestra.plugin.git.Clone
url: https://github.com/kestra-io/examples
branch: main
- id: git_python_scripts
type: io.kestra.plugin.scripts.python.Commands
commands:
- python examples/scripts/etl_script.py
outputFiles:
- "*.csv"
- "*.parquet"
containerImage: annageller/kestra:latest
taskRunner:
type: io.kestra.plugin.scripts.runner.docker.Docker
config: |
{
"auths": {
"https://index.docker.io/v1/": {
"username": "annageller",
"password": "{{ secret('DOCKER_PAT') }}"
}
}
}
yaml
id: script_in_venv
namespace: company.team
tasks:
- id: python
type: io.kestra.plugin.scripts.python.Commands
packageManager: UV
inputFiles:
main.py: |
import requests
from kestra import Kestra
response = requests.get('https://google.com')
print(response.status_code)
Kestra.outputs({'status': response.status_code, 'text': response.text})
beforeCommands:
- python -m venv venv
- . venv/bin/activate
- pip install requests kestra > /dev/null
commands:
- python main.py
Properties
commands*Requiredarray
SubTypestring
beforeCommandsarray
SubTypestring
containerImagestring
Default
python:3.13-slimdependenciesarray
SubTypestring
dependencyCacheEnabledbooleanstring
Default
trueenvobject
SubTypestring
failFastbooleanstring
Default
trueinputFilesobjectstring
interpreterarray
SubTypestring
Default
["/bin/sh","-c"]namespaceFilesNon-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}}"]outputFilesarray
SubTypestring
packageManagerstring
Default
UVPossible Values
PIPUVpythonVersionstring
targetOSstring
Default
AUTOPossible Values
LINUXWINDOWSAUTOtaskRunnerNon-dynamic
Definitions
Run a task in a Docker container.
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
trueTask runner that executes a task as a subprocess on the Kestra host.
type*Requiredobject
versionstring
Task runner that executes a task inside a job in Google Cloud Batch.
region*Requiredstring
type*Requiredobject
bucketstring
completionCheckIntervalstring
Default
PT5SFormat
durationcomputeResource
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
PT5SFormat
durationwaitUntilCompletionstring
Default
PT1HFormat
durationTask runner that executes a task inside a job in Google Cloud Run.
region*Requiredstring
type*Requiredobject
bucketstring
completionCheckIntervalstring
Default
PT5SFormat
durationdeletebooleanstring
Default
trueimpersonatedServiceAccountstring
maxRetriesintegerstring
Default
3projectIdstring
resumebooleanstring
Default
truescopesarray
SubTypestring
Default
["https://www.googleapis.com/auth/cloud-platform"]serviceAccountstring
syncWorkingDirectorybooleanstring
versionstring
vpcAccessConnectorstring
vpcEgressstring
Possible Values
VPC_EGRESS_UNSPECIFIEDALL_TRAFFICPRIVATE_RANGES_ONLYUNRECOGNIZEDwaitForLogIntervalstring
Default
PT5SFormat
durationwaitUntilCompletionstring
Default
PT1HFormat
durationTask runner that executes a task inside a job in Azure Batch.
account*Requiredstring
endpoint*Requiredstring
poolId*Requiredstring
type*Requiredobject
accessKeystring
blobStorage
io.kestra.plugin.ee.azure.storage.blob.models.BlobStorageForBatch
containerName*Requiredstring
connectionStringstring
endpointstring
sharedKeyAccountAccessKeystring
sharedKeyAccountNamestring
completionCheckIntervalstring
Default
PT5SFormat
durationdeletebooleanstring
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
PT1HFormat
durationTask runner that executes a task inside a pod in a Kubernetes cluster.
type*Requiredobject
config
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
io.kestra.plugin.ee.kubernetes.models.OAuthTokenProvider
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
PT30SFormat
durationwaitUntilCompletionstring
Default
PT1HFormat
durationwaitUntilRunningstring
Default
PT10MFormat
durationTask runner that executes a task inside a job in AWS Batch.
computeEnvironmentArn*Requiredstring
region*Requiredstring
type*Requiredobject
accessKeyIdstring
bucketstring
completionCheckIntervalstring
Default
PT5SFormat
durationdeletebooleanstring
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
PT15MFormat
durationstsRoleSessionNamestring
syncWorkingDirectorybooleanstring
Default
falsetaskRoleArnstring
versionstring
waitUntilCompletionstring
Default
PT1HFormat
durationOutputs
exitCodeinteger
Default
0outputFilesobject
SubTypestring
taskRunner
Definitions