关于 encore-go-secret
为 Encore Go 项目说明如何声明和使用加密、按环境管理的密钥,适合需要在应用中读取 API 密钥或 Webhook 密钥的开发者。还介绍环境设置与本地覆盖方式。
主要功能
- 01以结构体字段声明密钥
- 02按环境设置密钥值
- 03通过本地文件覆盖密钥
- 04使用密钥验证 Webhook 签名
适用场景
- 01为不同部署环境配置 API 密钥
- 02在本地开发中提供密钥覆盖值
- 03验证 Webhook 请求签名
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ encoredev/ skills --skill encore-go-secret安装后在 Claude Code 中输入/encore-go-secret确认已加载。
详细介绍
Encore Go 密钥
说明
密钥是由 Encore 管理的加密环境级值。将它们声明为包级 secrets 结构体,Encore 会读取字段名称,并在运行时为每个字段解析相应的值。
package email
var secrets struct {
SendGridAPIKey string
SMTPPassword string
}
func sendEmail() error {
apiKey := secrets.SendGridAPIKey
// Use the secret...
return nil
}
密钥名称在整个应用中全局唯一——无论哪个包声明了 SendGridAPIKey,它解析到的值都相同。
设置值
# Set per environment type
encore secret set --type prod SendGridAPIKey
encore secret set --type dev SendGridAPIKey
encore secret set --type local SendGridAPIKey
环境类型:production(别名 prod)、development(别名 dev)、preview(别名 pr)、local。
本地覆盖
如需在本地开发时不通过 encore secret set 设置密钥,请在仓库根目录创建 .secrets.local.cue 文件(并将其加入 gitignore):
SendGridAPIKey: "SG.local-test-key"
GitHubAPIToken: "ghp_local_..."
常见用法模式
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.
指南
- 将密钥声明为包级
secrets结构体,而不是单独调用secret(...)。 - 字段名称必须与通过
encore secret set设置的密钥名称完全一致。 - 使用
encore secret set --type <env>为不同环境设置不同的值。 - 切勿提交密钥值;请使用
.secrets.local.cue进行本地覆盖,并将其加入 gitignore。 - 关于 Webhook 签名密钥的具体说明,另请参阅
encore-go-webhook技能。
评论
支持 Markdown