encore-go-secret

Par encoredev · skills

Gérez les clés API, les identifiants et autres secrets dans Encore Go en utilisant une struct `secrets` au niveau du package.

npx skills add https://github.com/encoredev/skills --skill encore-go-secret

Secrets Encore Go

Instructions

Les secrets sont des valeurs chiffrées et scoped par environnement, gérées par Encore. Déclarez-les comme une struct secrets au niveau du package — Encore lit les noms de champs et résout chacun à la bonne valeur au runtime.

package email

var secrets struct {
    SendGridAPIKey string
    SMTPPassword   string
}

func sendEmail() error {
    apiKey := secrets.SendGridAPIKey
    // Use the secret...
    return nil
}

Les clés de secret sont globalement uniques dans l'application — SendGridAPIKey se résout à la même valeur quel que soit le package qui la déclare.

Définir les valeurs

# Set per environment type
encore secret set --type prod SendGridAPIKey
encore secret set --type dev  SendGridAPIKey
encore secret set --type local SendGridAPIKey

Types d'environnements : production (alias prod), development (alias dev), preview (alias pr), local.

Surcharges locales

Pour le développement local sans passer par encore secret set, créez un fichier .secrets.local.cue à la racine du repo (ajoutez-le au gitignore) :

SendGridAPIKey: "SG.local-test-key"
GitHubAPIToken: "ghp_local_..."

Modèles d'utilisation courants

package github

import (
    "context"
    "net/http"
)

var secrets struct {
    GitHubAPIToken string
}

func callGitHub(ctx context.Context) error {
    req, _ := http.NewRequestWithContext(ctx, "GET", "https://api.github.com/user", nil)
    req.Header.Set("Authorization", "token "+secrets.GitHubAPIToken)
    resp, err := http.DefaultClient.Do(req)
    if err != nil {
        return err
    }
    defer resp.Body.Close()
    return nil
}
package webhooks

var secrets struct {
    StripeWebhookSecret string
}
// Verify Stripe signature using secrets.StripeWebhookSecret in a raw endpoint.

Directives

  • Déclarez les secrets comme une struct secrets au niveau du package, et non comme des appels individuels secret(...).
  • Les noms de champs doivent correspondre exactement au nom du secret défini via encore secret set.
  • Définissez des valeurs distinctes par environnement via encore secret set --type <env>.
  • Ne commitez jamais les valeurs de secret ; utilisez .secrets.local.cue pour les surcharges locales et ajoutez-le au gitignore.
  • Pour les secrets de signature de webhook en particulier, consultez aussi la skill encore-go-webhook.

Skills similaires