60 lines
2.5 KiB
Markdown
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
|
|
```
|