Skip to content

Blob operation ​

Deletes, copies, moves, tags or changes the access tier of a blob in Azure Storage. The blob comes from an incoming blob file info (Blob enumerator) or from the configuration; the file info of the resulting blob is passed on. Use it for housekeeping (archive or delete old blobs) or to move blobs between containers.

Pins ​

PinKindTypesDescription
InputinputViaducta.TypeSystem.Metadata.ViaFileInfoTriggers the operation. A ViaFileInfo whose FilePath is a blob URL selects the blob; any other input uses ContainerName/BlobName.
OutputoutputViaducta.TypeSystem.Metadata.ViaFileInfoCalled after the operation with the blob's file info: the target of a copy or move, otherwise the blob itself.
NoDatano-data outputsame as inputCalled with the input record when the container or blob does not exist (HTTP 404).

Configuration ​

FieldTypeDefaultDescription
Authenticationdropdown: 0 ConnectionString, 1 EntraId, 2 ServicePrincipal, 3 SasToken0How to sign in to the storage account.
ConnectionStringstringStorage connection string. Required when Authentication is 0.
AccountUrlstringBlob endpoint, for example https://myaccount.blob.core.windows.net, no query. Required when Authentication is 1, 2 or 3.
TenantIdstringEntra ID tenant id. Required for 2, optional for 1.
ClientIdstring2: client id of the app registration (required). 1: client id of a user-assigned managed identity (optional).
ClientSecretpasswordClient secret of the app registration. Required for 2.
SasTokenpasswordAccount or container SAS token (a leading ? is ignored). Required for 3.
Operationdropdown: 0 Delete, 1 Copy, 2 Move, 3 Tag, 4 SetTier0What to do with the blob.
ContainerNamestringContainer of the blob, used when the input is not a blob ViaFileInfo.
BlobNamestringBlob name including virtual folders, used when the input is not a blob ViaFileInfo.
TargetContainerstringCopy/Move: target container (must exist); empty keeps the blob's container.
TargetNamePatternstring%SN%Copy/Move: target blob name. %SN% source blob name with virtual folders, %FN% its last part (after the last /), %BN% the last part without extension, %TS% yyyyMMdd-HHmmss, %DATE% yyyyMMdd, %TIME% HHmmss (UTC).
ExistingBlobOptiondropdown: 0 Fail, 1 Overwrite, 2 Rename0Copy/Move when the target exists: fail (HTTP 409), replace it, or write to <name>_yyyyMMdd_HHmmss<ext> (plus _1, _2, ... if that exists too).
Tagstringviaducta-processedTag: index tag to add, name or name=value; without a value the UTC time is the value. Other tags are kept.
AccessTierdropdown: 1 Hot, 2 Cool, 3 Cold, 4 Archive2SetTier: the new access tier.

Behaviour ​

  • The storage client is created at flow start; missing sign-in fields, an unknown operation, Tag without a name or SetTier without a tier fail the start. 1 EntraId uses the default Azure credential (managed identity of the host, workload identity, environment variables or Azure CLI); the identity needs Storage Blob Data Contributor (Storage Blob Data Owner for Tag).
  • Per input the blob is chosen (from the ViaFileInfo blob URL or ContainerName/BlobName; with neither the input fails) and its properties are read. A 404 calls NoData with the input record.
  • 0 Delete deletes the blob with its snapshots. 1 Copy copies it within the account (server-side) to <TargetContainer or the same container>/<TargetNamePattern>. 2 Move copies, then deletes the source. 3 Tag adds Tag to the blob's index tags. 4 SetTier sets the access tier of a block blob.
  • Delete, Copy and Move only act on the version whose properties were read: a blob changed meanwhile fails with HTTP 412.
  • Output is called with a ViaFileInfo (FileName = blob name, FilePath = blob URL, size and dates): of the target for Copy and Move, of the blob otherwise (for Delete the blob that was deleted). Storage errors raise an error.

Notes ​

  • Copy and move stay within the storage account of the sign-in; the target container must exist.
  • Setting Archive takes the blob offline; setting Hot/Cool/Cold on an archived blob starts a rehydration that takes hours, reads fail until it is done.
  • With 3 SasToken the token needs read, write, delete (and tag) permissions as the operation requires.
  • Store secrets as expression settings (=Secrets.AzureStorage).

Example ​

json
{ "Authentication": 1, "AccountUrl": "https://myaccount.blob.core.windows.net", "Operation": 2, "TargetContainer": "archive", "TargetNamePattern": "%DATE%/%FN%", "ExistingBlobOption": 2 }

Timer → Blob enumerator (OrderBy 1, MinAgeMinutes 1440) → Blob operation → Log

Viaducta documentation