gcsblob

package
v0.9.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 15, 2019 License: Apache-2.0 Imports: 17 Imported by: 247

Documentation

Overview

Package gcsblob provides a blob implementation that uses GCS. Use OpenBucket to construct a *blob.Bucket.

Open URLs

For blob.Open URLs, gcsblob registers for the scheme "gs"; URLs start with "gs://".

The URL's Host is used as the bucket name. The following query options are supported:

  • cred_path: Sets path to the Google credentials file. If unset, default credentials are loaded. See https://cloud.google.com/docs/authentication/production.
  • access_id: Sets Options.GoogleAccessID.
  • private_key_path: Sets path to a private key, which is read and used to set Options.PrivateKey.

Example URL:

gs://mybucket

As

gcsblob exposes the following types for As:

  • Bucket: *storage.Client
  • Error: *googleapi.Error
  • ListObject: storage.ObjectAttrs
  • ListOptions.BeforeList: *storage.Query
  • Reader: storage.Reader
  • Attributes: storage.ObjectAttrs
  • WriterOptions.BeforeWrite: *storage.Writer
Example
package main

import (
	"context"
	"fmt"
	"log"

	"gocloud.dev/blob/gcsblob"
	"gocloud.dev/gcp"
	"golang.org/x/oauth2/google"
)

// jsonCreds is a fake GCP JSON credentials file.
const jsonCreds = `
{
  "type": "service_account",
  "project_id": "my-project-id"
}
`

func main() {
	ctx := context.Background()

	// Get GCP credentials.
	// Here we use a fake JSON credentials file, but you could also use
	// gcp.DefaultCredentials(ctx) to use the default GCP credentials from
	// the environment.
	// See https://cloud.google.com/docs/authentication/production
	// for more info on alternatives.
	creds, err := google.CredentialsFromJSON(ctx, []byte(jsonCreds))
	if err != nil {
		log.Fatal(err)
	}

	// Create an HTTP client.
	// This example uses the default HTTP transport and the credentials created
	// above.
	client, err := gcp.NewHTTPClient(gcp.DefaultTransport(), gcp.CredentialsTokenSource(creds))
	if err != nil {
		return
	}

	// Create a *blob.Bucket.
	b, err := gcsblob.OpenBucket(ctx, client, "my-bucket", nil)
	if err != nil {
		log.Fatal(err)
	}
	_, err = b.ReadAll(ctx, "my-key")
	if err != nil {
		// This is expected due to the fake credentials we used above.
		fmt.Println("ReadAll failed due to invalid credentials")
	}

}
Output:

ReadAll failed due to invalid credentials
Example (Open)
package main

import (
	"context"

	"gocloud.dev/blob"
)

func main() {
	_, _ = blob.Open(context.Background(), "gs://my-bucket")

}

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func OpenBucket

func OpenBucket(ctx context.Context, client *gcp.HTTPClient, bucketName string, opts *Options) (*blob.Bucket, error)

OpenBucket returns a *blob.Bucket backed by GCS. See the package documentation for an example.

Types

type Options

type Options struct {
	// GoogleAccessID represents the authorizer for SignedURL.
	// Required to use SignedURL.
	// See https://godoc.org/cloud.google.com/go/storage#SignedURLOptions.
	GoogleAccessID string

	// PrivateKey is the Google service account private key.
	// Exactly one of PrivateKey or SignBytes must be non-nil to use SignedURL.
	// See https://godoc.org/cloud.google.com/go/storage#SignedURLOptions.
	PrivateKey []byte

	// SignBytes is a function for implementing custom signing.
	// Exactly one of PrivateKey or SignBytes must be non-nil to use SignedURL.
	// See https://godoc.org/cloud.google.com/go/storage#SignedURLOptions.
	SignBytes func([]byte) ([]byte, error)
}

Options sets options for constructing a *blob.Bucket backed by GCS.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL