I den här kom igång guiden så kommer vi gå igenom det ni behöver göra för att för att komma igång med objektlåsning.
Förutsättningar
För att komma igång med CLI:et så behöver ni installera antingen AWS CLI eller liknande. Vi har en guide för att komma igång med objektlagring här https://support.binero.com/knowledge-base/binero-objektlagring/
Kom igång
För att använda objektlås så behöver vi först konfigurera en bucket med stöd för det, detta gör vi med följande kommando:
$ aws --endpoint=https://object-eu-se-1a.binero.cloud s3api create-bucket --bucket binero-test-lock --create-bucket-configuration LocationConstraint=europe-se-1:gp.recurring --object-lock-enabled-for-bucket
Efter det så kan vi aktivera objektlås på den och välja typ av bibehållande
$ aws --endpoint=https://object-eu-se-1a.binero.cloud s3api put-object-lock-configuration --bucket binero-test-lock --object-lock-configuration '{ "ObjectLockEnabled": "Enabled", "Rule": { "DefaultRetention": { "Mode": "COMPLIANCE", "Days": 1 }}}'
Här sätter vi Mode till COMPLIANCE detta innebär att det skyddade objektet inte kan skrivas över eller raderas av någon användare, det går inte att ändra i efterhand och man kan inte göra perioden kortare. Vi sätter perioden till 1 dag vilket innebär att objektet bara kan raderas/skrivas över efter 1 dag från att det skapas.
Om vi nu flyttar en fil till den nya bucket:en vi skapat
$ aws s3 --endpoint=https://object-eu-se-1a.binero.cloud cp test.txt s3://binero-test-lock/test.txt upload: ./test.txt to s3://binero-test-lock/test.txt
Så kan vi lista alla versioner av det objektet då versionshantering aktiveras när man skapar en bucket med objektlås.
$ aws s3api --endpoint=https://object-eu-se-1a.binero.cloud list-object-versions --bucket binero-test-lock { "Versions": [ { "ETag": "\"d41d8cd98f00b204e9800998ecf8427e\"", "Size": 0, "StorageClass": "STANDARD", "Key": "test.txt", "VersionId": "LYw1h2UTZX3SX5eh736V72T2.Ewca5l", "IsLatest": true, "LastModified": "2021-03-15T10:33:20.407000+00:00", "Owner": { "DisplayName": "5000000", "ID": "e159548115134f84b850038459bc600c$e159548115134f84b850038459bc600c" } } ] }
Raderar man filen genom att köra tex.
$ aws s3api --endpoint=https://object-eu-se-1a.binero.cloud delete-object --bucket binero-test-lock --key "test.txt" { "DeleteMarker": true, "VersionId": "Nqf2LuW16O8U9bQcqaxnEGIMfXvUjgX" }
Så blir den markerad som raderad eftersom versionshantering är aktiverat, försöker man däremot att radera objektet
$ aws --endpoint=https://object-eu-se-1a.binero.cloud s3api delete-object --bucket binero-test-lock --key test.txt --version-id LYw1h2UTZX3SX5eh736V72T2.Ewca5l An error occurred (AccessDenied) when calling the DeleteObject operation: Unknown
så får man ett felmeddelande då det inte går att radera filen innan tiden vi satt gått ut.