当前位置: 首页 > news >正文

德州网站怎样建设google官网入口注册

德州网站怎样建设,google官网入口注册,佛山专业网站推广公司,安徽休宁建设厅网站引言 在华为云上#xff0c;对CDN缓存内容进行刷新是一个常见的需求#xff0c;以确保最新的内容能尽快被用户访问到。通过使用Go语言#xff0c;我们可以开发一个自动化的工具来实现这一需求#xff0c;并将其集成到Jenkins中以实现持续部署。下面我们将分步骤讲解如何实…引言 在华为云上对CDN缓存内容进行刷新是一个常见的需求以确保最新的内容能尽快被用户访问到。通过使用Go语言我们可以开发一个自动化的工具来实现这一需求并将其集成到Jenkins中以实现持续部署。下面我们将分步骤讲解如何实现。 1. 实现CDN的刷新 要用Go实现华为云CDN的刷新工作我们需要首先安装go-sdk这是华为云为Go开发者提供的SDK包含了操作华为云服务的API接口。 步骤1.1 安装华为云官方Go SDK 我们可以使用go get命令来安装SDK go get -u github.com/huaweicloud/huaweicloud-sdk-go-v3步骤1.2 创建CDN刷新任务 使用华为云apiexplorer查看一下cdn的实例代码 创建刷新缓存任务实例有V1 V2版本区别但是看了一眼目测代码没有什么区别这里就继续使用v1版本了 package mainimport (fmtgithub.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/globalcdn github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cdn/v1github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cdn/v1/modelregion github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cdn/v1/region )func main() {// The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.// In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environmentak : os.Getenv(CLOUD_SDK_AK)sk : os.Getenv(CLOUD_SDK_SK)auth : global.NewCredentialsBuilder().WithAk(ak).WithSk(sk).Build()client : cdn.NewCdnClient(cdn.CdnClientBuilder().WithRegion(region.ValueOf(cn-north-1)).WithCredential(auth).Build())request : model.CreateRefreshTasksRequest{}request.Body model.RefreshTaskRequest{}response, err : client.CreateRefreshTasks(request)if err nil {fmt.Printf(%v\n, response)} else {fmt.Println(err)} }根据上面的代码做一个简单的实例演示如何使用华为云Go SDK创建CDN刷新任务 域名使用 传入的方式这里就直接使用了os.Args,传递参数 package mainimport (fmtgithub.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/globalgithub.com/huaweicloud/huaweicloud-sdk-go-v3/core/configcdn github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cdn/v1github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cdn/v1/modelgithub.com/huaweicloud/huaweicloud-sdk-go-v3/services/cdn/v1/regionos )func main() {if len(os.Args) 2 {fmt.Println(Usage: go run main.go your-cdn-url)return}cdnUrl : os.Args[1]ak : YOUR_ACCESS_KEYsk : YOUR_SECRET_KEYauth : global.NewCredentialsBuilder().WithAk(ak).WithSk(sk).Build()hcClient : cdn.NewCdnClient(cdn.CdnClientBuilder().WithRegion(region.ValueOf(cn-north-1)).WithCredential(auth).WithHttpConfig(config.DefaultHttpConfig()).Build())// Create CDN refresh taskcreateRefreshTask(hcClient, cdnUrl) }func createRefreshTask(hcClient *cdn.CdnClient, cdnUrl string) {refreshTaskRequest : model.CreateRefreshTasksRequest{}typeRefreshTask : model.GetRefreshTaskRequestBodyTypeEnum().DIRECTORYmodeRefreshTask : model.GetRefreshTaskRequestBodyModeEnum().DETECT_MODIFY_REFRESHzhUrlEncodeRefreshTask : falserefreshTaskbody : model.RefreshTaskRequestBody{Type: typeRefreshTask,Mode: modeRefreshTask,ZhUrlEncode: zhUrlEncodeRefreshTask,Urls: []string{cdnUrl},}refreshTaskRequest.Body model.RefreshTaskRequest{RefreshTask: refreshTaskbody,}// Create the refresh taskresponse, err : hcClient.CreateRefreshTasks(refreshTaskRequest)if err ! nil {fmt.Fprintf(os.Stderr, Error creating CDN refresh task: %s\n, err)os.Exit(2)}fmt.Printf(CDN refresh task created successfully: %s\n, response) } 在上述代码中替换**YOUR_ACCESS_KEY**、**YOUR_SECRET_KEY**为你的华为云账号的密钥信息。 尝试运行脚本 go run main.go https://xxx.xxx.com/末尾以**/**单斜线结尾 注以上代码以刷新目录为例且只刷新变更资源具体参数或者其他需求可以参考https://console.huaweicloud.com/apiexplorer/#/openapi/CDN/doc?versionv1apiCreateRefreshTasks文档中参数 2. 查询file URL余量 在创建刷新任务后我们可能还需要查询当前账户下的URL刷新余量以确保后续操作不会受到次数限制的影响。 步骤2.1 查询CDN file URL余量 可以在上面的Go程序中继续添加以下查询余量的代码片段 参照https://console.huaweicloud.com/apiexplorer/#/openapi/CDN/debug?versionv1apiShowQuota 尝试调试查看返回值数据结构编写代码如下 // 查询URL 目录余量 func queryCdnQuota(hcClient *cdn.CdnClient) {request : model.ShowQuotaRequest{}response, err : hcClient.ShowQuota(request)if err ! nil {fmt.Fprintf(os.Stderr, Error querying CDN quota: %s\n, err)os.Exit(2)}// 请确保 response.Quotas 不是nil否则可能会导致空指针异常if response.Quotas nil {fmt.Fprintln(os.Stderr, Error: received nil Quotas in response)os.Exit(2)}// 自定义类型名称的映射typeNameMap : map[string]string{file_refresh: 缓存刷新剩余Url条数,dir_refresh: 缓存刷新剩余目录数,}// Print out the customized quota informationfmt.Println(CDN quota information:)for _, quota : range *response.Quotas {// 检查quota.Type是否为我们关心的类型之一if customName, ok : typeNameMap[*quota.Type]; ok {remaining : *quota.QuotaLimit - *quota.Usedfmt.Printf(- %s: %d\n, customName, remaining)}} }在main函数中增加一下代码 queryCdnQuota(hcClient)此片段會在创建CDN刷新任务之后调用ShowQuota接口查询并打印出当前账户的URL以及目录刷新余量信息。typeNameMap部分是我想自定义一下输出打印的名称增加可读性 完成代码如下 package mainimport (fmtgithub.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/globalgithub.com/huaweicloud/huaweicloud-sdk-go-v3/core/configcdn github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cdn/v1github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cdn/v1/modelgithub.com/huaweicloud/huaweicloud-sdk-go-v3/services/cdn/v1/regionos )func main() {if len(os.Args) 2 {fmt.Println(Usage: go run main.go your-cdn-url)return}cdnUrl : os.Args[1]ak : YOUR_ACCESS_KEYsk : YOUR_SECRET_KEYauth : global.NewCredentialsBuilder().WithAk(ak).WithSk(sk).Build()hcClient : cdn.NewCdnClient(cdn.CdnClientBuilder().WithRegion(region.ValueOf(cn-north-1)).WithCredential(auth).WithHttpConfig(config.DefaultHttpConfig()).Build())// Create CDN refresh taskcreateRefreshTask(hcClient, cdnUrl) }func createRefreshTask(hcClient *cdn.CdnClient, cdnUrl string) {refreshTaskRequest : model.CreateRefreshTasksRequest{}typeRefreshTask : model.GetRefreshTaskRequestBodyTypeEnum().DIRECTORYmodeRefreshTask : model.GetRefreshTaskRequestBodyModeEnum().DETECT_MODIFY_REFRESHzhUrlEncodeRefreshTask : falserefreshTaskbody : model.RefreshTaskRequestBody{Type: typeRefreshTask,Mode: modeRefreshTask,ZhUrlEncode: zhUrlEncodeRefreshTask,Urls: []string{cdnUrl},}refreshTaskRequest.Body model.RefreshTaskRequest{RefreshTask: refreshTaskbody,}// Create the refresh taskresponse, err : hcClient.CreateRefreshTasks(refreshTaskRequest)if err ! nil {fmt.Fprintf(os.Stderr, Error creating CDN refresh task: %s\n, err)os.Exit(2)}fmt.Printf(CDN refresh task created successfully: %s\n, response) } 运行代码返回数据格式如下 go run main.go https://xxx.xxx.com/3. 在Jenkins节点上运行程序 一旦我们的Go程序可以正确执行CDN刷新和查询余量的操作接下来的步骤就是在Jenkins中配置该程序的运行环境。 步骤3.1 创建一个新的Jenkins任务 在Jenkins中创建一个Freestyle项目或者Pipeline项目此部分取决于你的工作流。为了简便说明我们这里以Freestyle项目为例。 步骤3.2 配置构建步骤 首先添加一个参数化构建过程传入参数 限制一下可运行的节点 在你的Jenkins任务配置页中添加一个构建步骤选择“Execute shell”对于Linux系统或“Execute Windows batch command”对于Windows系统并填入以下内容 # 假设你的Go程序名为main且已经编译到Jenkins的工作空间中 cd /home/flush-hw./main $dir确保构建环境中已经安装了Go运行时并且环境变量已经配置这样main程序才可以在Jenkins节点上运行没有问题。 注main要有可执行权限复制过来要记得chmod x main . 4. 使用Jenkins Credentials管理AK/SK密钥 为了避免在代码中硬编码敏感信息如Access Key和Secret Key推荐使用Jenkins的Credentials插件来管理这些密钥。 步骤4.1 添加Credentials 在Jenkins中进入Credentials管理页面添加一个新的Credentials选择“Secret text”其中**Secret**字段填入AK:SK的格式。记住这里的**ID**接下来绑定的时候会用到 步骤4.2 修改Go程序以获取Credentials 之后你需要修改Go程序让其从环境变量中读取AK和SK。例如 package mainimport (fmtgithub.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/globalgithub.com/huaweicloud/huaweicloud-sdk-go-v3/core/configcdn github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cdn/v1github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cdn/v1/modelgithub.com/huaweicloud/huaweicloud-sdk-go-v3/services/cdn/v1/regionosstrings )func main() {if len(os.Args) 2 {fmt.Println(Usage: go run main.go your-cdn-url)return}cdnUrl : os.Args[1]// 尝试从环境变量中获取ak和skcreds : os.Getenv(huaweiyun-hn-cdn)if creds {fmt.Fprintln(os.Stderr, Error: Credentials environment variable is not set.)os.Exit(1)}parts : strings.SplitN(creds, :, 2)if len(parts) ! 2 {fmt.Fprintln(os.Stderr, Error: Invalid credential format. Expected AK:SK.)os.Exit(1)}ak, sk : parts[0], parts[1]auth : global.NewCredentialsBuilder().WithAk(ak).WithSk(sk).Build()hcClient : cdn.NewCdnClient(cdn.CdnClientBuilder().WithRegion(region.ValueOf(cn-north-1)).WithCredential(auth).WithHttpConfig(config.DefaultHttpConfig()).Build())// Create CDN refresh taskcreateRefreshTask(hcClient, cdnUrl)// Query remaining refresh and preload quotaqueryCdnQuota(hcClient) }func createRefreshTask(hcClient *cdn.CdnClient, cdnUrl string) {refreshTaskRequest : model.CreateRefreshTasksRequest{}typeRefreshTask : model.GetRefreshTaskRequestBodyTypeEnum().DIRECTORYmodeRefreshTask : model.GetRefreshTaskRequestBodyModeEnum().DETECT_MODIFY_REFRESHzhUrlEncodeRefreshTask : falserefreshTaskbody : model.RefreshTaskRequestBody{Type: typeRefreshTask,Mode: modeRefreshTask,ZhUrlEncode: zhUrlEncodeRefreshTask,Urls: []string{cdnUrl},}refreshTaskRequest.Body model.RefreshTaskRequest{RefreshTask: refreshTaskbody,}// Create the refresh taskresponse, err : hcClient.CreateRefreshTasks(refreshTaskRequest)if err ! nil {fmt.Fprintf(os.Stderr, Error creating CDN refresh task: %s\n, err)os.Exit(2)}fmt.Printf(CDN refresh task created successfully: %s\n, response) } func queryCdnQuota(hcClient *cdn.CdnClient) {request : model.ShowQuotaRequest{}response, err : hcClient.ShowQuota(request)if err ! nil {fmt.Fprintf(os.Stderr, Error querying CDN quota: %s\n, err)os.Exit(2)}// 请确保 response.Quotas 不是nil否则可能会导致空指针异常if response.Quotas nil {fmt.Fprintln(os.Stderr, Error: received nil Quotas in response)os.Exit(2)}// 自定义类型名称的映射typeNameMap : map[string]string{file_refresh: 缓存刷新剩余Url条数,dir_refresh: 缓存刷新剩余目录数,}// Print out the customized quota informationfmt.Println(CDN quota information:)for _, quota : range *response.Quotas {// 检查quota.Type是否为我们关心的类型之一if customName, ok : typeNameMap[*quota.Type]; ok {remaining : *quota.QuotaLimit - *quota.Usedfmt.Printf(- %s: %d\n, customName, remaining)}} } 步骤4.3 配置Jenkins任务以传递Credentials 在Jenkins任务的构建环境配置中使用Credentials Binding插件将新添加的Credentials绑定到相应的环境变量中。在“Build Environment”选择“Use secret text(s) or file(s)”命名为xxx并绑定AK/SK到指定凭据 步骤4.4 测试运行 最后在Jenkins中运行配置好的任务检查输出以确保CDN刷新和余量查询均运行顺利。 5. 其他的需求 1. 经常输入域名的时候忘记/单斜线是否可以自动补全 2. 设置改阈值剩余量到20可以自动报警邮件or短信 3. 优雅的pipeline? 结语 通过上述步骤我们成功地实现了通过Go语言操作华为云CDN刷新服务的功能并将其集成到Jenkins任务中同时安全地管理了敏感的AK/SK凭证。这样的自动化工具对于管理大量的CDN资源来说非常有用可以大大提高工作效率。 注以上大纲chatgpt生成代码结构也是代码基本也是chatgpt生成貌似中间就有几个指针数据格式有问题修改了一下
http://www.zqtcl.cn/news/270419/

