Hustle’s Account Level S3 Exports provide clients their Hustle data in a convenient format that must be accessed programmatically via Amazon Web Services Simple Storage Service, or S3 for short. To see what data is included in the exports, see our Hustle Data Dictionary.
Hustle will create the AWS S3 bucket, where a designated user, which the client provides, can expect read-only access to gzipped JSON-formatted files of their Hustle Data which updates once a day (at 0500 UTC).
Note: With the release of Hustle Account Level Exports, Hustle will no longer maintain support for organization level S3 exports.
- How do I request Account Level S3 Exports?
- Setting up Hustle Account Level S3 Exports
- Accessing your data
- How is my account data secured?
How do I request Account Level S3 Exports?
These exports aren’t a fit for everyone, so please contact your Client Success Manager to see if Hustle’s Account Level S3 Exports are right for you. Please note:
- The exports are JSON file formatted (CSV files are not supported).
- A working knowledge of AWS and command line is required.
- An AWS Account is required.
Once you’ve connected with your Client Success Manager, they will connect you to support for set-up.
Setting up Hustle Account Level S3 Exports
The following will be requested to set up your Hustle Account Level S3 Exports:
- Contact name: to inform of any changes to the exports
- Contact email: to inform of any changes to the exports
- Hustle Account Name: (from your Hustle account in the hustle product)
- AWS IAM Account ID:<arn_aws_iam::############>
- AWS IAM user name: <aws_iam_user:username>
Note: We request the format of the username be “<hustle-account-name>-hustle-s3”
Accessing your data
Once your Hustle Account Level S3 Export bucket has been created, the support team will provide the information required to access the data.
To get started you’ll need:
- The IAM username that was shared with Hustle to create your S3 bucket.
- The account-hash provided to you by Hustle.
- Only the user provided to Hustle will be able to access the bucket.
- The account-hash is Base32 encoded (all lowercase a-z, only using digits 2-7).
To access your data, you must use the AWS command line with the following S3 URI formatting:
In that S3 URI:
- account_hash is the base32 encoded account id.
- org_id is the organization id (provided by Hustle in the product https://admin.hustle.com/o/<org_id>)
- table is the table name (Action, Agent, Goal, Lead, etc...)
Use the following command to see if the bucket exists:
aws s3api head-bucket --bucket hustle-account-export-<account_hash>
- If there is no output, the bucket exists.
- If the output is ”An error occurred (404) when calling the HeadBucket operation: Not Found”, the bucket doesn’t exist.
If the bucket doesn’t exist:
- The specified credentials are not being used (IAM User, IAM Account ID, Hustle Account Hash).
- The process to publish the bucket hasn’t run yet. (wait 12 hours).
Use the following command to list the contents of the bucket:
aws s3 ls s3://hustle-account-export-<account_hash>/
Use the following command to list the contents of an org subdirectory:
aws s3 ls s3://hustle-account-export-<account_hash>/<org_id>/
You'll find several subdirectories, also known as AWS folders, with gzip'd json files for each organization that map to tables in Hustle’s Data Dictionary. The objects are stored in keys that have the organization id as a prefix. The structure looks like this:
How is my account data secured?
Hustle uses AWS S3 server side encryption (SSE) with the AES256 encryption algorithm which automatically encrypts data before being written to disk and decrypts it after being read from disk when retrieving objects. Rest assured your account data is secured at every point of the export!
What if I can’t see the bucket?
Verify the AWS IAM user you provided to Hustle is the one you’re using to access the bucket.
Note: User policies must match bucket policies so users can complete get/list requests.
Additionally, verify the bucket account-hash is correct in Base32 encoding (all lowercase a-z, only using digits 2-7).
What if my bucket is empty?
It’s not likely that an empty bucket exists. If the bucket doesn’t exist, the job hasn’t run yet. If the bucket exists the data will be there and overwritten every 12 hours.
Since the job to publish the data only runs once a day, if it hasn’t been 24 hours since the bucket was setup, it’s possible the job hasn’t run yet.
You can check if the bucket exists on the command line by running:
`aws s3 ls s3://hustle-account-export-<account_hash>/`
How do I change users on an account level export?
It’s recommended to create a dedicated AWS IAM user and rotate the keys when you want to revoke access. User access permissions will not be changed once the bucket is provisioned.