Object Storage Service
This service is used for storing files into any amazon s3 or google cloud compatible services
Register the service into your main.go
. You need to provide function that init the provider and list of buckets
registry.ServiceProviderOSS(oss.NewAmazonOSS, oss.Namespaces{"products": oss.BucketPublic})
1
and you should register the entity OSSBucketCounterEntity
into the ORM
Also, you should put your credentials and other configs in config/hitrix.yml
S3 example:
oss:
amazon_s3:
endpoint: "https://somestorage.com" # set to "" if you're using https://s3.amazonaws.com
access_key_id: ENV[S3_ACCESS_KEY_ID]
secret_access_key: ENV[S3_SECRET_ACCESS_KEY_ID]
disable_ssl: false
region: us-east-1
buckets:
public: # config for public bucket
name: bucket-name # bucket name
cdn_url: "https://somesite.com/{{.StorageKey}}/" # Available variables is: .StorageKey (Namespace is part of StorageKey)
private: # config for private bucket
name: bucket-name-private # bucket name
local: "http://127.0.0.1/{{.StorageKey}}" # Will output "http://127.0.0.1/product/1.jpeg"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
Google example:
In your config folder you should put the .oss.json config file that you have from google Your config file should looks like that:
{
"type": "...",
"project_id": "...",
"private_key_id": "...",
"private_key": "...",
"client_email": "...",
"client_id": "...",
"auth_uri": "...",
"token_uri": "...",
"auth_provider_x509_cert_url": "...",
"client_x509_cert_url": "..."
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
The last thing you need to set in domain that gonna be used for the static files. You can setup the domain in hitrix.yaml config file like this:
oss:
domain: myapp.com
google:
anyvar: 1
buckets:
public: # config for public bucket
name: bucket-name # bucket name
cdn_url: "https://somesite.com/{{.StorageKey}}/" # Available variables are: .Namespace, .CounterID, and, .StorageKey
private: # config for private bucket
name: bucket-name-private # bucket name
local: "http://127.0.0.1/{{.Namespace}}/{{.StorageKey}}/{{.CounterID}}" # Will output "http://127.0.0.1/product/1.jpeg/1"
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
Access the service:
service.DI().OSService()
1