Hi Tim, It has been a very long time since I last looked at this code. It is a good thing that at least part of it still works. Just by reading the code and reasoning about your problem, I would suggest you try the following change: In ZnAWSS3RequestSignatureTool>>#canonicalStringFor: replace the last request uri pathPrintString by request uri pathQueryFragmentPrintString I did not try this myself, so it might not solve your issue. Please let me know if this works. Sven
On 17 Jun 2021, at 03:05, Tim Mackinnon <tim@testit.works> wrote:
Hi everyone - Iâm wondering if someone knows the trick to listing object versions in AWS S3?
I was previously using a non-Zn library (there are a few around - but they are quite old and Iâm not sure how much they are maintained) - however I hadnât realised that Zn actually supports S3 until I read it a bit carefully and realised that I needed to load an extra AWS group.
So - I have a bucket that is versioned, and I wanted to read the versions of an object - and hopefully be able to read the contents of an older version.
I can list the contents of a bucket, but when I try to read the versions of an object - I get a forbidden error - which when I dig deeper gives a stranger explanation?
I have confirmed that the AWS CLI is able to list versions in that bucket - so Iâm a bit confused what the issue might be?
(client := ZnAWSS3Client new) accessKeyId: 'xxx'; secretAccessKey: âyyyyy'; checkIntegrity: true.
client buckets. âWorks" client keysIn: 'mtt-dataâ. âWorks"
client at: 'mtt-data' -> 'sample.txtâ. âWorks"
client keysIn: 'mtt-data' query: (Dictionary with: 'versions'->nil). âGives an error?â
HTTP/1.1 403 Forbidden
<?xml version="1.0" encoding="UTF-8"?> <Error><Code>SignatureDoesNotMatch</Code><Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message><AWSAccessKeyId>xxx</AWSAccessKeyId><StringToSign>GET
Has anyone tried doing this - Iâm sure there is something really simple that I am missing?
Tim