Bring Your Own Storage: AWS S3
Store your extraction artifacts in your own AWS S3 bucket for complete data sovereignty and compliance requirements.Custom storage is available for Enterprise customers. Email support@trypulse.ai to enable this feature.
Overview
Pulse uses IAM role assumption for secure cross-account access to your S3 bucket. This approach:- No long-lived credentials - We never store your AWS access keys
- Temporary access - Credentials are refreshed automatically
- Confused deputy protection - External ID prevents unauthorized access
- Full audit trail - All access is logged in your AWS CloudTrail
Architecture
Setup Steps
Step 1: Create an S3 Bucket
Create a new S3 bucket in your AWS account to store extraction artifacts.- Enable versioning for data protection
- Enable server-side encryption (SSE-S3 or SSE-KMS)
- Configure lifecycle policies as needed
Step 2: Create an IAM Role
Create an IAM role that Pulse can assume to access your bucket. Trust Policy:Step 3: Configure in Pulse Platform
- Navigate to Settings > Storage in the Pulse Platform
- Select Amazon S3 as your storage provider
-
Enter the following details:
- IAM Role ARN:
arn:aws:iam::123456789012:role/PulseStorageRole - S3 Bucket Name:
my-company-pulse-data - AWS Region:
us-east-1 - Base Path (optional):
extractions/- prefix for all stored objects
- IAM Role ARN:
- Click Save Configuration
Step 4: Test the Connection
Click Test Connection to verify that Pulse can access your bucket. The test will:- Assume the IAM role using the External ID
- List objects in your bucket to verify permissions
- Report success or any configuration issues
Step 5: Enable Custom Storage
Once the connection test passes, toggle Enabled to start using your custom storage.After enabling, all new extractions will be stored in your S3 bucket. Existing extractions remain in Pulse’s default storage.
Storage Structure
Pulse organizes artifacts in your bucket using this structure:Security Best Practices
Use a dedicated bucket
Use a dedicated bucket
Create a separate bucket specifically for Pulse extractions rather than using an existing bucket with other data.
Enable encryption
Enable encryption
Use SSE-S3 or SSE-KMS encryption for data at rest:
Enable versioning
Enable versioning
Protect against accidental deletion:
Configure lifecycle policies
Configure lifecycle policies
Automatically transition or expire old extractions based on your retention requirements.
Enable CloudTrail logging
Enable CloudTrail logging
Monitor all access to your bucket through AWS CloudTrail for complete audit trails.
Troubleshooting
AccessDenied error
AccessDenied error
- Verify the IAM role ARN is correct
- Check that the External ID matches exactly:
pulse-org-{your_org_id} - Ensure the permission policy includes all required S3 actions
- Verify the bucket name in the policy matches your configuration
InvalidIdentityToken error
InvalidIdentityToken error
- The trust policy may not allow Pulse’s AWS account
- Contact support to verify the correct Pulse AWS account ID
NoSuchBucket error
NoSuchBucket error
- Verify the bucket name is spelled correctly
- Ensure the bucket is in the specified region
Reverting to Pulse Default Storage
To stop using custom storage and revert to Pulse’s managed S3:- Toggle Enabled to off
- Click Reset to Default if you want to remove the configuration entirely