tessl install tessl/golang-github-com--azure--azure-sdk-for-go--sdk--storage--azblob@1.6.0Azure Blob Storage SDK for Go providing comprehensive blob storage operations including uploads, downloads, container management, and advanced features like leases and SAS generation
The container client manages container-level operations including lifecycle, properties, metadata, access policies, and blob listing.
import "github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/container"type Client struct {
// contains filtered or unexported fields
}// Create with Azure AD credential
func NewClient(containerURL string, cred azcore.TokenCredential, options *ClientOptions) (*Client, error)
// Create with shared key credential
func NewClientWithSharedKeyCredential(containerURL string, cred *SharedKeyCredential, options *ClientOptions) (*Client, error)
// Create from connection string
func NewClientFromConnectionString(connectionString string, containerName string, options *ClientOptions) (*Client, error)
// Create without credential (for SAS URLs)
func NewClientWithNoCredential(containerURL string, options *ClientOptions) (*Client, error)func (c *Client) URL() stringReturns the container URL.
func (c *Client) Create(ctx context.Context, options *CreateOptions) (CreateResponse, error)Creates a container.
Options:
type CreateOptions struct {
Access *PublicAccessType
Metadata map[string]*string
CPKScopeInfo *CPKScopeInfo
}func (c *Client) Delete(ctx context.Context, options *DeleteOptions) (DeleteResponse, error)Deletes a container.
func (c *Client) Restore(ctx context.Context, deletedContainerVersion string, options *RestoreOptions) (RestoreResponse, error)Restores a soft-deleted container.
func (c *Client) GetProperties(ctx context.Context, o *GetPropertiesOptions) (GetPropertiesResponse, error)Gets container properties and metadata.
func (c *Client) SetMetadata(ctx context.Context, o *SetMetadataOptions) (SetMetadataResponse, error)Sets container metadata.
Options:
type SetMetadataOptions struct {
Metadata map[string]*string
AccessConditions *AccessConditions
}func (c *Client) GetAccessPolicy(ctx context.Context, o *GetAccessPolicyOptions) (GetAccessPolicyResponse, error)Gets the container's access policy (public access level and stored access policies).
func (c *Client) SetAccessPolicy(ctx context.Context, o *SetAccessPolicyOptions) (SetAccessPolicyResponse, error)Sets the container's access policy.
Options:
type SetAccessPolicyOptions struct {
Access *PublicAccessType
AccessConditions *AccessConditions
ContainerACL []*SignedIdentifier
}
type SignedIdentifier struct {
ID *string
AccessPolicy *AccessPolicy
}
type AccessPolicy struct {
Expiry *time.Time
Permission *string
Start *time.Time
}func (c *Client) GetAccountInfo(ctx context.Context, o *GetAccountInfoOptions) (GetAccountInfoResponse, error)Gets account information.
func (c *Client) NewListBlobsFlatPager(o *ListBlobsFlatOptions) *runtime.Pager[ListBlobsFlatResponse]Lists blobs in the container (flat listing).
Options:
type ListBlobsFlatOptions struct {
Include ListBlobsInclude
Marker *string
MaxResults *int32
Prefix *string
}
type ListBlobsInclude struct {
Snapshots bool
Versions bool
UncommittedBlobs bool
Copy bool
Deleted bool
Tags bool
LegalHold bool
ImmutabilityPolicy bool
DeletedWithVersions bool
Permissions bool
}Example:
pager := containerClient.NewListBlobsFlatPager(&container.ListBlobsFlatOptions{
Include: container.ListBlobsInclude{
Metadata: true,
Tags: true,
},
Prefix: to.Ptr("documents/"),
})
for pager.More() {
page, err := pager.NextPage(ctx)
if err != nil {
// handle error
}
for _, blob := range page.Segment.BlobItems {
fmt.Printf("Blob: %s\n", *blob.Name)
}
}func (c *Client) NewListBlobsHierarchyPager(delimiter string, o *ListBlobsHierarchyOptions) *runtime.Pager[ListBlobsHierarchyResponse]Lists blobs with hierarchy using a delimiter (typically "/").
Options:
type ListBlobsHierarchyOptions struct {
Include ListBlobsInclude
Marker *string
MaxResults *int32
Prefix *string
}func (c *Client) FilterBlobs(ctx context.Context, where string, o *FilterBlobsOptions) (FilterBlobsResponse, error)Filters blobs by tags within this container.
func (c *Client) NewBlobClient(blobName string) *blob.ClientCreates a generic blob client.
func (c *Client) NewBlockBlobClient(blobName string) *blockblob.ClientCreates a block blob client.
func (c *Client) NewAppendBlobClient(blobName string) *appendblob.ClientCreates an append blob client.
func (c *Client) NewPageBlobClient(blobName string) *pageblob.ClientCreates a page blob client.
func (c *Client) NewBatchBuilder() (*BatchBuilder, error)Creates a batch builder for operations within this container.
func (c *Client) SubmitBatch(ctx context.Context, bb *BatchBuilder, options *SubmitBatchOptions) (SubmitBatchResponse, error)Submits a batch of operations.
type BatchBuilder struct {
// contains filtered or unexported fields
}
func (bb *BatchBuilder) Delete(blobName string, options *BatchDeleteOptions) error
func (bb *BatchBuilder) SetTier(blobName string, accessTier blob.AccessTier, options *BatchSetTierOptions) errorfunc (c *Client) GetSASURL(permissions sas.ContainerPermissions, expiry time.Time, o *GetSASURLOptions) (string, error)Generates a container-level SAS URL. Requires SharedKeyCredential.
Example:
import (
"time"
"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/sas"
)
permissions := sas.ContainerPermissions{
Read: true,
Write: true,
List: true,
Create: true,
}
expiry := time.Now().Add(24 * time.Hour)
sasURL, err := containerClient.GetSASURL(permissions, expiry, nil)type BlobFlatListSegment struct {
BlobItems []*BlobItem
}
type BlobHierarchyListSegment struct {
BlobItems []*BlobItem
BlobPrefixes []*BlobPrefix
}
type BlobItem struct {
Name *string
Deleted *bool
Snapshot *string
VersionID *string
IsCurrentVersion *bool
Properties *BlobProperties
Metadata map[string]*string
BlobTags *BlobTags
HasVersionsOnly *bool
OrMetadata map[string]*string
}
type BlobProperties struct {
CreationTime *time.Time
LastModified *time.Time
ETag *azcore.ETag
ContentLength *int64
ContentType *string
ContentEncoding *string
ContentLanguage *string
ContentMD5 []byte
ContentDisposition *string
CacheControl *string
BlobSequenceNumber *int64
BlobType *BlobType
AccessTier *AccessTier
AccessTierInferred *bool
LeaseStatus *LeaseStatusType
LeaseState *LeaseStateType
LeaseDuration *LeaseDurationType
ServerEncrypted *bool
EncryptionKeySHA256 *string
EncryptionScope *string
CopyID *string
CopySource *string
CopyStatus *CopyStatusType
CopyProgress *string
CopyCompletionTime *time.Time
TagCount *int64
ArchiveStatus *ArchiveStatus
DeletedTime *time.Time
RemainingRetentionDays *int32
ImmutabilityPolicyExpiresOn *time.Time
ImmutabilityPolicyMode *ImmutabilityPolicyMode
LegalHold *bool
}
type BlobPrefix struct {
Name *string
}
type BlobTag struct {
Key *string
Value *string
}
type BlobTags struct {
BlobTagSet []*BlobTag
}type AccessConditions struct {
ModifiedAccessConditions *ModifiedAccessConditions
LeaseAccessConditions *LeaseAccessConditions
}
type ModifiedAccessConditions struct {
IfMatch *azcore.ETag
IfNoneMatch *azcore.ETag
IfModifiedSince *time.Time
IfUnmodifiedSince *time.Time
IfTags *string
}
type LeaseAccessConditions struct {
LeaseID *string
}type CPKScopeInfo struct {
EncryptionScope *string
}type AccessTier string
const (
AccessTierArchive AccessTier = "Archive"
AccessTierCool AccessTier = "Cool"
AccessTierCold AccessTier = "Cold"
AccessTierHot AccessTier = "Hot"
AccessTierP4 AccessTier = "P4"
AccessTierP6 AccessTier = "P6"
AccessTierP10 AccessTier = "P10"
AccessTierP15 AccessTier = "P15"
AccessTierP20 AccessTier = "P20"
AccessTierP30 AccessTier = "P30"
AccessTierP40 AccessTier = "P40"
AccessTierP50 AccessTier = "P50"
AccessTierP60 AccessTier = "P60"
AccessTierP70 AccessTier = "P70"
AccessTierP80 AccessTier = "P80"
AccessTierPremium AccessTier = "Premium"
)type BlobType string
const (
BlobTypeBlockBlob BlobType = "BlockBlob"
BlobTypePageBlob BlobType = "PageBlob"
BlobTypeAppendBlob BlobType = "AppendBlob"
)type CopyStatusType string
const (
CopyStatusTypePending CopyStatusType = "pending"
CopyStatusTypeSuccess CopyStatusType = "success"
CopyStatusTypeAborted CopyStatusType = "aborted"
CopyStatusTypeFailed CopyStatusType = "failed"
)type ArchiveStatus string
const (
ArchiveStatusRehydratePendingToCool ArchiveStatus = "rehydrate-pending-to-cool"
ArchiveStatusRehydratePendingToHot ArchiveStatus = "rehydrate-pending-to-hot"
)type PublicAccessType string
const (
PublicAccessTypeBlob PublicAccessType = "blob"
PublicAccessTypeContainer PublicAccessType = "container"
)type ClientOptions struct {
Telemetry policy.TelemetryOptions
Transport policy.Transporter
Retry policy.RetryOptions
PerCallPolicies []policy.Policy
PerRetryPolicies []policy.Policy
InsecureAllowCredentialWithHTTP bool
DisableRPRegistration bool
}type SharedKeyCredential = service.SharedKeyCredential