diff --git a/src/github.com/turt2live/matrix-media-repo/cmd/media_repo/main.go b/src/github.com/turt2live/matrix-media-repo/cmd/media_repo/main.go
index f36f66289db9abe545e6e932d142da802f5c3cdf..2f4910e2ab6725caaff9659d49eebb21f22dbbbf 100644
--- a/src/github.com/turt2live/matrix-media-repo/cmd/media_repo/main.go
+++ b/src/github.com/turt2live/matrix-media-repo/cmd/media_repo/main.go
@@ -12,6 +12,7 @@ import (
 	"github.com/turt2live/matrix-media-repo/metrics"
 	"github.com/turt2live/matrix-media-repo/storage"
 	"github.com/turt2live/matrix-media-repo/storage/datastore"
+	"github.com/turt2live/matrix-media-repo/storage/datastore/ds_s3"
 )
 
 func main() {
@@ -55,7 +56,20 @@ func main() {
 		logrus.Info(fmt.Sprintf("\t%s (%s): %s", ds.Type, ds.DatastoreId, ds.Uri))
 
 		if ds.Type == "s3" {
+			conf, err := datastore.GetDatastoreConfig(ds)
+			if err != nil {
+				continue
+			}
 
+			s3, err := ds_s3.GetOrCreateS3Datastore(ds.DatastoreId, conf)
+			if err != nil {
+				continue
+			}
+
+			err = s3.EnsureBucketExists()
+			if err != nil {
+				logrus.Warn("\t\tBucket does not exist!")
+			}
 		}
 	}
 
diff --git a/src/github.com/turt2live/matrix-media-repo/storage/datastore/ds_s3/s3_store.go b/src/github.com/turt2live/matrix-media-repo/storage/datastore/ds_s3/s3_store.go
index 8690de717119f783cbfbe128bd14ee2a306757c0..f02ad753b44ce3927c8f476112bf5e2e40e2c569 100644
--- a/src/github.com/turt2live/matrix-media-repo/storage/datastore/ds_s3/s3_store.go
+++ b/src/github.com/turt2live/matrix-media-repo/storage/datastore/ds_s3/s3_store.go
@@ -57,6 +57,17 @@ func GetOrCreateS3Datastore(dsId string, conf config.DatastoreConfig) (*s3Datast
 	return s3ds, nil
 }
 
+func (s *s3Datastore) EnsureBucketExists() error {
+	found, err := s.client.BucketExists(s.bucket)
+	if err != nil {
+		return err
+	}
+	if !found {
+		return errors.New("bucket not found")
+	}
+	return nil
+}
+
 func (s *s3Datastore) UploadFile(file io.ReadCloser, ctx context.Context, log *logrus.Entry) (*types.ObjectInfo, error) {
 	objectName, err := util.GenerateRandomString(512)
 	if err != nil {