Docs / Strand / connectors/gcp-storage
Google Cloud Storage
Direction: Read / Write | Type: gcp.storage
Google Cloud Storage connector for uploading and downloading objects from Cloud Storage buckets.
Required Permissions
The service account must have the following IAM permissions (or predefined roles):
| Operation | Required Permissions | Predefined Role |
|---|---|---|
upload |
storage.objects.create |
Storage Object Creator |
download |
storage.objects.get |
Storage Object Viewer |
| Both | storage.objects.create, storage.objects.get |
Storage Object Admin |
Tip: Grant roles at the bucket level for least privilege rather than at the project level.
Operations
| Operation | Direction | Description |
|---|---|---|
upload |
Write | Upload data to a Cloud Storage bucket |
download |
Read | Read an object's contents into the workflow as JSON |
Info
The download operation reads object content into the node's output payload as JSON. It does not download or save files to disk.
Connector Configuration
| Field | Required | Default | Description |
|---|---|---|---|
| Authentication Type | No | api_key |
api_key for explicit credentials, role to use Application Default Credentials (ADC) |
| Project ID | Yes | - | Google Cloud project ID |
| Credentials JSON | Conditional | - | Service account JSON credentials (encrypted). Required when Authentication Type is api_key |
| Bucket Name | No | - | Default bucket name (can be overridden at node level) |
Role-Based Authentication
When using role authentication, the connector uses Application Default Credentials (ADC) from the host environment. No explicit service account JSON is needed.
Node Configuration
| Field | Required | Description |
|---|---|---|
| Operation | Yes | upload or download |
| Bucket Name | No | Bucket name (overrides connector default) |
| Blob Name | Depends | Object name/path. Auto-generated for uploads if not specified. Required for downloads. |
Output
upload
json
{
"success": true,
"status": "uploaded",
"data": {
"bucket": "my-bucket",
"blob_name": "path/to/file.json"
},
"service": "gcp.storage",
"operation": "upload"
}
download
json
{
"success": true,
"status": "downloaded",
"data": {
"bucket": "my-bucket",
"blob_name": "path/to/file.json",
"content": {"your": "data"}
},
"service": "gcp.storage",
"operation": "download"
}
Example
Connector Setup:
json
{
"project_id": "my-gcp-project",
"credentials_json": "{...service account JSON...}",
"bucket_name": "workflow-data"
}
Connector Setup (role-based):
json
{
"auth_type": "role",
"project_id": "my-gcp-project",
"bucket_name": "workflow-data"
}
Node Configuration (upload):
- Operation:
upload - Blob Name:
events/{{ payload.id }}.json
Tendrl