Hetzner Cloud
Create and delete Hetzner Cloud servers/load balancers, manage snapshots, and interact with Hetzner Object Storage via the S3-compatible API
Actions
Section titled “Actions”Instructions
Section titled “Instructions”API Token: Create a token in Hetzner Cloud Console → Project → Security → API Tokens. Use Read & Write scope.
Object Storage (optional): To use S3 components, go to Object Storage in the Hetzner Cloud Console and create S3 credentials (Access Key + Secret Key). Set the region to match your bucket location (e.g. fsn1 or nbg1).
Create Bucket
Section titled “Create Bucket”Component key: hetzner.createBucket
Creates a new bucket in Hetzner Object Storage using the S3-compatible API.
Requirements
Section titled “Requirements”S3 credentials (Access Key ID, Secret Access Key, and Region) must be configured on the Hetzner integration.
Configuration
Section titled “Configuration”- Bucket: The name of the bucket to create (supports expressions).
Output
Section titled “Output”Emits the bucket name, region, and S3 endpoint on the default channel.
Example Output
Section titled “Example Output”{ "data": { "bucket": "my-artifacts", "endpoint": "https://fsn1.your-objectstorage.com/my-artifacts", "region": "fsn1" }, "timestamp": "2024-01-15T10:30:00Z", "type": "hetzner.bucket.created"}Create Load Balancer
Section titled “Create Load Balancer”Component key: hetzner.createLoadBalancer
The Create Load Balancer component creates a load balancer in Hetzner Cloud.
How It Works
Section titled “How It Works”- Creates a load balancer with the specified name, type, location, and algorithm via the Hetzner API
- Emits the created load balancer details on the default output channel
Configuration
Section titled “Configuration”- Name: The name for the new load balancer (supports expressions)
- Type: The load balancer type (e.g. lb11, lb21, lb31)
- Location: The location where the load balancer will be created
- Algorithm: The load balancing algorithm — Round Robin (default) or Least Connections
Example Output
Section titled “Example Output”{ "data": { "id": "12345", "name": "my-load-balancer", "status": "running" }, "timestamp": "2024-01-15T10:30:00Z", "type": "hetzner.load_balancer.created"}Create Server
Section titled “Create Server”Component key: hetzner.createServer
The Create Server component creates a new server in Hetzner Cloud and waits for the create action to complete.
How It Works
Section titled “How It Works”- Creates a server with the given name, server type, image (system image or snapshot), and optional location/SSH keys/user data
- Polls the Hetzner API until the create action finishes
- Emits the server details on the default output when ready. If creation fails, the execution errors.
Configuration
Section titled “Configuration”- Name: Server name (supports expressions)
- Server type: e.g. cx11, cpx11, cax11
- Image: System image or snapshot image ID
- Location (optional): e.g. fsn1, nbg1, hel1
- SSH keys (optional): List of SSH key names or IDs
- Firewall (optional): Attach an existing firewall to the server
- User data (optional): Cloud-init user data
Example Output
Section titled “Example Output”{ "data": { "created": "2024-01-15T10:30:00+00:00", "id": 42, "name": "my-server", "publicIp": "1.2.3.4", "status": "running" }, "timestamp": "2024-01-15T10:30:00Z", "type": "hetzner.server.created"}Create Snapshot
Section titled “Create Snapshot”Component key: hetzner.createSnapshot
The Create Snapshot component creates a snapshot image from an existing Hetzner Cloud server and waits for completion.
How It Works
Section titled “How It Works”- Calls the Hetzner API to create a snapshot from the selected server
- Polls the action until snapshot creation finishes
- Emits snapshot details (including image ID) on success. If creation fails, the execution errors.
Configuration
Section titled “Configuration”- Server: Existing server to snapshot
- Snapshot name (optional): Snapshot description/name in Hetzner Cloud
Example Output
Section titled “Example Output”{ "data": { "actionId": "12345", "imageId": 67890, "imageType": "snapshot", "serverId": "42", "snapshotName": "workflow-snapshot" }, "timestamp": "2024-01-15T10:30:00Z", "type": "hetzner.snapshot.created"}Delete Bucket
Section titled “Delete Bucket”Component key: hetzner.deleteBucket
Deletes a bucket from Hetzner Object Storage using the S3-compatible API.
Requirements
Section titled “Requirements”S3 credentials (Access Key ID, Secret Access Key, and Region) must be configured on the Hetzner integration. The bucket must be empty before it can be deleted.
Configuration
Section titled “Configuration”- Bucket: The bucket to delete (dropdown or expression).
Output
Section titled “Output”Emits the deleted bucket name on the default channel.
Example Output
Section titled “Example Output”{ "data": { "bucket": "my-artifacts" }, "timestamp": "2024-01-15T10:30:00Z", "type": "hetzner.bucket.deleted"}Delete Load Balancer
Section titled “Delete Load Balancer”Component key: hetzner.deleteLoadBalancer
The Delete Load Balancer component deletes a load balancer in Hetzner Cloud.
How It Works
Section titled “How It Works”- Deletes the selected load balancer via the Hetzner API
- Emits on the default output when the load balancer is deleted. If deletion fails, the execution errors.
Example Output
Section titled “Example Output”{ "data": { "loadBalancerId": "12345" }, "timestamp": "2024-01-15T10:30:00Z", "type": "hetzner.load_balancer.deleted"}Delete Object
Section titled “Delete Object”Component key: hetzner.deleteObject
Deletes an object from a Hetzner Object Storage bucket using the S3-compatible API.
Requirements
Section titled “Requirements”S3 credentials (Access Key ID, Secret Access Key, and Region) must be configured on the Hetzner integration.
Configuration
Section titled “Configuration”- Bucket: The bucket containing the object (dropdown or expression).
- Key: The object key to delete (supports expressions).
Output
Section titled “Output”Emits the bucket and key on the default channel.
Example Output
Section titled “Example Output”{ "data": { "bucket": "my-artifacts", "key": "releases/v1.0.0/app.tar.gz" }, "timestamp": "2024-01-15T10:30:00Z", "type": "hetzner.object.deleted"}Delete Server
Section titled “Delete Server”Component key: hetzner.deleteServer
The Delete Server component deletes a server in Hetzner Cloud and waits for the delete action to complete.
How It Works
Section titled “How It Works”- Deletes the selected server via the Hetzner API
- Polls the API until the delete action finishes
- Emits on the default output when the server is deleted. If deletion fails, the execution errors.
Example Output
Section titled “Example Output”{ "data": { "actionId": 123, "serverId": 42 }, "timestamp": "2024-01-15T10:30:00Z", "type": "hetzner.server.deleted"}Delete Snapshot
Section titled “Delete Snapshot”Component key: hetzner.deleteSnapshot
The Delete Snapshot component deletes a snapshot image in Hetzner Cloud.
How It Works
Section titled “How It Works”- Deletes the selected snapshot via the Hetzner API
- Emits on the default output when the snapshot is deleted. If deletion fails, the execution errors.
Example Output
Section titled “Example Output”{ "data": { "imageId": "67890" }, "timestamp": "2024-01-15T10:30:00Z", "type": "hetzner.snapshot.deleted"}List Objects
Section titled “List Objects”Component key: hetzner.listObjects
Lists objects in a Hetzner Object Storage bucket using the S3-compatible API.
Requirements
Section titled “Requirements”S3 credentials (Access Key ID, Secret Access Key, and Region) must be configured on the Hetzner integration.
Configuration
Section titled “Configuration”- Bucket: The bucket to list (dropdown or expression).
- Prefix (optional): Filter objects by key prefix (supports expressions). Example:
artifacts/ - Max Keys (optional): Maximum number of objects to return. Defaults to 100.
Output
Section titled “Output”Emits the bucket, prefix, an array of objects (each with key, size, lastModified, etag), count, and a truncated flag on the default channel. When truncated is true, more objects exist beyond maxKeys; narrow the prefix or increase Max Keys to see them.
Example Output
Section titled “Example Output”{ "data": { "bucket": "my-artifacts", "count": 2, "objects": [ { "etag": "\"d41d8cd98f00b204e9800998ecf8427e\"", "key": "releases/v1.2.3/app.tar.gz", "lastModified": "2024-03-15T10:30:00.000Z", "size": 4096000 }, { "etag": "\"5d41402abc4b2a76b9719d911017c592\"", "key": "releases/v1.2.2/app.tar.gz", "lastModified": "2024-03-01T08:15:00.000Z", "size": 3921000 } ], "prefix": "releases/", "truncated": false }, "timestamp": "2024-03-15T10:30:00Z", "type": "hetzner.objects.listed"}Presigned URL
Section titled “Presigned URL”Component key: hetzner.presignedUrl
Generates a time-limited presigned URL for a Hetzner Object Storage object using the S3-compatible API.
Requirements
Section titled “Requirements”S3 credentials (Access Key ID, Secret Access Key, and Region) must be configured on the Hetzner integration.
Configuration
Section titled “Configuration”- Bucket: The bucket containing the object (dropdown or expression).
- Key: The object key (supports expressions).
- Expires In (optional): URL expiry in seconds. Defaults to 3600 (1 hour).
- Method: The HTTP method the presigned URL allows — GET (download) or PUT (upload).
Output
Section titled “Output”Emits the bucket, key, the presigned URL, and the expiry timestamp (ISO 8601) on the default channel.
Use cases
Section titled “Use cases”- Share a generated report or artifact with an external system via Slack/email without exposing credentials.
- Allow an external agent to upload a file to a specific bucket/key without permanent access.
Example Output
Section titled “Example Output”{ "data": { "bucket": "my-artifacts", "expiresAt": "2024-03-15T11:30:00Z", "key": "releases/v1.2.3/app.tar.gz", "url": "https://fsn1.your-objectstorage.com/my-artifacts/releases/v1.2.3/app.tar.gz?X-Amz-Algorithm=AWS4-HMAC-SHA256\u0026X-Amz-Credential=...\u0026X-Amz-Date=...\u0026X-Amz-Expires=3600\u0026X-Amz-SignedHeaders=host\u0026X-Amz-Signature=..." }, "timestamp": "2024-03-15T10:30:00Z", "type": "hetzner.object.presigned"}Upload Object
Section titled “Upload Object”Component key: hetzner.uploadObject
Uploads content to an object in a Hetzner Object Storage bucket using the S3-compatible API.
Requirements
Section titled “Requirements”S3 credentials (Access Key ID, Secret Access Key, and Region) must be configured on the Hetzner integration.
Configuration
Section titled “Configuration”- Bucket: The target bucket (dropdown or expression).
- Key: The object key / path within the bucket (supports expressions). Example:
artifacts/{{ $.run.id }}.json - Content: The content to upload (expression). Strings are uploaded as-is; objects/arrays are JSON-serialized automatically.
- Content Type (optional): MIME type for the object. Defaults to
application/octet-stream.
Output
Section titled “Output”Emits the bucket, key, size in bytes, and ETag on the default channel.
Example Output
Section titled “Example Output”{ "data": { "bucket": "my-artifacts", "etag": "\"d41d8cd98f00b204e9800998ecf8427e\"", "key": "releases/v1.2.3/app.tar.gz", "size": 4096000 }, "timestamp": "2024-03-15T10:30:00Z", "type": "hetzner.object.uploaded"}