AWS S3 versioning

Published: Friday, Apr 22, 2016 Last modified: Saturday, Mar 23, 2024

Yes, versioning on my bucket is enabled!

/tmp/test$ aws --profile example s3 ls s3://s3test.jptdev.com/test.txt
2016-04-22 11:29:29         50 test.txt

Make changes to test.txt.

/tmp/test$ aws --profile example s3 cp test.txt s3://s3test.jptdev.com/
upload: ./test.txt to s3://s3test.jptdev.com/test.txt

Notice the aws-cli/1.10.20’s list-object-versions seems to work with prefix not key.

aws --profile example s3api list-object-versions --bucket s3test.jptdev.com --prefix test.txt
{
	"Versions": [
		{
			"LastModified": "2016-04-22T03:29:29.000Z",
			"VersionId": "lzDLKsb_Dgq5nMOe8pAotZszO6.cs5eq",
			"ETag": "\"2fe9901004a6ec6ec047f53c7e185e6d\"",
			"StorageClass": "STANDARD",
			"Key": "test.txt",
			"Owner": {
				"DisplayName": "hendry",
				"ID": "d68f9f3b34a478c25469ceb76ca6772fe9d3b02488a908f0562e93084c4294f7"
			},
			"IsLatest": true,
			"Size": 50
		},
		{
			"LastModified": "2016-04-22T03:17:14.000Z",
			"VersionId": "DVgKQiDzCpK_vZ8am6KxP7DDPg4oNAys",
			"ETag": "\"2fe9901004a6ec6ec047f53c7e185e6d\"",
			"StorageClass": "STANDARD",
			"Key": "test.txt",
			"Owner": {
				"DisplayName": "hendry",
				"ID": "d68f9f3b34a478c25469ceb76ca6772fe9d3b02488a908f0562e93084c4294f7"
			},
			"IsLatest": false,
			"Size": 50
		},
		{
			"LastModified": "2016-04-22T03:14:58.000Z",
			"VersionId": "3FF6_QlVwFCbXTTqYJqvIMHOh9uD_Zb0",
			"ETag": "\"c9d3df23822ab54e39af74471eaa9f68\"",
			"StorageClass": "STANDARD",
			"Key": "test.txt",
			"Owner": {
				"DisplayName": "hendry",
				"ID": "d68f9f3b34a478c25469ceb76ca6772fe9d3b02488a908f0562e93084c4294f7"
			},
			"IsLatest": false,
			"Size": 34
		},
		{
			"LastModified": "2016-04-22T03:14:49.000Z",
			"VersionId": "NhFpF7hak4qe7zg0bbGIQmk6QYqyC2q9",
			"ETag": "\"e59ff97941044f85df5297e1c302d260\"",
			"StorageClass": "STANDARD",
			"Key": "test.txt",
			"Owner": {
				"DisplayName": "hendry",
				"ID": "d68f9f3b34a478c25469ceb76ca6772fe9d3b02488a908f0562e93084c4294f7"
			},
			"IsLatest": false,
			"Size": 12
		}
	]
}

/tmp/test$ aws --profile example s3api get-object --bucket s3test.jptdev.com --key test.txt --version-id NhFpF7hak4qe7zg0bbGIQmk6QYqyC2q9 foo.txt
{
	"AcceptRanges": "bytes",
	"ContentType": "text/plain",
	"LastModified": "Fri, 22 Apr 2016 03:14:49 GMT",
	"ContentLength": 12,
	"VersionId": "NhFpF7hak4qe7zg0bbGIQmk6QYqyC2q9",
	"ETag": "\"e59ff97941044f85df5297e1c302d260\"",
	"Metadata": {}
}
/tmp/test$ cat foo.txt
Hello World