You can get S3-API’s Keys from LeoFS's Manager Console.
$ telnet 127.0.0.1 10010
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
‘create-user ${USER-ID}’ command generates your s3 key.
create-user ${USER-ID}
access-key-id: 05dcba94333c7590a635
secret-access-key: c776574f3661579ceb91aa8788dfcac733b21b3a
aws-sdk’s official document is here.
$ gem install aws-sdk
Note
LeoFS’s domains are ruled by this rule. You need to set Endpoint, Port, AccessKeyId and SecretAccessKey as the follows:
## This code supports "aws-sdk v1.9.5"
require "aws-sdk"
Endpoint = "localhost"
Port = 8080
# set your s3 key
AccessKeyId = "YOUR_ACCESS_KEY_ID"
SecretAccessKey = "YOUR_SECRET_ACCESS_KEY"
class LeoFSHandler < AWS::Core::Http::NetHttpHandler
def handle(request, response)
request.port = ::Port
super
end
end
SP = AWS::Core::CredentialProviders::StaticProvider.new(
{
:access_key_id => AccessKeyId,
:secret_access_key => SecretAccessKey
})
AWS.config(
access_key_id: AccessKeyId,
secret_access_key: SecretAccessKey,
s3_endpoint: Endpoint,
http_handler: LeoFSHandler.new,
credential_provider: SP,
s3_force_path_style: true,
use_ssl: false
)
s3 = AWS::S3.new
# create bucket
s3.buckets.create("photo")
# get bucket
bucket = s3.buckets["photo"]
# create a new object
object = bucket.objects.create("image", "value")
# show objects in the bucket
bucket.objects.with_prefix("").each do |obj|
p obj
end
# retrieve an object
object = bucket.objects["image"]
# insert an object
object.write(
file: "/path/to/image.png",
content_type: "png/image"
)
image = object.read
object.delete
metadata = object.head
p metadata.to_hash
## This code supports "aws-sdk v1.9.5"
require 'aws-sdk'
Endpoint = "leofs.org"
Port = 8080
## set your s3 key
AccessKeyId = "YOUR_ACCESS_KEY_ID"
SecretAccessKey = "YOUR_SECRET_ACCESS_KEY"
class LeoFSHandler < AWS::Core::Http::NetHttpHandler
def handle(request, response)
request.port = ::Port
super
end
end
SP = AWS::Core::CredentialProviders::StaticProvider.new(
{
:access_key_id => AccessKeyId,
:secret_access_key => SecretAccessKey
})
AWS.config(
:access_key_id => 'access-key-id',
:secret_access_key => 'secret-access-key',
s3_endpoint: Endpoint,
http_handler: LeoFSHandler.new,
credential_provider: SP,
s3_force_path_style: true,
use_ssl: false
)
file_path_for_multipart_upload = '/path/to/file'
bucket = AWS::S3.new.buckets['bucket-name']
open(file_path_for_multipart_upload) do |file|
uploading_object = bucket.objects[File.basename(file.path)]
uploading_object.multipart_upload do |upload|
while !file.eof?
upload.add_part(file.read 5242880) ## 5MB ##
p('Aborted') if upload.aborted?
end
end
end
URL: SDK for Java
Note
LeoFS’s domains are ruled by this rule. You need to set ‘Proxy Host’ and ‘Proxy Port’ with ClientConfiguration class.
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.UUID;
import com.amazonaws.AmazonClientException;
import com.amazonaws.AmazonServiceException;
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.model.GetObjectRequest;
import com.amazonaws.services.s3.model.ListObjectsRequest;
import com.amazonaws.services.s3.model.PutObjectRequest;
import com.amazonaws.services.s3.model.Bucket;
import com.amazonaws.services.s3.model.S3Object;
import com.amazonaws.services.s3.model.ObjectListing;
import com.amazonaws.services.s3.model.S3ObjectSummary;
import com.amazonaws.ClientConfiguration;
import com.amazonaws.Protocol;
public class LeoFSSample {
public static void main(String[] args) throws IOException {
/* ---------------------------------------------------------
* You need to set 'Proxy host', 'Proxy port' and 'Protocol'
* --------------------------------------------------------- */
ClientConfiguration config = new ClientConfiguration();
config.setProxyHost("localhost"); // LeoFS Gateway's Host
config.setProxyPort(8080); // LeoFS Gateway's Port
config.withProtocol(Protocol.HTTP);
final String accessKeyId = "YOUR_ACCESS_KEY_ID";
final String secretAccessKey = "YOUR_SECRET_ACCESS_KEY";
AWSCredentials credentials = new BasicAWSCredentials(accessKeyId, secretAccessKey);
AmazonS3 s3 = new AmazonS3Client(credentials, config);
final String bucketName = "test-bucket-" + UUID.randomUUID();
final String key = "test-key";
try {
// Create a bucket
s3.createBucket(bucketName);
// Retrieve list of buckets
for (Bucket bucket : s3.listBuckets()) {
System.out.println("Bucket:" + bucket.getName());
}
// PUT an object into the LeoFS
s3.putObject(new PutObjectRequest(bucketName, key, createFile()));
// GET an object from the LeoFS
S3Object object = s3.getObject(new GetObjectRequest(bucketName, key));
dumpInputStream(object.getObjectContent());
// Retrieve list of objects from the LeoFS
ObjectListing objectListing =
s3.listObjects(new ListObjectsRequest().withBucketName(bucketName));
for (S3ObjectSummary objectSummary : objectListing.getObjectSummaries()) {
System.out.println(objectSummary.getKey() +
"Size:" + objectSummary.getSize());
}
// DELETE an object from the LeoFS
s3.deleteObject(bucketName, key);
// DELETE a bucket from the LeoFS
s3.deleteBucket(bucketName);
} catch (AmazonServiceException ase) {
System.out.println(ase.getMessage());
System.out.println(ase.getStatusCode());
} catch (AmazonClientException ace) {
System.out.println(ace.getMessage());
}
}
private static File createFile() throws IOException {
File file = File.createTempFile("leofs_test", ".txt");
file.deleteOnExit();
Writer writer = new OutputStreamWriter(new FileOutputStream(file));
writer.write("Hello, world!\n");
writer.close();
return file;
}
private static void dumpInputStream(InputStream input) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(input));
while (true) {
String line = reader.readLine();
if (line == null) break;
System.out.println(line);
}
}
}
git clone git://github.com/amazonwebservices/aws-sdk-for-php.git AWSSDKforPHP
Note
LeoFS’s domains are ruled by this rule.
127.0.0.1 s3.amazonaws.com
127.0.0.1 ${bucket_name}.s3.amazonaws.com # if you use create_bucket
<?php
require_once 'AWSSDKforPHP/sdk.class.php';
$s3 = new AmazonS3(array(
"key" => "YOUR ACCESS KEY ID",
"secret" => "YOUR SECRET ACCESS KEY",
));
$s3->use_ssl = false;
$s3->enable_path_style();
$bucket_name = "bucket";
$object_name = "key";
# create bucket (region is a dummy)
$bucket = $s3->create_bucket($bucket_name, AmazonS3::REGION_US_E1);
# create object
$object = $s3->create_object($bucket_name, $object_name, array("body" => "This is a new object."));
# get object
$object = $s3->get_object($bucket_name, $object_name);
print_r($object);
# get list of buckets
$buckets = $s3->get_bucket_list();
print_r($buckets);
# head
$head = $s3->get_object_headers($bucket_name, $object_name);
print_r($head);
# delete
$result = $s3->delete_object($bucket_name, $object_name);
print_r($result);
?>
sudo apt-get install php5-curl
sudo apt-get install php-pear
sudo pear channel-discover pear.amazonwebservices.com
sudo pear install aws/sdk
Note
LeoFS’s domains are ruled by this rule.
127.0.0.1 s3.amazonaws.com
127.0.0.1 ${bucket_name}.s3.amazonaws.com # if you use create_bucket
<?php
require "vendor/autoload.php";
use Aws\Common\Enum\Region;
use Aws\S3\S3Client;
$client = S3Client::factory(array(
"key" => "YOUR ACCESS KEY ID",
"secret" => "YOUR SECRET ACCESS KEY",
"region" => Region::US_EAST_1,
"scheme" => "http",
));
// list buckets
$buckets = $client->listBuckets()->toArray();
foreach($buckets as $bucket){
print_r($bucket);
}
print("\n\n");
// create bucket
$result = $client->createBucket(array(
"Bucket" => "test"
));
// PUT object
$client->putObject(array(
"Bucket" => "test",
"Key" => "key-test",
"Body" => "Hello, world!"
));
// GET object
$object = $client->getObject(array(
"Bucket" => "test",
"Key" => "key-test"
));
print($object->get("Body"));
print("\n\n");
// HEAD object
$headers = $client->headObject(array(
"Bucket" => "test",
"Key" => "key-test"
));
print_r($headers->toArray());
// DELETE object
$client->deleteObject(array(
"Bucket" => "test",
"Key" => "key-test"
));
?>
git clone https://github.com/boto/boto.git; cd boto; sudo python setup.py install
sudo easy_install boto
Note
LeoFS’s domains are ruled by this rule.
#!/usr/bin/python
# coding: utf8
from boto.s3.connection import S3Connection, OrdinaryCallingFormat
from boto.s3.bucket import Bucket
from boto.s3.key import Key
AWS_ACCESS_KEY = "YOUR_ACCESS_KEY_ID"
AWS_SECRET_ACCESS_KEY = "YOUR_SECRET_ACCESS_KEY"
conn = S3Connection(AWS_ACCESS_KEY,
AWS_SECRET_ACCESS_KEY,
host = "example.com",
port = 8080,
calling_format = OrdinaryCallingFormat(),
is_secure = False
)
# create bucket
bucket = conn.create_bucket("leofs-bucket")
# create object
s3_object = bucket.new_key("image_file")
# write
s3_object.set_contents_from_string("This is a text.")
# show buckets
for bucket in conn.get_all_buckets():
print bucket
# show S3Objects
for obj in bucket.get_all_keys():
print obj
print
# get bucket
bucket = conn.get_bucket("leofs-bucket")
print bucket
# get S3Object
s3_object = bucket.get_key("image_file")
print s3_object
# read
print s3_object.read()
# write from file
#s3_object.set_contents_from_filename("filename")
# delete S3Object
s3_object.delete()
npm install knox
Var knox = require("knox")
var client = knox.createClient({
key: "YOUR ACCESS KEY ID",
secret: "YOUR SECRET ACCESS KEY",
bucket: "bucket",
endpoint: "bucket.localhost", // ${bucket_name}.localhost
port: 8080
});
// PUT object
var string = "Hello, world!";
client.put("key", {
"Content-Length": string.length,
"Content-Type": "application/json"
}).end(string);
// HEAD object
client.headFile("key", function(err, res) {
console.log("Headers:\n", res.headers);
});
// GET object
client.getFile("key", function(err, res) {
res.on('data', function(chunk){
console.log(chunk.toString());
});
});
// DELETE object
client.deleteFile("key", function(err, res) {
console.log(res.statusCode);
});
S3FS-C is a FUSE (File System in User Space) based file system backed by Amazon S3 storage buckets. Once mounted, S3 can be used just like it was a local file system.
sudo apt-get install libfuse-dev libcurl4-openssl-dev fuse-utils
git clone https://github.com/leo-project/s3fs-c.git
cd s3fs-c
./configure
make
sudo make install
$ sudo vi /etc/hosts
## Add a LeoFS's domain ##
127.0.0.1 localhost ${BUCKET_NAME}.localhost
$ vi ~/.passwd-s3fs
## Set access-key and secret-key ##
${ACCESS_KEY}:${SECRET_KEY}
$ s3fs ${BUCKET_NAME} ${MOUNT_POINT} -o url='http://${END_POINT}:${PORT}'
Note
LeoFS’s domains are ruled by this rule.
DragonDisk is a powerful file manager for Amazon S3 Compatible Storage.
Note
LeoFS’s domains are ruled by this rule. You need to set ‘Endpoint’ and ‘Port’.
$ s3cmd --configure
Enter new values or accept defaults in brackets with Enter.
Refer to user manual for detailed description of all options.
Access key and Secret key are your identifiers for Amazon S3
Access Key: ${ACCESS_KEY}
Secret Key: ${SECRET_ACCESS_KEY}
Encryption password is used to protect your files from reading
by unauthorized persons while in transfer to S3
Encryption password:
Path to GPG program [/usr/bin/gpg]:
When using secure HTTPS protocol all communication with Amazon S3
servers is protected from 3rd party eavesdropping. This method is
slower than plain HTTP and can't be used if you're behind a proxy
Use HTTPS protocol [No]:
On some networks all internet access must go through a HTTP proxy.
Try setting it here if you can't conect to S3 directly
HTTP Proxy server name: localhost
HTTP Proxy server port [3128]: 8080
New settings:
Access Key: ${ACCESS_KEY}
Secret Key: ${SECRET_ACCESS_KEY}
Encryption password:
Path to GPG program: /usr/bin/gpg
Use HTTPS protocol: False
HTTP Proxy server name: ${ENDPOINT}
HTTP Proxy server port: ${PORT}
Test access with supplied credentials? [Y/n]
Command Support Status 1 Make bucket s3cmd mb s3://BUCKET Yes 2 Remove bucket s3cmd rb s3://BUCKET Yes 3 List objects or bucket s3cmd ls [s3://BUCKET[/PREFIX]] Yes 4 List all object in all buckets s3cmd la No 5 Put file into bucket s3cmd put FILE [FILE...] s3://BUCKET[/PREFIX] Yes 6 Get file from bucket s3cmd get s3://BUCKET/OBJECT LOCAL_FILE Yes 7 Delete file from bucket s3cmd del s3://BUCKET/OBJECT Yes 8 Synchronize a directory tree to S3 s3cmd sync LOCAL_DIR s3://BUCKET[/PREFIX]
s3://BUCKET[/PREFIX] LOCAL_DIR
Yes 9 Disk usage by buckets s3cmd du [s3://BUCKET[/PREFIX]] No 10 Get various information about Buckets or Files s3cmd info s3://BUCKET[/OBJECT] No 11 Copy object s3cmd cp s3://BUCKET1/OBJECT1 s3://BUCKET2[/OBJECT2] Yes 12 Move object s3cmd mv s3://BUCKET1/OBJECT1 s3://BUCKET2[/OBJECT2] Yes