Frequently Asked Questions

This page provides some more information on questions you may have (or may not even realize you have!).

Can I use S3 and Swift simultaneously/with the same container/bucket/objects?

Absolutely! While we don't recommend switching between protocols frequently (moreso to avoid things becoming a little confusing rather than any technical reason), the majority of operations you perform via one protocol are directly reflected via the other protocol. The author finds Swift a little easier/more simple, but S3 offers a more advanced ACL/policy system. The majority of clients that support both should abstract most of the differences away regardless.

As an example, if you mark an object as public/world-readable in Swift, it will be publicly available via the URL format https://<zone>.swift.netfire.com/v1/<tenant>/<container>/<object name>, it will instantly also be available via the public/unauthenticated S3 URL https://<zone>.s3.netfire.com/<tenant>:<bucket>/<object name> (and, unlike presigned URLs, will not expire).

The <zone>, <tenant>, and <object name> values are the exact same value for both URLs. The <container> and <bucket> values are the exact same for both as well, the protocols just use different terminology.

What URLs should I use for world-readable/public objects?

While the same object should have the same permissions, reasonably the same attributes, the same content, etc. across both protocols, which URL you use depends on your personal preference.

🚧

...Except for presigned/temp URLs.

Note that presigned URLs (S3)/temp URLs (Swift) must be used according to the protocol they were generated for.

This is what an S3 presigned URL looks like:
https://<bucket>.<zone>.s3.netfire.com/<object_name>?AWSAccessKeyId=<your_access_key>&Expires=<unix_epoch_timestamp>&Signature=<sig> (where <sig> is an RFC 4648 base64url-encoded binary signature)

And this is what a Swift temp URL looks like :
https://<zone>.swift.netfire.com/v1/AUTH_<tenant>/<container>/<object name>?temp_url_sig=<sig>&temp_url_expires=<unix_epoch_timestamp> (where <sig> is a SHA256 checksum of an HMAC-SHA1 signature of the method + expiration + URI path signed by the temp URL key).

Why can't I create an empty directory in Cloud Storage?

Because directories don't actually exist! They'll be "created" as part of an object's name, and "disappear" once no more objects share that common prefix in their name. As Gob Bluth would say, "It's an illusion, Michael."

Why are bytes rounded up in usage statistics?

In the S3 usage information request and the Swift account status request, 1024005 bytes (/Usage/TotalBytes/text() in S3 usage response body, X-Account-Bytes-Used header in Swift response) is rounded up to 1044480 bytes (1020 KiB) because it is aligned to the nearest minimum size measurable by the quota system in NetFire Cloud Storage due to how data chunking works.

What does -1 mean in S3 usage limits?

A -1 means "unlimited". Some values specify an unlimited quota as 0, others specify it as -1, and others may leave the value out altogether.