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
secretsau niveau du package, et non comme des appels individuelssecret(...). - 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.cuepour les surcharges locales et ajoutez-le au gitignore. - Pour les secrets de signature de webhook en particulier, consultez aussi la skill
encore-go-webhook.