diff --git a/internal/certmgmt/deployers/sp_volcengine_alb.go b/internal/certmgmt/deployers/sp_volcengine_alb.go index ae306cbae..ff18c346f 100644 --- a/internal/certmgmt/deployers/sp_volcengine_alb.go +++ b/internal/certmgmt/deployers/sp_volcengine_alb.go @@ -19,6 +19,7 @@ func init() { provider, err := volcenginealb.NewDeployer(&volcenginealb.DeployerConfig{ AccessKeyId: credentials.AccessKeyId, AccessKeySecret: credentials.SecretAccessKey, + ProjectName: credentials.ProjectName, Region: xmaps.GetString(options.ProviderExtendedConfig, "region"), DeployTarget: xmaps.GetString(options.ProviderExtendedConfig, "deployTarget"), LoadbalancerId: xmaps.GetString(options.ProviderExtendedConfig, "loadbalancerId"), diff --git a/internal/certmgmt/deployers/sp_volcengine_apig.go b/internal/certmgmt/deployers/sp_volcengine_apig.go index 20d010dea..80f463d76 100644 --- a/internal/certmgmt/deployers/sp_volcengine_apig.go +++ b/internal/certmgmt/deployers/sp_volcengine_apig.go @@ -19,6 +19,7 @@ func init() { provider, err := volcengineapig.NewDeployer(&volcengineapig.DeployerConfig{ AccessKeyId: credentials.AccessKeyId, AccessKeySecret: credentials.SecretAccessKey, + ProjectName: credentials.ProjectName, Region: xmaps.GetString(options.ProviderExtendedConfig, "region"), DomainMatchPattern: xmaps.GetString(options.ProviderExtendedConfig, "domainMatchPattern"), Domain: xmaps.GetString(options.ProviderExtendedConfig, "domain"), diff --git a/internal/certmgmt/deployers/sp_volcengine_cdn.go b/internal/certmgmt/deployers/sp_volcengine_cdn.go index 843086b94..6afd4a6a2 100644 --- a/internal/certmgmt/deployers/sp_volcengine_cdn.go +++ b/internal/certmgmt/deployers/sp_volcengine_cdn.go @@ -19,6 +19,7 @@ func init() { provider, err := volcenginecdn.NewDeployer(&volcenginecdn.DeployerConfig{ AccessKeyId: credentials.AccessKeyId, AccessKeySecret: credentials.SecretAccessKey, + ProjectName: credentials.ProjectName, DomainMatchPattern: xmaps.GetString(options.ProviderExtendedConfig, "domainMatchPattern"), Domain: xmaps.GetString(options.ProviderExtendedConfig, "domain"), }) diff --git a/internal/certmgmt/deployers/sp_volcengine_certcenter.go b/internal/certmgmt/deployers/sp_volcengine_certcenter.go index ebaa0e8e1..507f5e76a 100644 --- a/internal/certmgmt/deployers/sp_volcengine_certcenter.go +++ b/internal/certmgmt/deployers/sp_volcengine_certcenter.go @@ -19,6 +19,7 @@ func init() { provider, err := volcenginecertcenter.NewDeployer(&volcenginecertcenter.DeployerConfig{ AccessKeyId: credentials.AccessKeyId, AccessKeySecret: credentials.SecretAccessKey, + ProjectName: credentials.ProjectName, Region: xmaps.GetString(options.ProviderExtendedConfig, "region"), }) return provider, err diff --git a/internal/certmgmt/deployers/sp_volcengine_clb.go b/internal/certmgmt/deployers/sp_volcengine_clb.go index 959b02197..862045e87 100644 --- a/internal/certmgmt/deployers/sp_volcengine_clb.go +++ b/internal/certmgmt/deployers/sp_volcengine_clb.go @@ -19,6 +19,7 @@ func init() { provider, err := volcengineclb.NewDeployer(&volcengineclb.DeployerConfig{ AccessKeyId: credentials.AccessKeyId, AccessKeySecret: credentials.SecretAccessKey, + ProjectName: credentials.ProjectName, Region: xmaps.GetString(options.ProviderExtendedConfig, "region"), DeployTarget: xmaps.GetString(options.ProviderExtendedConfig, "deployTarget"), LoadbalancerId: xmaps.GetString(options.ProviderExtendedConfig, "loadbalancerId"), diff --git a/internal/certmgmt/deployers/sp_volcengine_dcdn.go b/internal/certmgmt/deployers/sp_volcengine_dcdn.go index bbb516216..9216ac1de 100644 --- a/internal/certmgmt/deployers/sp_volcengine_dcdn.go +++ b/internal/certmgmt/deployers/sp_volcengine_dcdn.go @@ -19,6 +19,7 @@ func init() { provider, err := volcenginedcdn.NewDeployer(&volcenginedcdn.DeployerConfig{ AccessKeyId: credentials.AccessKeyId, AccessKeySecret: credentials.SecretAccessKey, + ProjectName: credentials.ProjectName, DomainMatchPattern: xmaps.GetString(options.ProviderExtendedConfig, "domainMatchPattern"), Domain: xmaps.GetString(options.ProviderExtendedConfig, "domain"), }) diff --git a/internal/certmgmt/deployers/sp_volcengine_imagex.go b/internal/certmgmt/deployers/sp_volcengine_imagex.go index 1e8f1b376..43bf3dab1 100644 --- a/internal/certmgmt/deployers/sp_volcengine_imagex.go +++ b/internal/certmgmt/deployers/sp_volcengine_imagex.go @@ -19,6 +19,7 @@ func init() { provider, err := volcengineimagex.NewDeployer(&volcengineimagex.DeployerConfig{ AccessKeyId: credentials.AccessKeyId, AccessKeySecret: credentials.SecretAccessKey, + ProjectName: credentials.ProjectName, Region: xmaps.GetString(options.ProviderExtendedConfig, "region"), ServiceId: xmaps.GetString(options.ProviderExtendedConfig, "serviceId"), Domain: xmaps.GetString(options.ProviderExtendedConfig, "domain"), diff --git a/internal/certmgmt/deployers/sp_volcengine_live.go b/internal/certmgmt/deployers/sp_volcengine_live.go index 276201ac1..252b0001b 100644 --- a/internal/certmgmt/deployers/sp_volcengine_live.go +++ b/internal/certmgmt/deployers/sp_volcengine_live.go @@ -19,6 +19,7 @@ func init() { provider, err := volcenginelive.NewDeployer(&volcenginelive.DeployerConfig{ AccessKeyId: credentials.AccessKeyId, AccessKeySecret: credentials.SecretAccessKey, + ProjectName: credentials.ProjectName, DomainMatchPattern: xmaps.GetString(options.ProviderExtendedConfig, "domainMatchPattern"), Domain: xmaps.GetString(options.ProviderExtendedConfig, "domain"), }) diff --git a/internal/certmgmt/deployers/sp_volcengine_tos.go b/internal/certmgmt/deployers/sp_volcengine_tos.go index e4021d037..916acd4f6 100644 --- a/internal/certmgmt/deployers/sp_volcengine_tos.go +++ b/internal/certmgmt/deployers/sp_volcengine_tos.go @@ -19,6 +19,7 @@ func init() { provider, err := volcenginetos.NewDeployer(&volcenginetos.DeployerConfig{ AccessKeyId: credentials.AccessKeyId, AccessKeySecret: credentials.SecretAccessKey, + ProjectName: credentials.ProjectName, Region: xmaps.GetString(options.ProviderExtendedConfig, "region"), Bucket: xmaps.GetString(options.ProviderExtendedConfig, "bucket"), Domain: xmaps.GetString(options.ProviderExtendedConfig, "domain"), diff --git a/internal/certmgmt/deployers/sp_volcengine_vod.go b/internal/certmgmt/deployers/sp_volcengine_vod.go index 9ff2127f3..b28c9f046 100644 --- a/internal/certmgmt/deployers/sp_volcengine_vod.go +++ b/internal/certmgmt/deployers/sp_volcengine_vod.go @@ -19,6 +19,7 @@ func init() { provider, err := volcenginevod.NewDeployer(&volcenginevod.DeployerConfig{ AccessKeyId: credentials.AccessKeyId, AccessKeySecret: credentials.SecretAccessKey, + ProjectName: credentials.ProjectName, SpaceName: xmaps.GetString(options.ProviderExtendedConfig, "spaceName"), DomainMatchPattern: xmaps.GetString(options.ProviderExtendedConfig, "domainMatchPattern"), DomainType: xmaps.GetString(options.ProviderExtendedConfig, "domainType"), diff --git a/internal/certmgmt/deployers/sp_volcengine_waf.go b/internal/certmgmt/deployers/sp_volcengine_waf.go index 04534d205..b5685f575 100644 --- a/internal/certmgmt/deployers/sp_volcengine_waf.go +++ b/internal/certmgmt/deployers/sp_volcengine_waf.go @@ -19,6 +19,7 @@ func init() { provider, err := volcenginewaf.NewDeployer(&volcenginewaf.DeployerConfig{ AccessKeyId: credentials.AccessKeyId, AccessKeySecret: credentials.SecretAccessKey, + ProjectName: credentials.ProjectName, Region: xmaps.GetString(options.ProviderExtendedConfig, "region"), AccessMode: xmaps.GetString(options.ProviderExtendedConfig, "accessMode"), Domain: xmaps.GetString(options.ProviderExtendedConfig, "domain"), diff --git a/internal/domain/access.go b/internal/domain/access.go index a46d70b85..14ae89bbf 100644 --- a/internal/domain/access.go +++ b/internal/domain/access.go @@ -620,6 +620,7 @@ type AccessConfigForVercel struct { type AccessConfigForVolcEngine struct { AccessKeyId string `json:"accessKeyId"` SecretAccessKey string `json:"secretAccessKey"` + ProjectName string `json:"projectName,omitempty"` } type AccessConfigForVultr struct { diff --git a/pkg/core/certmgr/providers/volcengine-cdn/volcengine_cdn.go b/pkg/core/certmgr/providers/volcengine-cdn/volcengine_cdn.go index d66e00a98..c794a6aa8 100644 --- a/pkg/core/certmgr/providers/volcengine-cdn/volcengine_cdn.go +++ b/pkg/core/certmgr/providers/volcengine-cdn/volcengine_cdn.go @@ -23,6 +23,8 @@ type CertmgrConfig struct { AccessKeyId string `json:"accessKeyId"` // 火山引擎 AccessKeySecret。 AccessKeySecret string `json:"accessKeySecret"` + // 火山引擎项目名称。 + ProjectName string `json:"projectName,omitempty"` } type Certmgr struct { diff --git a/pkg/core/certmgr/providers/volcengine-certcenter/volcengine_certcenter.go b/pkg/core/certmgr/providers/volcengine-certcenter/volcengine_certcenter.go index 8a14eddd8..a3b0133dc 100644 --- a/pkg/core/certmgr/providers/volcengine-certcenter/volcengine_certcenter.go +++ b/pkg/core/certmgr/providers/volcengine-certcenter/volcengine_certcenter.go @@ -5,6 +5,7 @@ import ( "fmt" "log/slog" + "github.com/samber/lo" ve "github.com/volcengine/volcengine-go-sdk/volcengine" vesession "github.com/volcengine/volcengine-go-sdk/volcengine/session" @@ -17,6 +18,8 @@ type CertmgrConfig struct { AccessKeyId string `json:"accessKeyId"` // 火山引擎 AccessKeySecret。 AccessKeySecret string `json:"accessKeySecret"` + // 火山引擎项目名称。 + ProjectName string `json:"projectName,omitempty"` // 火山引擎地域。 Region string `json:"region"` } @@ -58,6 +61,7 @@ func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*cert // 上传证书 // REF: https://www.volcengine.com/docs/6638/1365580 importCertificateReq := &vecertificateservice.ImportCertificateInput{ + ProjectName: lo.EmptyableToPtr(c.config.ProjectName), CertificateInfo: &vecertificateservice.CertificateInfoForImportCertificateInput{ CertificateChain: ve.String(certPEM), PrivateKey: ve.String(privkeyPEM), diff --git a/pkg/core/certmgr/providers/volcengine-live/volcengine_live.go b/pkg/core/certmgr/providers/volcengine-live/volcengine_live.go index 91d6d5d2f..a0beaf060 100644 --- a/pkg/core/certmgr/providers/volcengine-live/volcengine_live.go +++ b/pkg/core/certmgr/providers/volcengine-live/volcengine_live.go @@ -7,6 +7,7 @@ import ( "strings" "time" + "github.com/samber/lo" velive "github.com/volcengine/volc-sdk-golang/service/live/v20230101" ve "github.com/volcengine/volcengine-go-sdk/volcengine" @@ -19,6 +20,8 @@ type CertmgrConfig struct { AccessKeyId string `json:"accessKeyId"` // 火山引擎 AccessKeySecret。 AccessKeySecret string `json:"accessKeySecret"` + // 火山引擎项目名称。 + ProjectName string `json:"projectName,omitempty"` } type Certmgr struct { @@ -57,6 +60,7 @@ func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*cert // 查询证书列表,避免重复上传 // REF: https://www.volcengine.com/docs/6469/1186278#%E6%9F%A5%E8%AF%A2%E8%AF%81%E4%B9%A6%E5%88%97%E8%A1%A8 listCertReq := &velive.ListCertV2Body{} + listCertReq.ProjectName = lo.EmptyableToPtr(c.config.ProjectName) listCertResp, err := c.sdkClient.ListCertV2(ctx, listCertReq) c.logger.Debug("sdk request 'live.ListCertV2'", slog.Any("request", listCertReq), slog.Any("response", listCertResp)) if err != nil { @@ -93,7 +97,8 @@ func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*cert // 上传新证书 // REF: https://www.volcengine.com/docs/6469/1186278#%E6%B7%BB%E5%8A%A0%E8%AF%81%E4%B9%A6 createCertReq := &velive.CreateCertBody{ - CertName: ve.String(certName), + ProjectName: lo.EmptyableToPtr(c.config.ProjectName), + CertName: ve.String(certName), Rsa: velive.CreateCertBodyRsa{ Prikey: privkeyPEM, Pubkey: certPEM, diff --git a/pkg/core/deployer/providers/volcengine-alb/volcengine_alb.go b/pkg/core/deployer/providers/volcengine-alb/volcengine_alb.go index 099fe9719..88f7385fe 100644 --- a/pkg/core/deployer/providers/volcengine-alb/volcengine_alb.go +++ b/pkg/core/deployer/providers/volcengine-alb/volcengine_alb.go @@ -21,6 +21,8 @@ type DeployerConfig struct { AccessKeyId string `json:"accessKeyId"` // 火山引擎 AccessKeySecret。 AccessKeySecret string `json:"accessKeySecret"` + // 火山引擎项目名称。 + ProjectName string `json:"projectName,omitempty"` // 火山引擎地域。 Region string `json:"region"` // 部署目标。 @@ -58,6 +60,7 @@ func NewDeployer(config *DeployerConfig) (*Deployer, error) { pcertmgr, err := certmgrimpl.NewCertmgr(&certmgrimpl.CertmgrConfig{ AccessKeyId: config.AccessKeyId, AccessKeySecret: config.AccessKeySecret, + ProjectName: config.ProjectName, Region: config.Region, }) if err != nil { @@ -139,6 +142,7 @@ func (d *Deployer) deployToLoadbalancer(ctx context.Context, cloudCertId string) } describeListenersReq := &vealb.DescribeListenersInput{ + ProjectName: lo.EmptyableToPtr(d.config.ProjectName), LoadBalancerId: ve.String(d.config.LoadbalancerId), Protocol: ve.String("HTTPS"), PageNumber: ve.Int64(int64(describeListenersPageNumber)), diff --git a/pkg/core/deployer/providers/volcengine-apig/volcengine_apig.go b/pkg/core/deployer/providers/volcengine-apig/volcengine_apig.go index 4bbf74df1..814ed1e81 100644 --- a/pkg/core/deployer/providers/volcengine-apig/volcengine_apig.go +++ b/pkg/core/deployer/providers/volcengine-apig/volcengine_apig.go @@ -22,6 +22,8 @@ type DeployerConfig struct { AccessKeyId string `json:"accessKeyId"` // 火山引擎 AccessKeySecret。 AccessKeySecret string `json:"accessKeySecret"` + // 火山引擎项目名称。 + ProjectName string `json:"projectName,omitempty"` // 火山引擎地域。 Region string `json:"region"` // 域名匹配模式。 @@ -53,6 +55,7 @@ func NewDeployer(config *DeployerConfig) (*Deployer, error) { pcertmgr, err := certmgrimpl.NewCertmgr(&certmgrimpl.CertmgrConfig{ AccessKeyId: config.AccessKeyId, AccessKeySecret: config.AccessKeySecret, + ProjectName: config.ProjectName, Region: config.Region, }) if err != nil { diff --git a/pkg/core/deployer/providers/volcengine-cdn/volcengine_cdn.go b/pkg/core/deployer/providers/volcengine-cdn/volcengine_cdn.go index 701f4ec93..93a7169bb 100644 --- a/pkg/core/deployer/providers/volcengine-cdn/volcengine_cdn.go +++ b/pkg/core/deployer/providers/volcengine-cdn/volcengine_cdn.go @@ -7,6 +7,7 @@ import ( "log/slog" "strings" + "github.com/samber/lo" ve "github.com/volcengine/volcengine-go-sdk/volcengine" vesession "github.com/volcengine/volcengine-go-sdk/volcengine/session" @@ -22,6 +23,8 @@ type DeployerConfig struct { AccessKeyId string `json:"accessKeyId"` // 火山引擎 AccessKeySecret。 AccessKeySecret string `json:"accessKeySecret"` + // 火山引擎项目名称。 + ProjectName string `json:"projectName,omitempty"` // 域名匹配模式。 // 零值时默认值 [DOMAIN_MATCH_PATTERN_EXACT]。 DomainMatchPattern string `json:"domainMatchPattern,omitempty"` @@ -51,6 +54,7 @@ func NewDeployer(config *DeployerConfig) (*Deployer, error) { pcertmgr, err := certmgrimpl.NewCertmgr(&certmgrimpl.CertmgrConfig{ AccessKeyId: config.AccessKeyId, AccessKeySecret: config.AccessKeySecret, + ProjectName: config.ProjectName, }) if err != nil { return nil, fmt.Errorf("could not create certmgr: %w", err) @@ -168,6 +172,7 @@ func (d *Deployer) getMatchedDomainsByWildcard(ctx context.Context, wildcardDoma } listCdnDomainsReq := &vecdn.ListCdnDomainsInput{ + Project: lo.EmptyableToPtr(d.config.ProjectName), Domain: ve.String(strings.TrimPrefix(wildcardDomain, "*.")), Status: ve.String("online"), PageNum: ve.Int64(int64(listCdnDomainsPageNum)), diff --git a/pkg/core/deployer/providers/volcengine-certcenter/volcengine_certcenter.go b/pkg/core/deployer/providers/volcengine-certcenter/volcengine_certcenter.go index d37c3f6ac..aaa51d488 100644 --- a/pkg/core/deployer/providers/volcengine-certcenter/volcengine_certcenter.go +++ b/pkg/core/deployer/providers/volcengine-certcenter/volcengine_certcenter.go @@ -15,6 +15,8 @@ type DeployerConfig struct { AccessKeyId string `json:"accessKeyId"` // 火山引擎 AccessKeySecret。 AccessKeySecret string `json:"accessKeySecret"` + // 火山引擎项目名称。 + ProjectName string `json:"projectName,omitempty"` // 火山引擎地域。 Region string `json:"region"` } @@ -35,6 +37,7 @@ func NewDeployer(config *DeployerConfig) (*Deployer, error) { pcertmgr, err := certmgrimpl.NewCertmgr(&certmgrimpl.CertmgrConfig{ AccessKeyId: config.AccessKeyId, AccessKeySecret: config.AccessKeySecret, + ProjectName: config.ProjectName, Region: config.Region, }) if err != nil { diff --git a/pkg/core/deployer/providers/volcengine-clb/volcengine_clb.go b/pkg/core/deployer/providers/volcengine-clb/volcengine_clb.go index 43093f6bd..ff3f0f5d9 100644 --- a/pkg/core/deployer/providers/volcengine-clb/volcengine_clb.go +++ b/pkg/core/deployer/providers/volcengine-clb/volcengine_clb.go @@ -20,6 +20,8 @@ type DeployerConfig struct { AccessKeyId string `json:"accessKeyId"` // 火山引擎 AccessKeySecret。 AccessKeySecret string `json:"accessKeySecret"` + // 火山引擎项目名称。 + ProjectName string `json:"projectName,omitempty"` // 火山引擎地域。 Region string `json:"region"` // 部署目标。 @@ -54,6 +56,7 @@ func NewDeployer(config *DeployerConfig) (*Deployer, error) { pcertmgr, err := certmgrimpl.NewCertmgr(&certmgrimpl.CertmgrConfig{ AccessKeyId: config.AccessKeyId, AccessKeySecret: config.AccessKeySecret, + ProjectName: config.ProjectName, Region: config.Region, }) if err != nil { diff --git a/pkg/core/deployer/providers/volcengine-dcdn/volcengine_dcdn.go b/pkg/core/deployer/providers/volcengine-dcdn/volcengine_dcdn.go index e0d3372a7..097550223 100644 --- a/pkg/core/deployer/providers/volcengine-dcdn/volcengine_dcdn.go +++ b/pkg/core/deployer/providers/volcengine-dcdn/volcengine_dcdn.go @@ -22,6 +22,8 @@ type DeployerConfig struct { AccessKeyId string `json:"accessKeyId"` // 火山引擎 AccessKeySecret。 AccessKeySecret string `json:"accessKeySecret"` + // 火山引擎项目名称。 + ProjectName string `json:"projectName,omitempty"` // 火山引擎地域。 Region string `json:"region"` // 域名匹配模式。 @@ -53,6 +55,7 @@ func NewDeployer(config *DeployerConfig) (*Deployer, error) { pcertmgr, err := certmgrimpl.NewCertmgr(&certmgrimpl.CertmgrConfig{ AccessKeyId: config.AccessKeyId, AccessKeySecret: config.AccessKeySecret, + ProjectName: config.ProjectName, Region: config.Region, }) if err != nil { @@ -162,7 +165,7 @@ func (d *Deployer) getAllDomains(ctx context.Context) ([]string, error) { domains := make([]string, 0) // 查询域名配置列表 - // https://www.volcengine.com/docs/6559/1171745 + // REF: https://www.volcengine.com/docs/6559/1171745 listDomainConfigPageNumber := 1 listDomainConfigPageSize := 100 for { @@ -173,8 +176,9 @@ func (d *Deployer) getAllDomains(ctx context.Context) ([]string, error) { } listDomainConfigReq := &vedcdn.ListDomainConfigInput{ - PageNumber: ve.Int32(int32(listDomainConfigPageNumber)), - PageSize: ve.Int32(int32(listDomainConfigPageSize)), + ProjectName: lo.IfF(d.config.ProjectName != "", func() []*string { return ve.StringSlice([]string{d.config.ProjectName}) }).Else(nil), + PageNumber: ve.Int32(int32(listDomainConfigPageNumber)), + PageSize: ve.Int32(int32(listDomainConfigPageSize)), } listDomainConfigResp, err := d.sdkClient.ListDomainConfigWithContext(ctx, listDomainConfigReq) d.logger.Debug("sdk request 'dcdn.ListDomainConfig'", slog.Any("request", listDomainConfigReq), slog.Any("response", listDomainConfigResp)) diff --git a/pkg/core/deployer/providers/volcengine-imagex/volcengine_imagex.go b/pkg/core/deployer/providers/volcengine-imagex/volcengine_imagex.go index aab05c0f3..44891c8bb 100644 --- a/pkg/core/deployer/providers/volcengine-imagex/volcengine_imagex.go +++ b/pkg/core/deployer/providers/volcengine-imagex/volcengine_imagex.go @@ -18,6 +18,8 @@ type DeployerConfig struct { AccessKeyId string `json:"accessKeyId"` // 火山引擎 AccessKeySecret。 AccessKeySecret string `json:"accessKeySecret"` + // 火山引擎项目名称。 + ProjectName string `json:"projectName,omitempty"` // 火山引擎地域。 Region string `json:"region"` // 服务 ID。 @@ -48,6 +50,7 @@ func NewDeployer(config *DeployerConfig) (*Deployer, error) { pcertmgr, err := certmgrimpl.NewCertmgr(&certmgrimpl.CertmgrConfig{ AccessKeyId: config.AccessKeyId, AccessKeySecret: config.AccessKeySecret, + ProjectName: config.ProjectName, Region: config.Region, }) if err != nil { diff --git a/pkg/core/deployer/providers/volcengine-live/volcengine_live.go b/pkg/core/deployer/providers/volcengine-live/volcengine_live.go index 9a7ec6604..40b46176b 100644 --- a/pkg/core/deployer/providers/volcengine-live/volcengine_live.go +++ b/pkg/core/deployer/providers/volcengine-live/volcengine_live.go @@ -22,6 +22,8 @@ type DeployerConfig struct { AccessKeyId string `json:"accessKeyId"` // 火山引擎 AccessKeySecret。 AccessKeySecret string `json:"accessKeySecret"` + // 火山引擎项目名称。 + ProjectName string `json:"projectName,omitempty"` // 域名匹配模式。 // 零值时默认值 [DOMAIN_MATCH_PATTERN_EXACT]。 DomainMatchPattern string `json:"domainMatchPattern,omitempty"` @@ -50,6 +52,7 @@ func NewDeployer(config *DeployerConfig) (*Deployer, error) { pcertmgr, err := certmgrimpl.NewCertmgr(&certmgrimpl.CertmgrConfig{ AccessKeyId: config.AccessKeyId, AccessKeySecret: config.AccessKeySecret, + ProjectName: config.ProjectName, }) if err != nil { return nil, fmt.Errorf("could not create certmgr: %w", err) diff --git a/pkg/core/deployer/providers/volcengine-tos/volcengine_tos.go b/pkg/core/deployer/providers/volcengine-tos/volcengine_tos.go index d1206940e..8666582fe 100644 --- a/pkg/core/deployer/providers/volcengine-tos/volcengine_tos.go +++ b/pkg/core/deployer/providers/volcengine-tos/volcengine_tos.go @@ -17,6 +17,8 @@ type DeployerConfig struct { AccessKeyId string `json:"accessKeyId"` // 火山引擎 AccessKeySecret。 AccessKeySecret string `json:"accessKeySecret"` + // 火山引擎项目名称。 + ProjectName string `json:"projectName,omitempty"` // 火山引擎地域。 Region string `json:"region"` // 存储桶名。 @@ -47,6 +49,7 @@ func NewDeployer(config *DeployerConfig) (*Deployer, error) { pcertmgr, err := certmgrimpl.NewCertmgr(&certmgrimpl.CertmgrConfig{ AccessKeyId: config.AccessKeyId, AccessKeySecret: config.AccessKeySecret, + ProjectName: config.ProjectName, Region: config.Region, }) if err != nil { diff --git a/pkg/core/deployer/providers/volcengine-vod/volcengine_vod.go b/pkg/core/deployer/providers/volcengine-vod/volcengine_vod.go index a1cae7bf0..d840b8b0a 100644 --- a/pkg/core/deployer/providers/volcengine-vod/volcengine_vod.go +++ b/pkg/core/deployer/providers/volcengine-vod/volcengine_vod.go @@ -24,6 +24,8 @@ type DeployerConfig struct { AccessKeyId string `json:"accessKeyId"` // 火山引擎 AccessKeySecret。 AccessKeySecret string `json:"accessKeySecret"` + // 火山引擎项目名称。 + ProjectName string `json:"projectName,omitempty"` // 点播空间名称。 SpaceName string `json:"spaceName"` // 域名匹配模式。 @@ -56,6 +58,7 @@ func NewDeployer(config *DeployerConfig) (*Deployer, error) { pcertmgr, err := certmgrimpl.NewCertmgr(&certmgrimpl.CertmgrConfig{ AccessKeyId: config.AccessKeyId, AccessKeySecret: config.AccessKeySecret, + ProjectName: config.ProjectName, }) if err != nil { return nil, fmt.Errorf("could not create certmgr: %w", err) diff --git a/pkg/core/deployer/providers/volcengine-waf/volcengine_waf.go b/pkg/core/deployer/providers/volcengine-waf/volcengine_waf.go index 1ceb95eea..bbbb2c849 100644 --- a/pkg/core/deployer/providers/volcengine-waf/volcengine_waf.go +++ b/pkg/core/deployer/providers/volcengine-waf/volcengine_waf.go @@ -21,6 +21,8 @@ type DeployerConfig struct { AccessKeyId string `json:"accessKeyId"` // 火山引擎 AccessKeySecret。 AccessKeySecret string `json:"accessKeySecret"` + // 火山引擎项目名称。 + ProjectName string `json:"projectName,omitempty"` // 火山引擎地域。 Region string `json:"region"` // WAF 接入模式。 @@ -51,6 +53,7 @@ func NewDeployer(config *DeployerConfig) (*Deployer, error) { pcertmgr, err := certmgrimpl.NewCertmgr(&certmgrimpl.CertmgrConfig{ AccessKeyId: config.AccessKeyId, AccessKeySecret: config.AccessKeySecret, + ProjectName: config.ProjectName, Region: config.Region, }) if err != nil { @@ -106,6 +109,7 @@ func (d *Deployer) deployWithCNAME(ctx context.Context, cloudCertId string) erro // 查询云 WAF 实例防护网站信息 // REF: https://www.volcengine.com/docs/6511/1214827 listDomainReq := &vewaf.ListDomainInput{ + ProjectName: lo.EmptyableToPtr(d.config.ProjectName), Region: ve.String(d.config.Region), Domain: ve.String(d.config.Domain), AccurateQuery: ve.Int32(1), @@ -124,6 +128,7 @@ func (d *Deployer) deployWithCNAME(ctx context.Context, cloudCertId string) erro // REF: https://www.volcengine.com/docs/6511/1214835 domainInfo := listDomainResp.Data[0] updateDomainReq := &vewaf.UpdateDomainInput{ + ProjectName: lo.EmptyableToPtr(d.config.ProjectName), Region: ve.String(d.config.Region), Domain: ve.String(d.config.Domain), AccessMode: ve.Int32(10), diff --git a/ui/src/components/access/forms/AccessConfigFieldsProviderVolcEngine.tsx b/ui/src/components/access/forms/AccessConfigFieldsProviderVolcEngine.tsx index 1485944fb..2fe6dbe95 100644 --- a/ui/src/components/access/forms/AccessConfigFieldsProviderVolcEngine.tsx +++ b/ui/src/components/access/forms/AccessConfigFieldsProviderVolcEngine.tsx @@ -36,6 +36,16 @@ const AccessConfigFormFieldsProviderVolcEngine = () => { > + + } + > + + ); }; @@ -53,6 +63,7 @@ const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType }) = return z.object({ accessKeyId: z.string().nonempty(), secretAccessKey: z.string().nonempty(), + projectName: z.string().nullish(), }); }; diff --git a/ui/src/i18n/resources/en/nls.access.json b/ui/src/i18n/resources/en/nls.access.json index 1b5edbc24..c968da5fe 100644 --- a/ui/src/i18n/resources/en/nls.access.json +++ b/ui/src/i18n/resources/en/nls.access.json @@ -1388,12 +1388,17 @@ "volcengine_access_key_id": { "label": "VolcEngine AccessKeyID", "placeholder": "Please enter VolcEngine AccessKeyID", - "tooltip": "For more information, see https://www.volcengine.com/docs/6291/216571" + "tooltip": "For more information, see https://www.volcengine.com/docs/6291/65568" }, "volcengine_secret_access_key": { "label": "VolcEngine SecretAccessKey", "placeholder": "Please enter VolcEngine SecretAccessKey", - "tooltip": "For more information, see https://www.volcengine.com/docs/6291/216571" + "tooltip": "For more information, see https://www.volcengine.com/docs/6291/65568" + }, + "volcengine_project_name": { + "label": "VolcEngine project ID", + "placeholder": "Please enter VolcEngine project ID", + "tooltip": "For more information, see https://www.volcengine.com/docs/6649/94336" }, "vultr_api_key": { "label": "Vultr API key", diff --git a/ui/src/i18n/resources/zh/nls.access.json b/ui/src/i18n/resources/zh/nls.access.json index 262b41b87..54526b7a7 100644 --- a/ui/src/i18n/resources/zh/nls.access.json +++ b/ui/src/i18n/resources/zh/nls.access.json @@ -1385,12 +1385,17 @@ "volcengine_access_key_id": { "label": "火山引擎 AccessKeyID", "placeholder": "请输入火山引擎 AccessKeyID", - "tooltip": "这是什么?请参阅 https://www.volcengine.com/docs/6291/216571" + "tooltip": "这是什么?请参阅 https://www.volcengine.com/docs/6291/65568" }, "volcengine_secret_access_key": { "label": "火山引擎 SecretAccessKey", "placeholder": "请输入火山引擎 SecretAccessKey", - "tooltip": "这是什么?请参阅 https://www.volcengine.com/docs/6291/216571" + "tooltip": "这是什么?请参阅 https://www.volcengine.com/docs/6291/65568" + }, + "volcengine_project_name": { + "label": "火山引擎项目名称(可选)", + "placeholder": "请输入火山引擎项目名称", + "tooltip": "这是什么?请参阅 https://www.volcengine.com/docs/6649/94336" }, "vultr_api_key": { "label": "Vultr API Key",