All Projects → martide → arc_gcs

martide / arc_gcs

Licence: Apache-2.0 License
Provides an Arc backend for Google Cloud Storage

Programming Languages

elixir
2628 projects

Projects that are alternatives of or similar to arc gcs

Flydrive
☁️ Flexible and Fluent framework-agnostic driver based system to manage storage in Node.js
Stars: ✭ 275 (+472.92%)
Mutual labels:  storage, google-cloud-storage
Mc
MinIO Client is a replacement for ls, cp, mkdir, diff and rsync commands for filesystems and object storage.
Stars: ✭ 1,962 (+3987.5%)
Mutual labels:  storage, google-cloud-storage
Csi Gcs
Kubernetes CSI driver for Google Cloud Storage
Stars: ✭ 44 (-8.33%)
Mutual labels:  storage, google-cloud-storage
Flysystem Google Cloud Storage
Flysystem Adapter for Google Cloud Storage
Stars: ✭ 237 (+393.75%)
Mutual labels:  google-cloud-storage, google-cloud
storage-abstraction
Provides an abstraction layer for interacting with a storage; the storage can be local or in the cloud.
Stars: ✭ 36 (-25%)
Mutual labels:  storage, google-cloud
Php Ffmpeg Video Streaming
📼 Package media content for online streaming(DASH and HLS) using FFmpeg
Stars: ✭ 246 (+412.5%)
Mutual labels:  google-cloud-storage, google-cloud
Fog Google
Fog for Google Cloud Platform
Stars: ✭ 83 (+72.92%)
Mutual labels:  storage, google-cloud
Laravel Google Cloud Storage
A Google Cloud Storage filesystem for Laravel
Stars: ✭ 415 (+764.58%)
Mutual labels:  google-cloud-storage, google-cloud
go-bqloader
bqloader is a simple ETL framework to load data from Cloud Storage into BigQuery.
Stars: ✭ 16 (-66.67%)
Mutual labels:  google-cloud-storage, google-cloud
ob bulkstash
Bulk Stash is a docker rclone service to sync, or copy, files between different storage services. For example, you can copy files either to or from a remote storage services like Amazon S3 to Google Cloud Storage, or locally from your laptop to a remote storage.
Stars: ✭ 113 (+135.42%)
Mutual labels:  google-cloud-storage, google-cloud
Google Cloud Cpp
C++ Client Libraries for Google Cloud Services
Stars: ✭ 233 (+385.42%)
Mutual labels:  google-cloud-storage, google-cloud
bazel-cache
Minimal cloud oriented Bazel gRPC cache
Stars: ✭ 33 (-31.25%)
Mutual labels:  google-cloud-storage, google-cloud
Kubernetes Nexus
Run Sonatype Nexus Repository Manager OSS on top of Kubernetes (GKE). Includes instructions for automated backups (GCS) and day-to-day usage.
Stars: ✭ 122 (+154.17%)
Mutual labels:  google-cloud-storage, google-cloud
benji
📁 This library is a Scala reactive DSL for object storage (e.g. S3/Amazon, S3/CEPH, Google Cloud Storage).
Stars: ✭ 18 (-62.5%)
Mutual labels:  storage, google-cloud-storage
Berglas
A tool for managing secrets on Google Cloud
Stars: ✭ 959 (+1897.92%)
Mutual labels:  google-cloud-storage, google-cloud
Thanos
Highly available Prometheus setup with long term storage capabilities. A CNCF Incubating project.
Stars: ✭ 9,820 (+20358.33%)
Mutual labels:  storage, google-cloud-storage
clj-gcloud-storage
Clojure wrapper for google-cloud-storage Java client.
Stars: ✭ 20 (-58.33%)
Mutual labels:  google-cloud-storage, google-cloud
gcp-storage-emulator
Local emulator for Google Cloud Storage
Stars: ✭ 43 (-10.42%)
Mutual labels:  storage, google-cloud-storage
server
The ViUR application development framework - legacy version 2.x for Python 2.7
Stars: ✭ 12 (-75%)
Mutual labels:  google-cloud-storage, google-cloud
DTC
DTC is a high performance Distributed Table Cache system designed by JD.com that offering hotspot data cache for databases in order to reduce pressure of database and improve QPS.
Stars: ✭ 21 (-56.25%)
Mutual labels:  storage

Arc Google Cloud Storage

Elixir Coverage Status

Arc GCS Provides an Arc storage back-end for Google Cloud Storage.

Installation

Add the latest stable release to your mix.exs file:

defp deps do
  [
    {:arc_gcs, "~> 0.2"}
  ]
end

Then run mix deps.get in your shell to fetch the dependencies.

Configuration

config :arc,
  storage: Arc.Storage.GCS,
  bucket: "gcs-bucket-name"

config :goth,
  json: "/path/to/json" |> Path.expand |> File.read!

Custom Token Generation

By default, the credentials provided to Goth will be used to generate tokens. If you have multiple sets of credentials in Goth or otherwise need more control over token generation, you can define your own module:

defmodule MyCredentials do
  @behaviour Arc.Storage.GCS.TokenFetcher

  @impl Arc.Storage.GCS.TokenFetcher
  def get_token(scopes) when is_list(scopes), do: get_token(Enum.join(scopes, " "))

  @impl Arc.Storage.GCS.TokenFetcher
  def get_token(scope) when is_binary(scope) do
    {:ok, token} = Goth.Token.for_scope({"[email protected]", scope})
    token.token
  end
end

And configure it to use this new module instead of the default token generation:

config :arc,
  storage: Arc.Storage.GCS,
  bucket: "gcs-bucket-name",
  token_fetcher: MyCredentials

Tests

To run the tests you need to set the following

  • ARC_TEST_BUCKET - e.g gcs-bucket-name
  • GOOGLE_CREDENTIAL - your JSON credential from Google
  • Finally mix test

Notes

Basic functionality from Arc including

  1. Store with ACL
  2. Delete
  3. Generate URL and sign URL

License

Copyright 2017-2020 Martide Limited

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].