Welcome to the Inedo Forums! Check out the Forums Guide for help getting started.
If you are experiencing any issues with the forum software, please visit the Contact Form on our website and let us know!
ProGet - Unsupported Header when Uploading to Pure Storage S3
-
We're running ProGet in OpenShift with Linux containers. We're testing using Pure Storage S3 for the storage of our artifacts. We have successfully tested creating an assets folder on the S3 system and have uploaded documents to it. However, when we attempted creating a Docker repository on the same S3 bucket we got an AWS S3 exception stating that an unsupported header exception. The log from the pod is shown below:
info: Microsoft.AspNetCore.Hosting.Diagnostics[1]
Request starting HTTP/1.1 PUT http://proget-au.wtg.zone/v2/cargowise-cloud-docker/hello/blobs/uploads/5d7c5817-3cc7-47d3-ace5-bc3b5b827164?digest=sha256%3Ace980a8f5545faa3125a489aad32c00d6cf13d80a302308c3963b524085657af - application/octet-stream 0
Amazon S3 Exception; Request Id: ; A header you provided implies functionality that is not implemented.
A 500 error occurred in cargowise-cloud-docker: A header you provided implies functionality that is not implementedIs the code that writes to S3 common across all feed types? Or does each feed type use S3 in their own way? Has anybody else had any experience with Pure Storage S3, and what were the outcomes?
-
Hi @james-woods_8996 ,
Docker feeds utilize the multi-part upload part of the S3 API, which you can see being used in the BeginResumableUploadAsync method of our file system abstraction.
If they do not implement multi-part uploads, then you will not be able to use it with ProGet. Other feeds rely on that method as well.
I would check w/ the vendor to see what the issue could be - it's possible they simply don't support it.
Thanks,
Alana
-
Thanks for that, we enabled the multipart header but then encountered another error. We've raised a ticket with the vendor.
-
@atripp Hi Alana, our systems engineers were able to reproduce the issue directly on Pure Storage S3. They came to the conclusion that the issue is related to checksum configuration. The checksums apparently can be controlled with the following environment variables:
AWS_REQUEST_CHECKSUM_CALCULATION
AWS_RESPONSE_CHECKSUM_CALCULATIONSetting these made no difference in the behaviour of ProGet. Does the Indeo code override these in any way?
Regards,
James
-
Hi @james-woods_8996 ,
ProGet uses the AWS SDK for .NET, so I can't imagine environment variables would have any impact. I have no idea what those mean or do, but there's probably way to configure those in the SDK.
That said, another user is currently testing a change for Oracle Cloud Infrastructure, which seems to also be giving some kind of hash related error.
Perhaps it'll work for you? AWS v3.1.4-RC.1 is published to our prerelease feed. You can download and manually install, or update to use the prerelease feed:
https://docs.inedo.com/docs/proget/administration/extensions#manual-installation
After installing the extension, the "Disable Payload Signing" will show up on the advanced tab - and that property will be forwarded to the Put Request. In theory that will work, at least according to the one post from above.
One other thing to test would be uploading Assets (i.e. creating an Asset Directory) via the Web UI. That is the easiest way to do multi-part upload testing.
If it doesn't work, then we can try to research how else to change the extension to get it working.
Thanks,
Alana