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 |
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:
{
"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):
{
"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):
{
"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"
}
Tendrl