Skip to content

Commit d1acf5a

Browse files
authored
Merge branch 'main' into feature/661-aws-s3-transfer-manager
2 parents 8719cdd + 2078244 commit d1acf5a

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

66 files changed

+1347
-508
lines changed

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM kestra/kestra:latest-no-plugins
1+
FROM kestra/kestra:latest
22

33
RUN mkdir -p /app/plugins
44

build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
plugins {
2-
id "com.vanniktech.maven.publish" version "0.35.0"
2+
id "com.vanniktech.maven.publish" version "0.36.0"
33
id "io.kestra.gradle.inject-bom-versions" version "1.0.0"
44
id 'java-library'
55
id "idea"
@@ -129,8 +129,8 @@ dependencies {
129129

130130
// testcontainers
131131
testImplementation "org.testcontainers:testcontainers:2.0.3"
132-
testImplementation "org.testcontainers:junit-jupiter:1.21.3"
133-
testImplementation "org.testcontainers:localstack:1.21.3"
132+
testImplementation "org.testcontainers:junit-jupiter:1.21.4"
133+
testImplementation "org.testcontainers:localstack:1.21.4"
134134
testImplementation 'com.amazonaws:aws-java-sdk-s3'
135135
}
136136

gradle.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
version=1.4.2-SNAPSHOT
2-
kestraVersion=1.1.0
1+
version=2.0.1-SNAPSHOT
2+
kestraVersion=1.1.0

gradle/wrapper/gradle-wrapper.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-9.1.0-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.1-bin.zip
44
networkTimeout=10000
55
validateDistributionUrl=true
66
zipStoreBase=GRADLE_USER_HOME

gradlew.bat

Lines changed: 93 additions & 93 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/main/java/io/kestra/plugin/aws/athena/Query.java

Lines changed: 34 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,9 @@
4848
@Getter
4949
@NoArgsConstructor
5050
@Schema(
51-
title = "Query an Amazon Athena table.",
51+
title = "Run an Athena query and fetch results",
5252
description = """
53-
The query will wait for completion, except if fetchMode is set to `NONE`, and will output converted rows.
54-
Row conversion is based on the types listed in [Athena Data Types](https://docs.aws.amazon.com/athena/latest/ug/data-types.html).
55-
Complex data types like array, map, and struct will be converted to a string."""
53+
Executes an Athena SQL query and waits for completion unless fetchType is NONE. Converts primitive columns to native types and stores results according to fetchType; default STORE writes an ION file to internal storage. skipHeader defaults to true to drop the header row; complex Athena types (array/map/struct) are returned as strings."""
5654
)
5755
@Plugin(
5856
examples = {
@@ -129,36 +127,45 @@
129127
}
130128
)
131129
public class Query extends AbstractConnection implements RunnableTask<Query.QueryOutput> {
132-
@Schema(title = "Athena catalog.")
130+
@Schema(
131+
title = "Athena catalog",
132+
description = "Optional catalog name; use default if omitted."
133+
)
133134
private Property<String> catalog;
134135

135-
@Schema(title = "Athena database.")
136+
@Schema(
137+
title = "Athena database",
138+
description = "Target database for the query."
139+
)
136140
@NotNull
137141
private Property<String> database;
138142

139143
@Schema(
140-
title = "Athena output location.",
141-
description = "The query results will be stored in this output location. Must be an existing S3 bucket."
144+
title = "Athena output location",
145+
description = "Existing S3 URI where Athena writes result files (required by service)."
142146
)
143147
@NotNull
144148
private Property<String> outputLocation;
145149

146-
@Schema(title = "Athena SQL query.")
150+
@Schema(
151+
title = "Athena SQL query",
152+
description = "SQL statement executed by Athena."
153+
)
147154
@NotNull
148155
private Property<String> query;
149156

150157
@Schema(
151-
title = "The way you want to store the data.",
152-
description = "FETCH_ONE outputs the first row, "
153-
+ "FETCH outputs all the rows, "
154-
+ "STORE stores all rows in a file, "
155-
+ "NONE does nothing — in this case, the task submits the query without waiting for its completion."
158+
title = "Fetch strategy",
159+
description = "Default STORE writes all rows to internal storage; FETCH loads all rows into memory; FETCH_ONE returns the first row; NONE submits without waiting."
156160
)
157161
@NotNull
158162
@Builder.Default
159163
private Property<FetchType> fetchType = Property.ofValue(FetchType.STORE);
160164

161-
@Schema(title = "Whether to skip the first row which is usually the header.")
165+
@Schema(
166+
title = "Skip header row",
167+
description = "If true (default), drop the first returned row, which is usually the column header."
168+
)
162169
@NotNull
163170
@Builder.Default
164171
private Property<Boolean> skipHeader = Property.ofValue(true);
@@ -356,29 +363,33 @@ private Object mapCell(ColumnInfo columnInfo, Datum datum) {
356363
@Getter
357364
public static class QueryOutput implements Output {
358365

359-
@Schema(title = "The query execution identifier.")
366+
@Schema(
367+
title = "Query execution ID",
368+
description = "Identifier returned by StartQueryExecution."
369+
)
360370
private String queryExecutionId;
361371

362372
@Schema(
363-
title = "List containing the fetched data.",
364-
description = "Only populated if `fetchType=FETCH`."
373+
title = "Rows",
374+
description = "All rows when fetchType is FETCH."
365375
)
366376
private List<Object> rows;
367377

368378
@Schema(
369-
title = "Map containing the first row of fetched data.",
370-
description = "Only populated if `fetchType=FETCH_ONE`."
379+
title = "First row",
380+
description = "Single row when fetchType is FETCH_ONE."
371381
)
372382
private Map<String, Object> row;
373383

374384
@Schema(
375-
title = "The URI of stored data.",
376-
description = "Only populated if `fetchType=STORE`."
385+
title = "Stored data URI",
386+
description = "Internal storage URI when fetchType is STORE."
377387
)
378388
private URI uri;
379389

380390
@Schema(
381-
title = "The size of the fetched rows."
391+
title = "Fetched row count",
392+
description = "Number of rows returned or stored."
382393
)
383394
private Long size;
384395
}

src/main/java/io/kestra/plugin/aws/auth/EksToken.java

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@
3232
@Getter
3333
@NoArgsConstructor
3434
@Schema(
35-
title = "Fetch an OAuth access token for an AWS EKS cluster."
35+
title = "Generate a presigned EKS authentication token",
36+
description = "Builds a short-lived `k8s-aws-v1` token for a given EKS cluster by presigning STS GetCallerIdentity. Requires region and cluster name; expirationDuration defaults to 600s."
3637
)
3738
@Plugin(
3839
examples = {
@@ -55,11 +56,17 @@
5556
)
5657
public class EksToken extends AbstractConnection implements RunnableTask<EksToken.Output> {
5758

58-
@Schema(title = "EKS cluster name.")
59+
@Schema(
60+
title = "EKS cluster name",
61+
description = "Cluster identifier passed in x-k8s-aws-id when presigning."
62+
)
5963
@NotNull
6064
private Property<String> clusterName;
6165

62-
@Schema(title = "Token expiration duration in seconds")
66+
@Schema(
67+
title = "Token TTL (seconds)",
68+
description = "Lifetime of the presigned URL; default 600 seconds."
69+
)
6370
@NotNull
6471
@Builder.Default
6572
private Property<Long> expirationDuration = Property.ofValue(600L);
@@ -123,7 +130,10 @@ public static URI getStsRegionalEndpointUri(RunContext runContext, Region awsReg
123130
@Getter
124131
public static class Output implements io.kestra.core.models.tasks.Output {
125132
@NotNull
126-
@Schema(title = "An OAuth access token for the current user.")
133+
@Schema(
134+
title = "EKS auth token",
135+
description = "Bearer token formatted as k8s-aws-v1.<base64url>; encrypted in outputs when supported."
136+
)
127137
private final Token token;
128138
}
129139

@@ -136,6 +146,10 @@ public static class Token {
136146
)
137147
EncryptedString tokenValue;
138148

149+
@Schema(
150+
title = "Token expiration time",
151+
description = "Exact UTC expiration timestamp derived from the provided TTL."
152+
)
139153
Instant expirationTime;
140154
}
141-
}
155+
}

0 commit comments

Comments
 (0)