Docs / Contact / connectors/aws-s3

AWS S3

Provider: aws | Service: s3 | Direction: Write

Amazon Simple Storage Service connector for writing objects to S3 buckets. In a flow, the connector writes (uploads) an object; it does not read objects back into the flow.

Required Permissions

The IAM identity used by the connector must have:

Operation Required IAM Permissions
Write object s3:PutObject
Tip: Scope permissions to specific bucket ARNs (e.g., arn:aws:s3:::my-bucket/*) to follow the principle of least privilege.

Operation

When a message reaches this connector, it writes an object to the configured bucket. The payload must supply:

Payload field Required Description
path Yes Object key/path within the bucket
content Yes Object content to upload

Connector Configuration

The connector is created with type: "cloud", provider: "aws", service_type: "s3", plus:

Field (config) Required Description
auth_type No api_key (default) or role for cross-account access. See below.
region Yes AWS region code (e.g., us-east-1). For some services the region can be derived from an ARN, but providing it is recommended.
access_key Conditional AWS access key. Required when auth_type is api_key.
secret_key Conditional AWS secret key. Required when auth_type is api_key.
bucket Yes S3 bucket name
Role-based (cross-account) authentication

Set auth_type: "role" to let Contact assume an IAM role in your AWS account via STS. Create a role that trusts the Contact service account and provide:

Field Required Description
role_arn Yes ARN of the IAM role Contact should assume
external_id No STS external ID, if your role's trust policy requires one

With role auth you do not supply access_key/secret_key.

Output

On success the flow step records:

json

{
  "status": "completed",
  "statusCode": 200,
  "data": {
    "status": "uploaded",
    "statusCode": 200,
    "method": "S3_PUT_OBJECT",
    "endpoint": "s3://my-bucket/path/to/file.json",
    "duration": 42,
    "response": { "path": "path/to/file.json", "bucket": "my-bucket" }
  }
}

Example

Connector config (API key):

json

{
  "type": "cloud",
  "provider": "aws",
  "service_type": "s3",
  "region": "us-east-1",
  "access_key": "${secrets.aws_access_key}",
  "secret_key": "${secrets.aws_secret_key}",
  "bucket": "my-data-bucket"
}

Connector config (cross-account role):

json

{
  "type": "cloud",
  "provider": "aws",
  "service_type": "s3",
  "auth_type": "role",
  "region": "us-east-1",
  "role_arn": "arn:aws:iam::123456789012:role/contact-s3-writer",
  "bucket": "my-data-bucket"
}