
script
script
yaml
type: "io.kestra.plugin.scripts.python.script"Examples
yaml
id: python_demo
namespace: company.team
tasks:
- id: python
type: io.kestra.plugin.scripts.python.Script
dependencies:
- requests
- kestra
script: |
from kestra import Kestra
import requests
response = requests.get('https://kestra.io')
print(response.status_code)
Kestra.outputs({'status': response.status_code, 'text': response.text})
yaml
id: pip_packages_docker
namespace: company.team
tasks:
- id: run_python
type: io.kestra.plugin.scripts.python.Script
dependencies:
- requests
script: |
import requests
import json
response = requests.get("https://api.github.com")
data = response.json()
print(data)
yaml
id: python_logs
namespace: company.team
tasks:
- id: python_logger
type: io.kestra.plugin.scripts.python.Script
allowFailure: true
dependencies
- kestra
script: |
import time
from kestra import Kestra
logger = Kestra.logger()
logger.debug("DEBUG is used for diagnostic info.")
time.sleep(0.5)
logger.info("INFO confirms normal operation.")
time.sleep(0.5)
logger.warning("WARNING signals something unexpected.")
time.sleep(0.5)
logger.error("ERROR indicates a serious issue.")
time.sleep(0.5)
logger.critical("CRITICAL means a severe failure.")
yaml
id: pass_data_between_tasks
namespace: company.team
tasks:
- id: download
type: io.kestra.plugin.core.http.Download
uri: https://huggingface.co/datasets/kestra/datasets/raw/main/csv/orders.csv
- id: python
type: io.kestra.plugin.scripts.python.Script
script: |
with open('{{ outputs.download.uri }}', 'r') as f:
print(f.read())
yaml
id: python_output_file
namespace: company.team
tasks:
- id: python
type: io.kestra.plugin.scripts.python.Script
outputFiles:
- "myfile.txt"
script: |
f = open("myfile.txt", "a")
f.write("Hello from a Kestra task!")
f.close()
yaml
id: python_outputs
namespace: company.team
tasks:
- id: clean_dataset
type: io.kestra.plugin.scripts.python.Script
containerImage: ghcr.io/kestra-io/pydata:latest
outputFiles:
- "clean_dataset.csv"
dependencies:
- pandas
script: |
import pandas as pd
df = pd.read_csv("https://huggingface.co/datasets/kestra/datasets/raw/main/csv/messy_dataset.csv")
# Replace non-numeric age values with NaN
df["Age"] = pd.to_numeric(df["Age"], errors="coerce")
# mean imputation: fill NaN values with the mean age
mean_age = int(df["Age"].mean())
print(f"Filling NULL values with mean: {mean_age}")
df["Age"] = df["Age"].fillna(mean_age)
df.to_csv("clean_dataset.csv", index=False)
- id: read_file_from_python
type: io.kestra.plugin.scripts.shell.Commands
taskRunner:
type: io.kestra.plugin.core.runner.Process
commands:
- head -n 10 {{ outputs.clean_dataset.outputFiles['clean_dataset.csv'] }}
yaml
id: python_use_input_in_inline
namespace: company.team
inputs:
- id: pokemon
type: STRING
defaults: pikachu
- id: your_age
type: INT
defaults: 25
tasks:
- id: inline_script
type: io.kestra.plugin.scripts.python.Script
description: Fetch the pokemon detail and compare its experience
containerImage: ghcr.io/kestra-io/pydata:latest
dependencies:
- requests
script: |
import requests
import json
url = "https://pokeapi.co/api/v2/pokemon/{{ inputs.pokemon }}"
response = requests.get(url)
if response.status_code == 200:
pokemon = json.loads(response.text)
print(f"Base experience of {{ inputs.pokemon }} is { pokemon.get('base_experience') }")
if pokemon.get('base_experience') > int("{{ inputs.your_age }}"):
print("{{ inputs.pokemon }} has more base experience than your age")
else:
print("{{ inputs.pokemon}} is too young!")
else:
print(f"Failed to retrieve the webpage. Status code: {response.status_code}")
yaml
id: python_input_file
namespace: company.team
tasks:
- id: download_file
type: io.kestra.plugin.core.http.Download
uri: https://huggingface.co/datasets/kestra/datasets/raw/main/csv/orders.csv
- id: get_total_rows
type: io.kestra.plugin.scripts.python.Script
dependencies:
- pandas
inputFiles:
input.csv: "{{ outputs.download_file.uri }}"
script: |
import pandas as pd
# Path to your CSV file
csv_file_path = "input.csv"
# Read the CSV file using pandas
df = pd.read_csv(csv_file_path)
# Get the number of rows
num_rows = len(df)
print(f"Number of rows: {num_rows}")
yaml
id: python_generate_outputs
namespace: company.team
tasks:
- id: generate_output
type: io.kestra.plugin.scripts.python.Script
packageManager: PIP
dependencies:
- kestra
script: |
from kestra import Kestra
marks = [79, 91, 85, 64, 82]
Kestra.outputs({"total_marks": sum(marks),"average_marks": sum(marks)/len(marks)})
- id: log_result
type: io.kestra.plugin.core.log.Log
message:
- "Total Marks: {{ outputs.generate_output.vars.total_marks }}"
- "Average Marks: {{ outputs.generate_output.vars.average_marks }}"
Properties
script*Requiredstring
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