S3 uyumlu Object Storage, verileri “Bucket” kaydetmeniz için size depolama alanı sağlar. Hetznerda bu kaydettiğiniz tüm veriler bir Ceph clusterinde kaydedilir. Herkese açık olarak kullanırsanız aşağıdaki şekilde herkes erişebilir.
https://<bucket-name>.<location>.your-objectstorage.com/<file-name>
ShellScriptYüklenen dosyalar değiştirilemez, bu sebeple temel amaç WORM(Write once, read many [times]) olarak kullanılmasıdır.
- Statik bir web sitesi barındırma
- Yedeklerin tutulması
- Verileri halka açık veya özel bir şekilde paylaşılması
Diğer bulut tabanlı uygulamalar ile kullanılabilir herhangi bir kısıtlama bulunmamaktadır. Hetzner’ın Object Storage ürünü S3 ile uyumludur bu sebeple S3-compatible olarak geçen tüm uygulamalar ile sorunsuz çalışabilmektedir Amazonun resmi olarak geliştirdiği bütün yazılımları kullanabilirsiniz.
Kaynak | Özellik | Açıklama |
---|---|---|
Buckets | Create | Header: x-amz-bucket-object-lock-enabledx-amz-acl (allowed value: private) |
CreateBucketConfiguration XML Body: LocationConstraint | ||
List | ||
Delete | ||
Location | ||
HeadBucket | ||
ACL | ||
Policy | ||
Encryption (SSE only) | ||
Lifecycle | ||
Objects | PutObject | |
GetObject | ||
DeleteObject | ||
HeadObject | ||
ACL | ||
ObjectLock (bucket oluşturma aşamasında seçilmelidir) | Retention Legal Hold | |
Tagging | ||
Versions |
Ayrıca minio tarafından geliştirilen mc uygulamasını da kullanmanız mümkün olduğu gibi boto3 ve s3cmd gibi araçlardan’da faydalanabilirsiniz.
Python’da kullanmak isterseniz aşağıdaki örnekten faydalanabilirsiniz.
import boto3
from botocore.exceptions import ClientError
s3 = boto3.resource('s3',
endpoint_url='https://XYZ.fsn1.your-objectstorage.com',
aws_access_key_id='<ACCESS KEY>',
aws_secret_access_key='<SECRET KEY>',
aws_session_token=None,
config=boto3.session.Config(signature_version='s3v4'),
verify=True,
)
bucket_name = 'your-unique-bucket-name'
try:
response = s3.create_bucket(Bucket=bucket_name)
print(f"Bucket {bucket_name} created successfully.")
except ClientError as e:
print(f"Error creating bucket: {e}")
PythonBu yapılandırmayı Hetzner’ın desteklediği özellik setine göre yaptığımızı hatırlatırım.
Özellik | Desteklenen Standart |
---|---|
AWS Signature version | Version 4 algorithm |
Storage classes | Standard |
Server-Side Encryption (SSE) | SSE-C |
Hetzner’da S3 Bucket Nasıl Oluşturulur?
Arayüz üzerinden direk olarak S3 bucket oluşturmak için Proje içerisinde sol menüden “Object Storage” seçilir. “Create Bucket” butonuna tıklanır ve uygun şekilde doldurulur.
“Create & But Now” dendiği anca bucketiniz hazırlanmaya başlar ve çok kısa bir sürede aktif olur. Panelinizde aşağıdaki gibi gözükmeye başlar.
Dosyalarınızı ister “Files” sekmesinden “Upload Files” yönergeleri ile yapabilir, isterseniz de S3 API destekli uygulamalar üzerinden yükleyebilirsiniz.
Hetzner S3 Credentials Nasıl Alınır?
Sol menüde bulunan “Security” geçiş yapın, hemen ardından “S3 Credentials” sekmesine tıklayın. Karşınıza çıkan alandan “Generate credentials” deyin ve bir açıklama girin.
Size aşağıdaki gibi 2 adet anahtar verecek bunlarla bucketınıza erişerek istediğiniz işlemleri yapabilirsiniz.
Access Key: 2T3BUTKTB6G580HKFKTK
Secret Key: EVjEioyd7WCQhYRUi3ScFJ8r0NoKqQRM6WIOSbbI
PythonDiğer sağlayıcıların aksine oluşturduğunuz bu anahtar için erişim kuralı girebilirsiniz. Hangi bucketa erişmesi gerekiyorsa onun için kısıtlayabilirsiniz.
project_id
: Oluşturduğunuz projenin ID’si tarayıcının üstünde yazar(https://console.hetzner.cloud/projects/<project-ID>/servers)access_key
: Sistemden almış olduğunuz access key bilgisiyour-bucket-name
: bucket adınız.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam:::user/p<project_id>:<access_key>"
},
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::your-bucket-name",
"arn:aws:s3:::your-bucket-name/*"
]
}
]
}
PythonGirmiş olduğunuz bu bucket politikasını S3 uyumlu herhangi bir api ile sisteme kayıt edebilirsiniz. Minio’nun kendi clientini kullanmak isterseniz.
Önce kullanacağınız bucketi mc’ye tanıtın
mc alias set hetzner-bucket \
https://xyz.fsn1.your-objectstorage.com \
<your_access_key> <your_secret_key> \
--api "s3v4" \
--path "off"
PythonArdından oluşturduğunuz alias ile aşağıdaki kuralı uygulamaya geçebilirsiniz.
mc anonymous set-json my-policy.json hetzner-bucket/mertcangokgoz
PythonKullanabileceğiniz S3 uyumlu bazı araçlar
- https://github.com/aws/aws-cli/
- https://github.com/s3tools/s3cmd
- https://github.com/minio/mc
- https://github.com/rclone/rclone
- https://s3browser.com/
- https://panic.com/transmit/
- https://cyberduck.io/
S3 Bucket Versioning nasıl aktif edilir?
Nesnelerinizin yanlışlıkla silinmesini önlemek için Sürüm Oluşturma özelliğini kullanabilirsiniz. Her nesneye otomatik olarak bir sürüm kimliği atanır, bu da aynı nesnenin birkaç sürümünü tek bir bucket içinde tutmanıza olanak tanır. bucket içinde zaten var olan bir ada sahip bir nesne yüklerseniz (örn. cemil.txt), var olan nesne silinmez; bunun yerine nesneler sürüm kimlikleriyle ayırt edilir. Nesnelerin manuel olarak silinmesi hala mümkündür. Ancak farklı versiyonları bucket içerisinde durmaya devam eder.
Minio kullanarak aktif etme
mc version enable hetzner-bucket/mertcangokgoz
ShellScriptAWS Cli kullanarak aktif etme
aws s3api put-bucket-versioning --versioning-configuration Status=Enabled --bucket mertcangokgoz
ShellScriptS3 Bucket Legal Hold nasıl aktif edilir?
Nesne Kilitleme, seçilen nesnelerin manuel olarak silinmesini devre dışı bırakmanıza olanak tanır. Nesne kilitleme ile “legal hold” ve “retention” seçenekleri arasında seçim yapabilirsiniz. Legal hold, tekrar manuel olarak kaldırılana kadar bir nesnenin silinmesini önler. Retention, bir nesnenin belirli bir süre geçene kadar silinmesini önler.
Retention’nın iki farklı modu vardır: “Governance” ve “Compliance”.
Otomatik silme | Manuel silme | Aynı ada sahip nesneler | |
---|---|---|---|
Versioning | devre dışı | etkin | Bir nesneyi silmek için önce yasal tutmayı kaldırmanız gerekir. Bu herhangi bir özel izin gerektirmez, ancak yanlışlıkla silmeyi önlemeye yardımcı olabilecek ekstra bir adım ekler. |
Legal Hold | Versioning is automatically enabled and you cannot disable it. | Bir nesneyi silmek için önce “legal hold” kaldırmanız gerekir. Bu herhangi bir özel izin gerektirmez, ancak yanlışlıkla silmeyi önlemeye yardımcı olabilecek ekstra bir adım ekler. | Sürüm oluşturma otomatik olarak etkinleştirildiğinden, farklı bir sürüm kimliğine sahip yeni bir nesne eklenir. Yeni nesne için “legal hold” tekrar etkinleştirmeniz gerekecektir. |
Retention (Governance Modu) | Sürüm oluşturma otomatik olarak etkinleştirilir ve bunu devre dışı bırakamazsınız. | Yalnızca özel izinlere sahip kullanıcılar saklama süresini daha erken sonlandırabilir ve nesneyi orijinal saklama süresi sona ermeden silebilir. | Sürüm oluşturma otomatik olarak etkinleştirildiğinden, farklı bir sürüm kimliğine sahip yeni bir nesne eklenir. Yeni nesne için saklama süresini yeniden ayarlamanız gerekecektir. |
Retention (Compliance Modu) | Sürüm oluşturma otomatik olarak etkinleştirilir ve bunu devre dışı bırakamazsınız. | Hiç kimse saklama süresini daha erken sona erdiremez ve saklama süresi sona ermeden nesneyi silmek mümkün değildir. | Sürüm oluşturma otomatik olarak etkinleştirildiğinden, farklı bir sürüm kimliğine sahip yeni bir nesne eklenir. Yeni nesne için saklama süresini yeniden ayarlamanız gerekecektir. |
Minio kullanarak object lock
aktif etme
mc mb hetzner-bucket/mertcangokgoz --with-lock --region fsn1
ShellScriptAWS Cli kullanarak object lock
aktif etme
aws s3api create-bucket \
--bucket mertcangokgoz \
--region fsn1 \
--object-lock-enabled-for-bucket
ShellScriptMinio kullanarak legal hold
aktif etme
mc legalhold set --recursive hetzner-bucket/mertcangokgoz
ShellScriptAWS Cli kullanarak legal hold
aktif etme
aws s3api put-object-legal-hold --bucket mertcangokgoz \
--key cemil.txt --legal-hold Status=ON
ShellScript