Skip to content

Amazon S3

Built, not certified Built and tested against recorded and synthetic responses (version 1.0.0, 10 November 2026). Not yet run against the vendor's sandbox or a client environment.

Reads the objects under a bucket and prefix of Amazon S3, in place, by ETag, so agents can answer from the documents a team keeps there. Access is by an IAM role the client’s own account grants, never an access key.

CollectorAmazon S3, version 1.0.0
ReadsAmazon Web Services: Amazon S3 (the vendor's documentation)
FamilyStorage
KindFiles
Ways to connectService account
Scopes
  • Read: s3:ListBucket, s3:GetObject, sts:AssumeRole
Read onlyYes, except: [object Object]
Vendor's API can move moneyNo
Personal dataContent
Hosts it may contact*.amazonaws.com, s3.console.aws.amazon.com
Vendor API versionsAmazon S3 REST API (ListObjectsV2, GetObject), AWS STS AssumeRole
Lowest engine version0.45.0
  • Objects under the bucket (and prefix, if given): text, Markdown, CSV, PDF, Word (.docx), PowerPoint (.pptx) and Excel (.xlsx), as the folder and SharePoint collectors read them.
  • The cursor is each object’s ETag: an unchanged object is never fetched again, and one that has gone (deleted, or moved out of the prefix) is withdrawn.
  • Skipped and counted: any other format, an object over max_mb (50 by default) and a document that will not open.
  • Names starting with . and keys ending in / are ignored.
  1. In the account that owns the bucket, create an IAM role that grants s3:ListBucket on the bucket (for the prefix) and s3:GetObject on its objects, and whose trust policy lets the deployment’s identity assume it, with an external ID if you want one.
  2. In LightHouse, open Connectors, choose Amazon S3, give the bucket, prefix, region, role ARN and external ID, a label and how often to read. No access key is ever pasted, stored or sealed: the ARN and external ID are identifiers, and the trust policy is the permission.
  3. In code, add a kind: s3 source card with bucket, prefix, region, role_arn, external_id, label and requires. Without role_arn the deployment’s own identity reads the bucket, for a bucket in the same account.

s3:ListBucket on the prefix and s3:GetObject on its objects, through sts:AssumeRole. The collector only reads: it calls ListObjectsV2 and GetObject, and AssumeRole to take on the role for an hour; it never puts, copies, deletes or changes an ACL.

S3 is reached through the AWS SDK (boto3), not an HTTP client the network recorder can see, so its read-only test replaces boto3.client with a recorder and asserts that every operation is one of those three and that no put_, delete_, copy_ or create_ call appears. The manifest’s read_operations lists the STS call, which is a POST that changes nothing in the bucket.

  • Objects over max_mb (50 by default) and unsupported formats are skipped and counted.
  • bucket must be an S3 bucket name, role_arn an IAM role’s ARN, external_id 2 to 1224 letters, digits and +=,.@:/-, and region an AWS region such as eu-west-1.
  • PDFs need pdftotext in the image.
  • The assumed role’s credentials last an hour.
  • Each record links to the object in the AWS console; the console address is a link only, never contacted.
  • Object text is copied into the deployment’s corpus under the source’s label. Documents can hold personal data of any kind.
  • No access key is held. The assumed role’s temporary credentials exist in memory for the run and are never written to logs or run notes.
  • Nothing leaves the deployment: only counts reach LightHouse.
What you see What it means What to do
bucket is an S3 bucket name The bucket is not a valid S3 bucket name Use the bucket’s name, not its address
role_arn is an IAM role's ARN The role is not given as an ARN Use arn:aws:iam::<account>:role/<name>
external_id is 2 to 1224 letters, digits and +=,.@:/- The external ID has other characters Correct it
region is an AWS region, e.g. eu-west-1 The region is malformed Use a region name
AccessDenied when assuming the role The trust policy does not allow the deployment’s identity, or the external ID differs Fix the trust policy
AccessDenied on list or get The role lacks s3:ListBucket or s3:GetObject Grant them on the prefix
Read succeeded, 0 written No object’s ETag changed Nothing to do

Each entry is a run by Atlantic Agentic Labs, newest first. Only a run against the vendor’s sandbox or a client environment certifies a collector; a certification lasts six months, or less if the vendor publishes an API version the collector does not list. See How collectors are certified.

DateCollectorEngineVendor APIMethodExpires
10 November 20261.0.00.45.0Amazon S3 REST API (ListObjectsV2, GetObject); AWS STS AssumeRoleFixtures only: built, not certifiedNot applicable

From the collector’s last scan on the default branch. What each line means, and what blocks a release: Security posture.

Last scanned10 November 2026
Critical findings0
High findings0
Medium findings0
Low findings0
Info findings0
Release blockedNo
Network allow-list checkPass
Read-only behavioural testPass
SBOM (CycloneDX)Produced
Dependency licencesPass
Scannersbandit 1.9.4, semgrep 1.181.1, pip-audit 2.10.1, osv-scanner 2.7.0, cyclonedx-py 7.5.0, pip-licenses 5.5.5, gitleaks repository job aal-secrets, hosts_check tools/hosts_check.py, read-only test pytest -m read_only