Cuma, Ekim 18, 2024

Hetzner Object Storage Kullanımı

Açık sabit disk sürücüsü donanımı ve devreleri.

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>
ShellScript

Yü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ÖzellikAçıklama
BucketsCreateHeader: 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
ObjectsPutObject
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}")
Python

Bu yapılandırmayı Hetzner’ın desteklediği özellik setine göre yaptığımızı hatırlatırım.

ÖzellikDesteklenen Standart
AWS Signature versionVersion 4 algorithm
Storage classesStandard
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
Python

Diğ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 bilgisi
  • your-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/*"
          ]
    }
  ]
}
Python

Girmiş 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"
Python

Ardından oluşturduğunuz alias ile aşağıdaki kuralı uygulamaya geçebilirsiniz.

mc anonymous set-json my-policy.json <alias_name>/<bucket_name>
Python

Kullanabileceğiniz S3 uyumlu bazı araçlar