N8N Tools - S3 Enhanced icon

N8N Tools - S3 Enhanced

Enhanced S3 operations with presigned URLs, multipart upload, and advanced features

Overview

The node "N8N Tools - S3 Enhanced" provides a comprehensive set of operations to interact with S3-compatible object storage services. It supports advanced features such as generating presigned URLs and POSTs for secure temporary access, multipart uploads for large files, bucket and object management, ACL and tagging configurations, lifecycle policies, replication, encryption, website hosting settings, and more.

This node is beneficial in scenarios where you need to automate or integrate complex S3 workflows within n8n, such as:

  • Uploading files programmatically to an S3 bucket.
  • Generating temporary URLs for clients to upload or download objects without exposing credentials.
  • Managing bucket policies, CORS, lifecycle rules, and versioning.
  • Handling multipart uploads for large files efficiently.
  • Querying object content using SQL expressions.
  • Configuring bucket notifications, replication, analytics, and inventory.

Practical example:
You can use this node to upload a file to a specific bucket and key, then generate a presigned URL that allows a client to download the file securely for a limited time without requiring AWS credentials.


Properties

Name Meaning
Bucket Name Name of the S3 bucket where the operation will be performed.
Object Key Complete path/key of the object inside the bucket (e.g., folder/file.pdf).
File Data The data of the file to upload; can be binary data or base64 encoded string.

For the Upload Object operation specifically, these properties are used:

Name Meaning
Bucket Name Target S3 bucket name to upload the object.
Object Key Full key/path under which the file will be stored in the bucket.
File Data Content of the file to upload, provided as a string either in base64 or raw binary form.

Output

The output JSON structure for the Upload Object operation includes:

  • bucket: The name of the bucket where the object was uploaded.
  • key: The key/path of the uploaded object.
  • etag: The ETag identifier returned by S3 for the uploaded object (useful for validation).
  • versionId: Version ID if versioning is enabled on the bucket.
  • size: Size in bytes of the uploaded file data.

Example output JSON snippet:

{
  "bucket": "my-bucket-name",
  "key": "folder/file.pdf",
  "etag": "\"9b2cf535f27731c974343645a3985328\"",
  "versionId": "null",
  "size": 12345
}

If the node supports binary data output (not explicitly shown for upload), it would typically represent the file content or metadata accordingly.


Dependencies

  • Requires an S3-compatible API key credential with access rights to perform the selected operations.
  • Uses AWS SDK v3 modules internally (@aws-sdk/client-s3, @aws-sdk/s3-request-presigner, @aws-sdk/s3-presigned-post).
  • Node configuration must include valid credentials and optionally region, endpoint, session token, and forcePathStyle flag.
  • Network connectivity to the specified S3 endpoint is required.

Troubleshooting

Common Issues

  • Invalid file data format: If the file data is not properly base64 encoded or UTF-8 string, the upload will fail with an error indicating invalid file data format.
  • Access denied errors: Occur if the provided credentials lack permissions for the requested operation.
  • Connection errors: May happen if the endpoint URL is incorrect or network issues prevent reaching the S3 service.
  • JSON parsing errors: For operations requiring JSON input (like lifecycle rules, tags, policies), invalid JSON will cause errors.

Error Messages and Resolutions

  • "Invalid file data format": Ensure the file data is correctly base64 encoded or a valid UTF-8 string.
  • "Access denied. Check your credentials and permissions.": Verify the API key has sufficient permissions for the operation.
  • "Cannot connect to endpoint. Check your endpoint URL and network connection.": Confirm the endpoint URL is correct and accessible from your environment.
  • "Invalid JSON format": Validate JSON inputs using a JSON validator before providing them to the node.

Links and References


If you need details on other operations or resources, feel free to ask!

Discussion