Files
2026-10-11 14:19:49 -04:00

60 lines
2.5 KiB
Markdown

# Amazon Lightsail
Floci exposes Amazon Lightsail through the AWS JSON 1.1 protocol:
- Endpoint: `POST /`
- Target prefix: `Lightsail_20161128.*`
- Signing name: `lightsail`
The local implementation keeps Lightsail state in Floci storage and is designed for SDK and AWS CLI compatibility on common development workflows.
## Supported local workflows
- Instances: create, get, list, start, stop, reboot, delete, state lookup, and public port management
- Disks: create, get, list, attach, detach, and delete
- Static IPs: allocate, get, list, attach, detach, and release
- Key pairs: create, import, get, list, delete, and download default key pair
- Discovery: regions, blueprints, bundles, active names, operations, and operations for resource
- Tags: tag and untag local Lightsail resources
- Node.js instances: the `nodejs` blueprint uses the multi-architecture `node:24-bookworm` current LTS image, supports the selected SSH key, and persists application state in a named volume at `/opt/lightsail/app`. The volume starts with `releases/<timestamp>` and `current`; the in-container supervisor runs `npm start` from `current`, captures stdout and stderr under `logs/`, restarts crashes with capped exponential backoff, and retains the three newest releases. Application deployment remains SSH/manual in this phase: no deployment API or console workflow is provided.
Read-only list operations for cloud-side Lightsail resource families that are not locally implemented yet return empty AWS-shaped lists. Cloud-only provisioning workflows such as container services, distributions, managed databases, load balancers, buckets, and snapshots are recognized from the AWS Lightsail API model and return an explicit `UnsupportedOperation` error instead of a custom endpoint or non-AWS response shape.
## Examples
```bash
aws --endpoint-url http://localhost:4566 lightsail get-blueprints
```
```bash
aws --endpoint-url http://localhost:4566 lightsail create-instances \
--instance-names web-a \
--availability-zone us-east-1a \
--blueprint-id ubuntu_22_04 \
--bundle-id nano_3_0
```
```bash
aws --endpoint-url http://localhost:4566 lightsail allocate-static-ip \
--static-ip-name web-ip
aws --endpoint-url http://localhost:4566 lightsail attach-static-ip \
--static-ip-name web-ip \
--instance-name web-a
```
## Persistence
Lightsail resources use `StorageFactory` and follow the global storage mode by default. Configure the service with:
```yaml
floci:
services:
lightsail:
enabled: true
storage:
services:
lightsail:
flush-interval-ms: 5000
```