NeoFS S3 gateway provides API compatible with Amazon S3 cloud storage service.
Installation
go get -u github.com/nspcc-dev/neofs-s3-gw
Or you can call make to build it from the cloned repository (the binary will
end up in bin/neofs-s3-gw with authmate helper in bin/neofs-authmate).
Notable make targets:
dep Check and ensure dependencies
image Build clean docker image
dirty-image Build dirty docker image with host-built binaries
format Run all code formatters
lint Run linters
version Show current version
Or you can also use a Docker
image provided for released
(and occasionally unreleased) versions of gateway (:latest points to the
latest stable release).
Execution
Minimalistic S3 gateway setup needs:
NeoFS node(s) address (S3 gateway itself is not a NeoFS node)
Passed via -p parameter or via S3_GW_PEERS_<N>_ADDRESS and
S3_GW_PEERS_<N>_WEIGHT environment variables (gateway supports multiple
NeoFS nodes with weighted load balancing).
a wallet used to fetch key and communicate with NeoFS nodes
Passed via --wallet parameter or S3_GW_WALLET environment variable.
These two commands are functionally equivalent, they run the gate with one
backend node, some keys and otherwise default settings:
Bucket policy
support only one Principal (type AWS) per Statement. To refer all users use "AWS": "*"
AWS conditions and wildcard are not supported in resources
Only CanonicalUser (with hex encoded public key) and All Users Group are supported in ACL
Object
Method
Status
CopyObject
Supported
DeleteObject
Supported
DeleteObjects
Supported, aka DeleteMultipleObjects
GetObject
Supported
GetObjectTorrent
Unsupported, won't be
HeadObject
Supported
ListObjectParts
Unsupported
ListObjects
Supported
ListObjectsV2
Supported
PutObject
Supported (Content-MD5 option is not supported)
SelectObjectContent
Unsupported
WriteGetObjectResponse
Unsupported
ACL
Method
Status
GetObjectAcl
Supported
PutObjectAcl
Supported
Locking
Method
Status
GetObjectLegalHold
Unsupported
GetObjectLockConfiguration
Unsupported, aka GetBucketObjectLockConfig
GetObjectRetention
Unsupported
PutObjectLegalHold
Unsupported
PutObjectLockConfiguration
Unsupported, aka PutBucketObjectLockConfig
PutObjectRetention
Unsupported
Multipart
Should be supported eventually.
Method
Status
AbortMultipartUpload
Unsupported
CompleteMultipartUpload
Unsupported
CreateMultipartUpload
Unsupported, aka InitiateMultipartUpload and NewMultipartUpload
ListMultipartUploads
Unsupported
ListParts
Unsupported
UploadPart
Unsupported, aka PutObjectPart
UploadPartCopy
Unsupported, aka CopyObjectPart
Tagging
Also passed in PutObject parameters. We can support adding via PutObject
and getting via GetBucketTagging, but deleting and putting can't be
supported normally.