# Presign S3 object PUT

Canonical URL: https://docs.fuse.init.inc/integrations/aws/actions/s3.objects.presign_put

Create a time-limited PUT URL for one object key (1 byte–100 MiB). Optional content type and precomputed SHA-256 are signed into required headers. PUT overwrites an existing key; the URL is reusable until expiry. Signing does not prove permission. Requires s3:PutObject. Excluded from MCP.

Action ID: `s3.objects.presign_put`
Provider: AWS (`aws`)
Contract version: 1

## Risk and exposure

- Risk: Write
- Idempotency: Safe — Safe to retry without coordination; repeats do not create additional side effects.
- Availability: Default
- Exposure: REST, SDK
- MCP hints: readOnly=false, destructive=false, idempotent=true, openWorld=true

## Required scopes

- `s3:PutObject`

## Input schema fields

- `bucket`
- `key`
- `content_length_bytes`
- `region`
- `expires_in_seconds`
- `content_type`
- `checksum_sha256_base64`

## Output schema fields

- `url`
- `method`
- `expires_at`
- `required_headers`
- `required_headers.content-length`
- `required_headers.content-type`
- `required_headers.x-amz-checksum-sha256`

Provider overview: https://docs.fuse.init.inc/integrations/aws
Actions index: https://docs.fuse.init.inc/integrations/aws/actions
Exact canonical JSON contract: https://docs.fuse.init.inc/api/catalog/v1/providers/aws/actions/s3.objects.presign_put
Deployment-effective discovery: https://api.fuse.init.inc/v1/tenants/%7Btenant_id%7D/providers/aws/actions
