fix(queue-url): seed.go через gosqs.TenantQueueURL; env-override в applyEnvironmentDefaults (работает без goaws.yaml)
This commit is contained in:
+4
-8
@@ -16,6 +16,7 @@ import (
|
|||||||
"github.com/google/uuid"
|
"github.com/google/uuid"
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
|
|
||||||
|
"shared-sqs/app/gosqs"
|
||||||
"shared-sqs/app/models"
|
"shared-sqs/app/models"
|
||||||
"shared-sqs/app/tenant"
|
"shared-sqs/app/tenant"
|
||||||
)
|
)
|
||||||
@@ -82,14 +83,9 @@ func seedDemoData(store *tenant.TenantStore) {
|
|||||||
|
|
||||||
// URL и ARN формируем по тому же шаблону что gosqs/tenant_helpers.go:tenantQueueURL/tenantQueueARN
|
// URL и ARN формируем по тому же шаблону что gosqs/tenant_helpers.go:tenantQueueURL/tenantQueueARN
|
||||||
// Иначе AWS CLI получает пустой QueueUrl в ListQueues и не может работать с очередью.
|
// Иначе AWS CLI получает пустой QueueUrl в ListQueues и не может работать с очередью.
|
||||||
env := models.CurrentEnvironment
|
// URL — единый источник (gosqs.TenantQueueURL), учитывает ExternalURLBase.
|
||||||
var queueURL string
|
queueURL := gosqs.TenantQueueURL(t, q.name)
|
||||||
if env.Region != "" {
|
queueARN := "arn:aws:sqs:" + models.CurrentEnvironment.Region + ":" + t.ID + ":" + q.name
|
||||||
queueURL = "http://" + env.Region + "." + env.Host + ":" + env.Port + "/" + t.ID + "/" + q.name
|
|
||||||
} else {
|
|
||||||
queueURL = "http://" + env.Host + ":" + env.Port + "/" + t.ID + "/" + q.name
|
|
||||||
}
|
|
||||||
queueARN := "arn:aws:sqs:" + env.Region + ":" + t.ID + ":" + q.name
|
|
||||||
|
|
||||||
msgs := make([]models.SqsMessage, 0, len(q.msgs))
|
msgs := make([]models.SqsMessage, 0, len(q.msgs))
|
||||||
for _, body := range q.msgs {
|
for _, body := range q.msgs {
|
||||||
|
|||||||
+4
-5
@@ -67,11 +67,6 @@ func LoadYamlConfig(filename string, env string) []string {
|
|||||||
|
|
||||||
models.CurrentEnvironment = envs[env]
|
models.CurrentEnvironment = envs[env]
|
||||||
|
|
||||||
// Публичный адрес очередей (напр. https://sqs.sinefo.ru) — override через env.
|
|
||||||
if v := os.Getenv("SHARED_SQS_EXTERNAL_URL_BASE"); v != "" {
|
|
||||||
models.CurrentEnvironment.ExternalURLBase = v
|
|
||||||
}
|
|
||||||
|
|
||||||
if envs[env].Port != "" {
|
if envs[env].Port != "" {
|
||||||
ports = []string{envs[env].Port}
|
ports = []string{envs[env].Port}
|
||||||
}
|
}
|
||||||
@@ -148,6 +143,10 @@ func LoadYamlConfig(filename string, env string) []string {
|
|||||||
// AccountID и Host. Вызывается через defer в LoadYamlConfig, чтобы дефолты
|
// AccountID и Host. Вызывается через defer в LoadYamlConfig, чтобы дефолты
|
||||||
// устанавливались при любом раннем return (например, если конфиг не найден).
|
// устанавливались при любом раннем return (например, если конфиг не найден).
|
||||||
func applyEnvironmentDefaults() {
|
func applyEnvironmentDefaults() {
|
||||||
|
// Публичный адрес очередей — override через env (работает и когда goaws.yaml не найден).
|
||||||
|
if v := os.Getenv("SHARED_SQS_EXTERNAL_URL_BASE"); v != "" {
|
||||||
|
models.CurrentEnvironment.ExternalURLBase = v
|
||||||
|
}
|
||||||
if models.CurrentEnvironment.QueueAttributeDefaults.VisibilityTimeout <= 0 {
|
if models.CurrentEnvironment.QueueAttributeDefaults.VisibilityTimeout <= 0 {
|
||||||
models.CurrentEnvironment.QueueAttributeDefaults.VisibilityTimeout = 30
|
models.CurrentEnvironment.QueueAttributeDefaults.VisibilityTimeout = 30
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,6 +41,11 @@ return "http://" + region + "." + host + ":" + port + "/" + t.ID + "/" + queueNa
|
|||||||
return "http://" + host + ":" + port + "/" + t.ID + "/" + queueName
|
return "http://" + host + ":" + port + "/" + t.ID + "/" + queueName
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TenantQueueURL — экспортированная обёртка над tenantQueueURL (нужна app/cmd).
|
||||||
|
func TenantQueueURL(t *tenant.Tenant, queueName string) string {
|
||||||
|
return tenantQueueURL(t, queueName)
|
||||||
|
}
|
||||||
|
|
||||||
// tenantQueueARN — формирует ARN очереди для тенанта.
|
// tenantQueueARN — формирует ARN очереди для тенанта.
|
||||||
func tenantQueueARN(t *tenant.Tenant, queueName string) string {
|
func tenantQueueARN(t *tenant.Tenant, queueName string) string {
|
||||||
return "arn:aws:sqs:" + models.CurrentEnvironment.Region + ":" + t.ID + ":" + queueName
|
return "arn:aws:sqs:" + models.CurrentEnvironment.Region + ":" + t.ID + ":" + queueName
|
||||||
|
|||||||
Reference in New Issue
Block a user