Docs Platform AWS storage setup

Platform AWS storage setup

For platform operators who do not use AWS every day. Use when provisioning per-tenant storage for File Cabinets and document uploads.

S3 buckets do not have access keys. You create a bucket, then a separate IAM user with an access key allowed to use that bucket only.

What you need at the end

PiecePilotBPM field
S3 bucketBucket name + Region
IAM access keyAccess key ID (AKIA…) + Secret access key
Optional KMSKey ARN or alias (File Cabinets envelope encryption)

1. Create the S3 bucket

  1. Sign in at AWS Console.
  2. Search S3 → open S3Create bucket.
SettingValue
Bucket nameGlobally unique, e.g. pilotbpm-acme-files
Regione.g. us-east-1write this down
Block Public AccessAll four options ON
Default encryptionEnable (SSE-S3 is fine)
  1. Create bucket. You have a name and region — no access key yet.

2. Create IAM policy (one bucket only)

  1. Search IAMPoliciesCreate policyJSON tab.
  2. Paste (replace YOUR-BUCKET-NAME):
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:ListBucket"],
      "Resource": "arn:aws:s3:::YOUR-BUCKET-NAME"
    },
    {
      "Effect": "Allow",
      "Action": ["s3:PutObject", "s3:GetObject", "s3:DeleteObject"],
      "Resource": "arn:aws:s3:::YOUR-BUCKET-NAME/*"
    },
    {
      "Effect": "Allow",
      "Action": ["textract:DetectDocumentText"],
      "Resource": "*"
    }
  ]
}
  1. Name it e.g. PilotBPM-Acme-S3Create policy. (Omit Textract block if not using OCR.)

Optional KMS — add kms:Encrypt, kms:Decrypt, kms:GenerateDataKey on your CMK ARN.


3. Create IAM user and access key

  1. IAMUsersCreate user (e.g. pilotbpm-acme-storage).
  2. No console access → attach the policy from step 2 → Create user.
  3. Open the user → Security credentialsAccess keysCreate access key.
  4. Choose Application running outside AWS → create.
  5. Copy Access key ID and Secret now — the secret is shown only once.

This is what PilotBPM asks for — not something on the S3 bucket page.


4. Enter in PilotBPM

Platform → StorageManage (tenant) or Bucket poolConfigure S3:

FieldValue
Use S3 backendON
EndpointBlank for AWS S3
RegionSame as bucket
Bucket nameExact S3 name
Access key ID / SecretFrom step 3

SaveTest connectionConnected.

Same settings appear under tenant Admin → Integrations → Storage.


5. Optional: KMS & Textract

On Platform → Storage → Manage for the tenant:

  • KMS — enable, paste key ARN, Test KMS.
  • Textract — enable, Use storage credentials ON, same region → Save.

Troubleshooting

ErrorFix
Access DeniedIAM policy bucket ARN typo or missing ListBucket
Wrong endpoint / region errorRegion in PilotBPM must match bucket region
NoSuchBucketBucket name typo
InvalidAccessKeyIdWrong key or deleted — create new key on IAM user
Can't find keys on S3Keys live on IAM user → Security credentials

Checklist

  • Bucket created, public access blocked
  • IAM policy scoped to one bucket
  • IAM user + access key copied
  • PilotBPM test = Connected
  • (Optional) KMS + Textract

Repository copy: docs/PLATFORM-AWS-STORAGE-SETUP.md