相关文章:

  • 高端白酒品牌有哪些网站怎么做才能得到更好的优化
  • 北京安慧桥网站建设青之峰做网站
  • 免费制作网站的平台推广网站多少钱
  • 怎么增加网站的收录量广西建设厅网站地址
  • flash网站方案料神wordpress建站教程
  • 杭州 企业 建网站蚌埠网站优化
  • 网站建设的分类黄骅港最新招聘
  • 门户网站建设和检务公开自查搜索引擎排名优化价格
  • 湘阴网站建设如何建立自己的网站
  • 国外的ps网站网页源代码翻译器
  • 六安马昌友优化营商环境 助推高质量发展
  • wdcp 配置网站什么是搜索引擎营销?
  • 东莞网站上排名建设银行网站登录不进去
  • 陕西建设厅八大员官方网站服装公司做哪个网站
  • 福建省住房和城乡建设厅网站站群 网站如何做
  • 网站换稳定服务器网页制造与网站建设论文
  • wordpress 产品目录seo技术是干什么的
  • 做里番网站犯法吗中建八局第一建设有限公司资质
  • 怎么制作网站教程电商seo建站优化价格表
  • 黄平网站建设网站建设公司广告 晴天娃娃
  • 中山市 有限公司网站建设网站建设 福步 2018
  • 英语网站开发中国桥梁建设公司排名
  • php做的网站怎么运行公司网站备案查询
  • jsp 响应式网站模板设计类网站策划案
  • 建设银行网站怎么注销网银百度广告联盟
  • flash建网站教程天津市建设工程评标专家网
  • 合格的网站设计师需要会什么软件seo 深圳
  • 公司网站建设费用账务处理软文300字案例
  • 门户型网站特点网站营销推广的公司
  • wordpress gif主题seo兼职怎么收费