Amazon S3 Fileserver Backend
This backend exposes directories in S3 buckets as Salt environments. To enable
this backend, add s3fs
to the fileserver_backend
option in the
Master config file.
fileserver_backend:
- s3fs
S3 credentials must also be set in the master config file:
s3.keyid: GKTADJGHEIQSXMKKRBJ08H
s3.key: askdjghsdfjkghWupUjasdflkdfklgjsdfjajkghs
Alternatively, if on EC2 these credentials can be automatically loaded from instance metadata.
This fileserver supports two modes of operation for the buckets:
A single bucket per environment
s3.buckets:
production:
- bucket1
- bucket2
staging:
- bucket3
- bucket4
Multiple environments per bucket
s3.buckets:
- bucket1
- bucket2
- bucket3
- bucket4
Note that bucket names must be all lowercase both in the AWS console and in
Salt, otherwise you may encounter SignatureDoesNotMatch
errors.
A multiple-environment bucket must adhere to the following root directory structure:
s3://<bucket name>/<environment>/<files>
Note
This fileserver back-end requires the use of the MD5 hashing algorithm. MD5 may not be compliant with all security policies.
salt.fileserver.s3fs.
dir_list
(load)¶Return a list of all directories on the master
salt.fileserver.s3fs.
envs
()¶Return a list of directories within the bucket that can be used as environments.
salt.fileserver.s3fs.
file_hash
(load, fnd)¶Return an MD5 file hash
salt.fileserver.s3fs.
file_list
(load)¶Return a list of all files on the file server in a specified environment
salt.fileserver.s3fs.
file_list_emptydirs
(load)¶Return a list of all empty directories on the master
salt.fileserver.s3fs.
find_file
(path, saltenv='base', env=None, **kwargs)¶Look through the buckets cache file for a match. If the field is found, it is retrieved from S3 only if its cached version is missing, or if the MD5 does not match.
salt.fileserver.s3fs.
serve_file
(load, fnd)¶Return a chunk from a file based on the data received
salt.fileserver.s3fs.
update
()¶Update the cache file for the bucket.