Object Storage
SkyAtlas API ile nesne depolama hizmeti hem Swift hemde S3 protokollerini desteklemektedir.
Swift Protokolü kullanılarak SkyAtlas API ile yapılabilecek işlemler;
Her biri varsayılan olarak 5 GB olmak şartıyla sınırsız nesne saklanması
Herhangi bir boyuttaki nesnelerin oluşturulması ve saklanması
Nesne güvenliğini sağlamak için Cross-origin paylaşımın kullanılması
İçerik şifreleme ile dosyaların sıkıştırılması
Nesnelerin silinmesi için takvim oluşturma
Tek istekte 10.000 adet nesnenin toplu halde silinmesi
S3 Protokolü kullanılarak SkyAtlas API ile yapılabilecek işlemler;
Her biri varsayılan olarak 5 TB olmak şartıyla sınırsız nesne saklanması
Herhangi bir boyuttaki nesnelerin oluşturulması ve saklanması
Nesne güvenliğini sağlamak için Cross-origin paylaşımın kullanılması
İçerik şifreleme ile dosyaların sıkıştırılması
Nesnelerin silinmesi için takvim oluşturma
Tek istekte 10.000 adet nesnenin toplu halde silinmesi
Swift Protokolü Kullanılarak SkyAtlas API;
Curl ile komutları kısaltmak için aşağıda belirtilen yöntemi kullanabilirsiniz.
export publicURL = https://panel.skyatlas.cloud:6780/swift/v1/AUTH_46b92468aef14027abd2173ee4f92736
Accounts
Methods | |
GET | /v1/{account} Show account details and list containers |
POST | /v1/{account} create, update, or delete account metadata |
HEAD | /v1/{account} Show account metadata |
GET
(Object Storage account detaylarını görmek ve containerları listelemek için kullanılır)
curl
curl -i "$publicURL?format=json" -X GET -H "X-Auth-Token: $token"
Python
response = requests.get(
url=osurl+":6780/swift/v1/"+account+"?format=json",
headers={"x-auth-token": token_id}
)
print(response.headers)
print(response.content)
POST
(account metadataları oluşturmak, güncellemek ve silmek için)
X-Account-Meta-{name} şablonu kullanılır {name} ibaresi yerine eklenmek istenen metadata parametresi eklenir.
Oluşturmak için;
curl
curl -i "$publicURL" -X POST -H "X-Auth-Token: $token" -H "X-Account-Meta-Book: MobyDick" -H "X-Account-Meta-Subject: Literature"
Python
response = requests.post(
url=osurl+":6780/swift/v1/"+account,
headers={"X-Auth-Token": token_id,"X-Account-Meta-Book": "MobyDick","X-Account-Meta-Subject": "Literature"}
)
Güncellemek için;
curl
curl -i "$publicURL" -X POST -H "X-Auth-Token: $token" -H "X-Account-Meta-Subject: AmericanLiterature"
Python
response = requests.post(
url=osurl+":6780/swift/v1/"+account,
headers={"X-Auth-Token": token_id,"X-Account-Meta-Subject": "AmericanLiterature"}
)
Silmek için;
curl
curl -i "$publicURL" -X POST -H "X-Auth-Token: $token" -H "X-Remove-Account-Meta-Book: x" -H “X-Remove-Account-Meta-Subject: x”
Python
response = requests.post(
url=osurl+":6780/swift/v1/"+account,
headers={"X-Auth-Token": token_id,"X-Remove-Account-Meta-Book": "x","X-Remove-Account-Meta-Subject": "x"}
)
HEAD
(account metadatalarını görmek için)
curl
curl -i "$publicURL" -I -H "X-Auth-Token: $token"
Python
response = requests.head(
url=osurl+":6780/swift/v1/"+account,
headers={"X-Auth-Token": token_id}
)
print(response.headers)
Containers
Methods | |
GET | /v1/{account}/{container} Show container details and list objects |
PUT | /v1/{account}/{container} Create container |
POST | /v1/{account}/{container} Create, update, or delete container metadata |
HEAD | /v1/{account}/{container} Show container metadata |
DELETE | /v1/{account}/{container} Delete container |
GET
(container detaylarını görmek ve container ları listelemek için)
curl
curl -i "$publicURL/test" -X GET -H "X-Auth-Token: $token"
Python
response = requests.get(
url=osurl+":6780/swift/v1/"+account+"/test",
headers={"x-auth-token": token_id}
)
print(response.content)
PUT
(container oluşturmak için)
curl
curl -i "$publicURL/test" -X PUT -H "Content-Length: 0" -H "X-Auth-Token: $token"
Python
response = requests.put(
url=osurl+":6780/swift/v1/"+account+"/test",
headers={"x-auth-token": token_id}
)
print(response.content)
POST
(container metadataları oluşturmak, güncellemek ve silmek için)
X-Container-Meta-{name} şablonu kullanılır {name} ibaresi yerine eklenmek istenen metadata parametresi eklenir.
Oluşturmak için;
curl
curl -i "$publicURL/test" -X POST -H "X-Auth-Token: $token" -H "X-Container-Meta-Book: MobyDick" -H "X-Container-Meta-Subject: Literature"
Python
response = requests.post(
url=osurl+":6780/swift/v1/"+account+"/test",
headers={"X-Auth-Token": token_id,"X-Container-Meta-Book": "MobyDick","X-Container-Meta-Subject": "Literature"}
)
Güncellemek için;
curl
curl -i "$publicURL/test" -X POST -H "X-Auth-Token: $token" -H "X-Container-Meta-Subject: AmericanLiterature"
Python
response = requests.post(
url=osurl+":6780/swift/v1/"+account+"/test",
headers={"X-Auth-Token": token_id,"X-Container-Meta-Subject": "AmericanLiterature"}
)
Silmek için;
curl
curl -i "$publicURL/test" -X POST -H "X-Auth-Token: $token" -H "X-Remove-Container-Meta-Book: x" -H “X-Remove-Container-Meta-Subject: x”
Python
response = requests.post(
url=osurl+":6780/swift/v1/"+account+"/test",
headers={"X-Auth-Token": token_id,"X-Remove-Container-Meta-Book": "x","X-Remove-Container-Meta-Subject": "x"}
)
HEAD
(container metadataları görmek için)
curl
curl -i "$publicURL/test" -I -H "X-Auth-Token: $token"
Python
response = requests.head(
url=osurl+":6780/swift/v1/"+account+"/test",
headers={"X-Auth-Token": token_id}
)
print(response.headers)
DELETE
(container silmek için)
curl
curl -i "$publicURL/test" -X DELETE -H "X-Auth-Token: $token"
Python
response = requests.delete(
url=osurl+":6780/swift/v1/"+account+"/test",
headers={"X-Auth-Token": token_id}
)
print(response.headers)
Objects
Methods | |
GET | /v1/{account}/{container}/{object} Get object content and metadata |
PUT | /v1/{account}/{container}/{object} Create or replace object |
COPY | /v1/{account}/{container}/{object} Copy object |
DELETE | /v1/{account}/{container}/{object} Delete object |
HEAD | /v1/{account}/{container}/{object} Show object metadata |
POST | /v1/{account}/{container}/{object} Create or update object metadata |
GET
(object detaylarını görmek ve objeleri listelemek için)
curl
curl -i "$publicURL/test/object.txt" -X GET -H "X-Auth-Token: $token"
Python
response = requests.get(
url=osurl+":6780/swift/v1/"+account+"/test/object.txt",
headers={"x-auth-token": token_id}
)
print(response.headers)
print(response.content)
PUT
(object oluşturmak veya objeleri değiştirmek için)
curl
curl -i "$publicURL/test/hello.txt" -X PUT -d “Hello” -H "Content-Type: text/html; charset=UTF-8" -H "X-Auth-Token: $token"
Python
response = requests.put(
url=osurl+":6780/swift/v1/"+account+"/test/hello.txt",
headers={"x-auth-token": token_id}
data=”HELLO”
)
COPY
(object kopyalamak için)
İki farklı kullanımı var
curl
curl -i "$publicURL/test/hello.txt" -X COPY -H "Destination: test/goodby.txt" -H "Content-Type: text/html; charset=UTF-8" -H "X-Auth-Token: $token"
curl -i "$publicURL/test/hello.txt" -X PUT -H "X-Copy-From: /test/hello.txt" -H "Content-Length: 0" -H "X-Auth-Token: $token"
Python
response = requests.put(
url=osurl+":6780/swift/v1/"+account+"/test/goodby.txt",
headers={"x-auth-token": token_id, "X-Copy-From": "test/hello.txt", "Content-Length": "0"}
)
DELETE
(object silmek için)
curl
curl -i "$publicURL/test/goodby.txt" -X DELETE -H "X-Auth-Token: $token"
Python
response = requests.delete(
url=osurl+":6780/swift/v1/"+account+"/test/goodby.txt",
headers={"X-Auth-Token": token_id}
)
print(response.headers)
HEAD
(object metadataları görmek için)
curl
curl -i "$publicURL/test/hello.txt" -I -H "X-Auth-Token: $token"
Python
response = requests.head(
url=osurl+":6780/swift/v1/"+account+"/test/hello.txt",
headers={"X-Auth-Token": token_id}
)
print(response.headers)
POST
(object metadataları oluşturmak, güncellemek ve silmek için)
X-Object-Meta-{name} şablonu kullanılır {name} ibaresi yerine eklenmek istenen metadata parametresi eklenir.
Oluşturmak için;
curl
curl -i "$publicURL/test/hello.txt" -X POST -H "X-Auth-Token: $token" -H "X-Object-Meta-Book: MobyDick" -H "X-Object-Meta-Subject: Literature"
Python
response = requests.post(
url=osurl+":6780/swift/v1/"+account+"/test/hello.txt",
headers={"X-Auth-Token": token_id,"X-Object-Meta-Book": "MobyDick","X-Object-Meta-Subject": "Literature"}
)
Güncellemek için;
curl
curl -i "$publicURL/test/hello.txt" -X POST -H "X-Auth-Token: $token" -H "X-Object-Meta-Subject: AmericanLiterature"
Python
response = requests.post(
url=osurl+":6780/swift/v1/"+account+"/test/hello.txt",
headers={"X-Auth-Token": token_id,"X-Object-Meta-Subject": "AmericanLiterature"}
)
Silmek için;
curl
curl -i "$publicURL/test/hello.txt" -X POST -H "X-Auth-Token: $token" -H "X-Remove-Object-Meta-Book: x" -H “X-Remove-Object-Meta-Subject: x”
Python
response = requests.post(
url=osurl+":6780/swift/v1/"+account+"/test/hello.txt",
headers={"X-Auth-Token": token_id,"X-Remove-Object-Meta-Book": "x","X-Remove-Object-Meta-Subject": "x"}
)
S3 Protokolü Kullanılarak SkyAtlas API;
İlk olarak CLI üzerinden erişim sağlanarak s3 protokolü ile erişim sağlamak amacıyla credentials oluşturulur.
openstack --os-interface public ec2 credentials create
+------------+-----------------------------------------------------------+
| Field | Value |
+------------+-----------------------------------------------------------+
| access | 8be009d585bd4284b17af25c3c9030ba |
| links | {'self': 'https://panel.skyatlas.cloud:5000/v3/users/5afd0a74627642fa896a945ba91116f4/credentials/OS-EC2/8be009d585bd4284b17af25c3c9030ba'} |
| project_id | 46b92468aef14027abd2173ee4f92736 |
| secret | 079ea90f01c1470c88c88e0d3667286b |
| trust_id | None |
| user_id | 5afd0a74627642fa896a945ba91116f4 |
+------------+-----------------------------------------------------------+
Python
import boto
import boto.s3.connection
access_key = '3636545c19334404b7e583ffa31273de'
secret_key = '917c360ac74c4f96889b12f46b0f4u15'
conn = boto.connect_s3(
aws_access_key_id = access_key,
aws_secret_access_key = secret_key,
host = 'panel.skyatlas.cloud',
port=6780,
is_secure=False, # uncomment if you are not using ssl
calling_format = boto.s3.connection.OrdinaryCallingFormat(),
)
for bucket in conn.get_all_buckets():
print("{name}\t{created}".format(
name = bucket.name,
created = bucket.creation_date,
))
bucket = conn.create_bucket('my-new-bucket')
for key in bucket.list():
print("{name}\t{size}\t{modified}".format(
name = key.name,
size = key.size,
modified = key.last_modified,
))
bucket = conn.get_bucket(bucket_name="my-new-bucket")
key = bucket.new_key('hello.txt')
key.set_contents_from_string('Hello World!')