juicedata/juicefs · error

storj: access grant is required (pass via --access-key)

Error message

storj: access grant is required (pass via --access-key)

What it means

newStorj requires a Storj access grant string but received an empty one. Validation guard: unlike S3-style backends, Storj authenticates with a serialized access grant; it must be supplied via the --access-key option before any bucket operation.

Source

Thrown at pkg/object/storj.go:347

				continue
			}
			pending = append(pending, &PendingPart{
				Key:      item.Key,
				UploadID: item.UploadID,
				Created:  item.System.Created,
			})
		}
		return iter.Err()
	})
	if err != nil {
		return nil, "", err
	}
	return pending, "", nil
}

func newStorj(endpoint, accessGrant, _, _ string) (ObjectStorage, error) {
	if accessGrant == "" {
		return nil, fmt.Errorf("storj: access grant is required (pass via --access-key)")
	}
	access, err := uplink.ParseAccess(accessGrant)
	if err != nil {
		return nil, fmt.Errorf("storj: parse access grant: %w", err)
	}
	bucket := strings.Trim(strings.TrimPrefix(endpoint, "storj://"), "/")
	if bucket == "" {
		return nil, fmt.Errorf("storj: bucket name is required (set via --bucket)")
	}

	cfg := uplink.Config{UserAgent: UserAgent}

	ctx := context.Background()
	project, err := cfg.OpenProject(ctx, access)
	if err != nil {
		return nil, fmt.Errorf("storj: open project: %w", err)
	}
	return &storjClient{project: project, bucket: bucket}, nil

View on GitHub (pinned to c9a67b23e8)

Solutions

  1. Pass the Storj access grant via --access-key when creating the storage
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at pkg/object/storj.go:347 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of juicedata/juicefs@c9a67b23e8 (2026-09-06). Data as JSON: /api/errors/aac3bd2639cd19e9. Report an issue: GitHub.