diff --git a/Makefile b/Makefile index 64abb83..2e56dc2 100644 --- a/Makefile +++ b/Makefile @@ -3,7 +3,7 @@ # Registry: Docker Hub (naeel/shared-sqs) IMAGE_REPO=naeel/shared-sqs -VERSION=v0.1.31 +VERSION=v0.1.32 LDFLAGS=-X shared-sqs/app/models.Version=$(VERSION) BINARY=shared-sqs diff --git a/app/router/router.go b/app/router/router.go index 78f1323..cbf4046 100644 --- a/app/router/router.go +++ b/app/router/router.go @@ -45,6 +45,11 @@ func New(tenantStore *tenant.TenantStore, adminToken string) http.Handler { // /metrics — Prometheus endpoint для Victoria Metrics scrape r.Handle("/metrics", promhttp.Handler()).Methods("GET") + // Страница примеров команд — публично + r.HandleFunc("/examples", func(w http.ResponseWriter, req *http.Request) { + ui.ExamplesHandler(models.Version).ServeHTTP(w, req) + }).Methods("GET") + // Админ-консоль — статика. Регистрируем ДО admin subrouter, // иначе PathPrefix("/admin") с bearer-auth перехватит GET /admin. r.HandleFunc("/admin", func(w http.ResponseWriter, req *http.Request) { diff --git a/app/ui/embed.go b/app/ui/embed.go index e4351cb..aa8fe9f 100644 --- a/app/ui/embed.go +++ b/app/ui/embed.go @@ -10,7 +10,7 @@ import ( "strings" ) -//go:embed index.html info.html admin.html static +//go:embed index.html info.html admin.html examples.html static var content embed.FS // Handler — возвращает http.Handler, раздающий встроенный index.html @@ -46,6 +46,20 @@ func AdminHandler(version string) http.Handler { }) } +// ExamplesHandler — страница примеров команд (GET /examples) с подстановкой версии +func ExamplesHandler(version string) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + body, err := content.ReadFile("examples.html") + if err != nil { + http.Error(w, "examples page unavailable", http.StatusInternalServerError) + return + } + html := strings.ReplaceAll(string(body), "{{VERSION}}", version) + w.Header().Set("Content-Type", "text/html; charset=utf-8") + _, _ = w.Write([]byte(html)) + }) +} + // StaticHandler — раздаёт /static/* (логотип, favicon) для публичных страниц func StaticHandler() http.Handler { sub, err := fs.Sub(content, "static") diff --git a/app/ui/examples.html b/app/ui/examples.html new file mode 100644 index 0000000..6b4d041 --- /dev/null +++ b/app/ui/examples.html @@ -0,0 +1,228 @@ + + + +
+ + +Пошаговое подключение к SQS API через AWS CLI. Ключи бери в консоли: /ui → кнопка Credentials.
+AПеременные окружения (действуют в текущей сессии терминала):
+export AWS_ACCESS_KEY_ID=<Access Key>
+export AWS_SECRET_ACCESS_KEY=<Secret Key>
+ BФайл ~/.aws/credentials (постоянно, для всех команд):
+[sqs]
+aws_access_key_id = <Access Key>
+aws_secret_access_key = <Secret Key>
+ Для способа B добавляй --profile sqs к каждой команде.
aws sqs create-queue --queue-name demo \
+ --endpoint-url https://sqs.containerk8s.dev.nubes.ru \
+ --region us-east-1 --profile sqs
+ В ответе будет QueueUrl — используй его в следующих командах.
aws sqs send-message \
+ --queue-url <QueueUrl> \
+ --message-body "hello nubes" \
+ --endpoint-url https://sqs.containerk8s.dev.nubes.ru \
+ --region us-east-1 --profile sqs
+ aws sqs receive-message \
+ --queue-url <QueueUrl> \
+ --endpoint-url https://sqs.containerk8s.dev.nubes.ru \
+ --region us-east-1 --profile sqs
+
+aws sqs delete-message \
+ --queue-url <QueueUrl> \
+ --receipt-handle <ReceiptHandle из ответа receive-message> \
+ --endpoint-url https://sqs.containerk8s.dev.nubes.ru \
+ --region us-east-1 --profile sqs
+ Все команды отправляются на POST https://sqs.containerk8s.dev.nubes.ru/ с параметром Action (AWS CLI делает это сам).
| Action | Описание |
|---|---|
CreateQueue | Создать очередь |
ListQueues | Список очередей |
GetQueueUrl | URL очереди по имени |
GetQueueAttributes | Атрибуты очереди |
SetQueueAttributes | Изменить атрибуты очереди |
SendMessage | Отправить сообщение |
SendMessageBatch | Отправить до 10 сообщений разом |
ReceiveMessage | Получить сообщения (long polling до 20с) |
DeleteMessage | Удалить сообщение |
DeleteMessageBatch | Удалить до 10 сообщений разом |
ChangeMessageVisibility | Изменить таймаут видимости сообщения |
ChangeMessageVisibilityBatch | Пакетно изменить таймаут видимости |
PurgeQueue | Очистить очередь |
DeleteQueue | Удалить очередь |
TagQueue | Назначить теги очереди |
UntagQueue | Снять теги с очереди |
ListQueueTags | Список тегов очереди |
Multi-tenant очередь, совместимая с AWS SQS API. Каждый тенант получает изолированное пространство очередей.
+Очередь, совместимая с AWS SQS API. Твои очереди и сообщения — в одном месте, доступ по протоколу AWS.
+Возьми API-токен в панели Nubes и вставь его на странице входа.
+ Открыть консоль → +В консоли нажми кнопку Credentials — там будут Access Key и Secret Key. Это и есть креды для подключения.
Укажи ключи в AWS CLI/SDK и работай с очередями как с обычным AWS SQS.
+export AWS_ACCESS_KEY_ID=<Access Key>export AWS_SECRET_ACCESS_KEY=<Secret Key>aws sqs list-queues --endpoint-url https://sqs.containerk8s.dev.nubes.ru --region us-east-1
+ Все примеры команд и способ через файл ~/.aws/credentials — на отдельной странице:
Все команды отправляются на корень POST https://sqs.containerk8s.dev.nubes.ru/ с параметром Action.
| Action | Описание |
|---|---|
CreateQueue | Создать очередь |
ListQueues | Список очередей тенанта |
GetQueueUrl | URL очереди по имени |
GetQueueAttributes | Атрибуты очереди |
SetQueueAttributes | Изменить атрибуты очереди |
SendMessage | Отправить сообщение |
SendMessageBatch | Отправить до 10 сообщений разом |
ReceiveMessage | Получить сообщения (long polling до 20с) |
DeleteMessage | Удалить сообщение |
DeleteMessageBatch | Удалить до 10 сообщений разом |
ChangeMessageVisibility | Изменить таймаут видимости сообщения |
ChangeMessageVisibilityBatch | Пакетно изменить таймаут видимости |
PurgeQueue | Очистить очередь |
DeleteQueue | Удалить очередь |
TagQueue | Назначить теги очереди |
UntagQueue | Снять теги с очереди |
ListQueueTags | Список тегов очереди |
Полный список команд SQS API и подробные примеры для AWS CLI — на отдельной странице с крупным шрифтом.
+export AWS_ACCESS_KEY_ID=<Access Key из /ui>
-export AWS_SECRET_ACCESS_KEY=<Secret Key из /ui>
- aws sqs create-queue --queue-name demo \
- --endpoint-url https://sqs.containerk8s.dev.nubes.ru \
- --region us-east-1
- aws sqs send-message --queue-url <QueueUrl> \
- --message-body "hello nubes" \
- --endpoint-url https://sqs.containerk8s.dev.nubes.ru \
- --region us-east-1
- aws sqs receive-message --queue-url <QueueUrl> \
- --endpoint-url https://sqs.containerk8s.dev.nubes.ru --region us-east-1
-
-aws sqs delete-message --queue-url <QueueUrl> \
- --receipt-handle <ReceiptHandle> \
- --endpoint-url https://sqs.containerk8s.dev.nubes.ru --region us-east-1
-