cuddly-napkin-839
08/04/2025, 2:01 PMFile "/usr/local/lib/python3.12/site-packages/flytekit/core/data_persistence.py", line 614, in async_get_data
raise FlyteDownloadDataException(
flytekit.exceptions.system.FlyteDownloadDataException: SYSTEM:DownloadDataError: error=Failed to get data from s3://*****/test-project-01/development/YR7RMXMIOOCGYZIJKBIO2N4KUI======/fast6c01ca0737d31ff994073617f3ac5dec.tar.gz to /root/ (recursive=False).
Original exception: Unable to locate credentials
.
If I get it correctly, the difference to the registration process of the workflow is that the user context changed right?
But now I stuck for 2 days because I can’t figure out what is the right place and best practice for providing the credentials to the workflow. Do I have to create a k8s-Service Account and connect them to the launchplan? And what is the right way to attach the credentials to the SA? The documentation is very focused on hyperscaler usage and less on prem setups.
I’m thankful for any kind of help.clean-glass-36808
08/04/2025, 7:57 PMcuddly-napkin-839
08/05/2025, 3:52 PMFLYTE_AWS_ENDPOINT
, FLYTE_AWS_ACCESS_KEY_ID
and FLYTE_AWS_SECRET_ACCESS_KEY
to the env
section of the execution yaml file.
The download part seems to work, but now there is an error when uploading the data:
flytekit.exceptions.system.FlyteUploadDataException: SYSTEM:UploadDataError: error=Failed to put data from /tmp/flyteyr9uht3k/local_flytekit/engine_dir to s3://****/metadata/propeller/test-project-01-development-as6jzb2mglblwnbgrhfj/n0/data/0 (recursive=True).
Original exception: [Errno 22] x-amz-content-sha256 must be UNSIGNED-PAYLOAD, STREAMING-AWS4-HMAC-SHA256-PAYLOAD or a valid sha256 value., cause=[Errno 22] x-amz-content-sha256 must be UNSIGNED-PAYLOAD, STREAMING-AWS4-HMAC-SHA256-PAYLOAD or a valid sha256 value.
Because I’m using NetApp S3 Storage and not AWS the header x-amz-content-sha256
is not supported. Is it possible to disable this checksum in flyte/boto3?tall-lock-23197
clean-glass-36808
08/06/2025, 2:44 AMcuddly-napkin-839
08/06/2025, 11:34 AMONTAP S3 now supports chunked uploads signing requests using x-amz-content-sha256: STREAMING-AWS4-HMAC-SHA256-PAYLOADI will try to investigate if flyte/boto does not send the right header of if NetApp reject it.
cuddly-napkin-839
08/08/2025, 12:10 PMx-amz-content-sha256: UNSIGNED-PAYLOAD
as well as x-amz-content-sha256: <hash>
with cURL:
curl -sS "https://###.###.de/s3-###/testdata/test01" -H "x-amz-content-sha256: UNSIGNED-PAYLOAD" -T "test01" --user "<access_key_id>:<secret>" --aws-sigv4 "aws:amz:US:s3" -v
curl -sS "https://###.###.de/s3-###/testdata/test01" -H "x-amz-content-sha256: $(sha256sum --quiet test01)" -T "test01" --user "<access_key_id>:<secret>" --aws-sigv4 "aws:amz:US:s3" -v
cuddly-napkin-839
08/11/2025, 7:08 AMtall-lock-23197
cuddly-napkin-839
08/11/2025, 9:28 AMimport flytekit as fl
@fl.task
def task_1(a: int, b: int, c: int) -> int:
return a + b + c
@fl.task
def task_2(m: int, n: int) -> int:
return m * n
@fl.task
def task_3(x: int, y: int) -> int:
return x - y
@fl.workflow
def my_workflow(a: int, b: int, c: int, m: int, n: int) -> int:
x = task_1(a=a, b=b, c=c)
y = task_2(m=m, n=n)
return task_3(x=x, y=y)
# Combining default and fixed inputs
lp_combined = fl.LaunchPlan.get_or_create(
workflow=my_workflow,
name="combined_inputs",
default_inputs={"b": 1, "c": 2, "m": 3, "n": 4},
fixed_inputs={"a": 200}
)
tall-lock-23197
AWS_REQUEST_CHECKSUM_CALCULATION
and AWS_RESPONSE_CHECKSUM_VALIDATION
to when_required
)? if that doesn’t work, we’ll need to add some debug statements to the flytekit code, use the dev version in the image, and run it on the cluster to inspect the s3 request.cuddly-napkin-839
08/11/2025, 3:18 PMAWS_REQUEST_CHECKSUM_CALCULATION
and AWS_RESPONSE_CHECKSUM_VALIDATION
to when_required
. Now I’m not sure what HEADER is actually used, but that’s fine for me at the moment.tall-lock-23197
tall-lock-23197
logging.getLogger('botocore').setLevel(logging.DEBUG)
), then run make build-dev
to build the flytekit image and use it for your task. i believe you should then see headers in the task logs.