云服务器内容精选

  • 创建URL列表文件并上传至OBS桶 创建迁移任务:将待迁移的文件URL和目的端对象名称写入URL列表文件,并将生成的URL列表文件存放在与目的端桶处于同一区域的OBS桶中。 创建迁移任务组:将待迁移的文件URL和目的端对象名称写入URL列表文件,并将生成的URL列表文件存放在与目的端桶处于同一区域的OBS桶指定目录(文件夹)下。指定目录(文件夹)只能存放URL列表文件。 请确保URL列表文件所在桶与目的端桶处于同一区域,否则后续将无法选择对象列表文件。 请确保URL列表文件中的URL可通过HEAD和GET请求正常访问。
  • Go语言 package demo import ( "bytes" "crypto" "crypto/rsa" "crypto/x509" "encoding/base64" "encoding/json" "encoding/pem" "fmt" "io/ioutil" ) type Message struct { Signature string `json:"signature"` Subject *string `json:"subject"` TopicUrn string `json:"topic_urn"` MessageId string `json:"message_id"` SignatureVersion string `json:"signature_version"` Type string `json:"type"` Message string `json:"message"` SubscribeUrl string `json:"subscribe_url"` UnsubscribeUrl string `json:"unsubscribe_url"` SigningCertUrl string `json:"signing_cert_url"` Timestamp string `json:"timestamp"` } func VerifyMessage(pemFile string, message string) bool { msg := Message{} err := json.Unmarshal([]byte(message), &msg) if err != nil { fmt.Println("Convert json to struct failed") return false } pemContent, err := ioutil.ReadFile(pemFile) if err != nil { fmt.Println("Read pem file failed") return false } certDerblock, _ := pem.Decode(pemContent) if certDerblock == nil { fmt.Println("Decode pem file failed") return false } cert, err := x509.ParseCertificate(certDerblock.Bytes) if err != nil { fmt.Println("Parse cert failed") return false } msgString := buildMessage(&msg) msgHash := crypto.SHA256.New() msgHash.Write([]byte(msgString)) msgHashSum := msgHash.Sum(nil) decodeSign, _ := base64.StdEncoding.DecodeString(msg.Signature) publicKey := cert.PublicKey.(*rsa.PublicKey) err = rsa.VerifyPKCS1v15(publicKey, crypto.SHA256, msgHashSum, decodeSign) if err != nil { fmt.Println("Verify failed") return false } else { fmt.Println("Verify success") return true } } func buildMessage(msg *Message) string { if msg.Type == "Notification" { return buildNotificationMessage(msg) } else if msg.Type == "SubscriptionConfirmation" || msg.Type == "UnsubscribeConfirmation" { return buildSubscriptionMessage(msg) } return "" } func buildNotificationMessage(msg *Message) string { buf := bytes.Buffer{} buf.WriteString("message\n" + msg.Message + "\n") buf.WriteString("message_id\n" + msg.MessageId + "\n") // msg中存在Subject字段不存在的场景,需要特殊处理 if msg.Subject != nil { buf.WriteString("subject\n" + *msg.Subject + "\n") } buf.WriteString("timestamp\n" + msg.Timestamp + "\n") buf.WriteString("topic_urn\n" + msg.TopicUrn + "\n") buf.WriteString("type\n" + msg.Type + "\n") return buf.String() } func buildSubscriptionMessage(msg *Message) string { buf := bytes.Buffer{} buf.WriteString("message\n" + msg.Message + "\n") buf.WriteString("message_id\n" + msg.MessageId + "\n") buf.WriteString("subscribe_url\n" + msg.SubscribeUrl + "\n") buf.WriteString("timestamp\n" + msg.Timestamp + "\n") buf.WriteString("topic_urn\n" + msg.TopicUrn + "\n") buf.WriteString("type\n" + msg.Type + "\n") return buf.String() } 该示例代码已在go 1.15版本上测试通过。
  • URI PUT /v2/{project_id}/edge-nodes/{node_id}/ias/{ia_id}/api 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 项目ID。获取方法请参见 获取项目ID。 最小长度:1 最大长度:64 node_id 是 String 边缘节点ID 最小长度:1 最大长度:64 ia_id 是 String 第三方应用IA ID 最小长度:1 最大长度:64 表2 Query参数 参数 是否必选 参数类型 描述 ia_uri 是 String 第三方IA服务资源地址 最小长度:1 最大长度:128
  • 请求参数 表3 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。通过调用IAM服务 获取IAM用户Token接口获取,接口返回的响应消息头中“X-Subject-Token”就是需要获取的用户Token。简要的获取方法样例请参见 Token认证。 最小长度:0 最大长度:20000 表4 请求Body参数 参数 是否必选 参数类型 描述 body 否 Object 第三方IA服务资源请求结构体
  • 操作场景 在添加HTTPS/HTTP监听器时,重写X-Forwarded-Host默认开启。 开关开启,表示ELB以客户端请求头的Host重写X-Forwarded-Host向后端传输;开关关闭表示ELB透传客户端的X-Forwarded-Host。 目前独享型负载均衡和共享型负载均衡均默认开启此功能,独享型负载均衡支持通过管理控制台方式和调用API的方式关闭此功能,共享型负载均衡仅支持通过调用API的方式关闭此功能。 本章节针对独享型负载均衡,介绍如何通过管理控制台方式关闭此功能。 只有HTTPS监听器和HTTP监听器支持此功能。
  • 创建HTTP请求连接 登录新版ROMA Connect控制台。 在左侧导航栏选择“连接器”,在连接器页面单击“新建连接”。 选择“HTTP请求”连接器。 在弹窗中配置连接器信息,完成后单击“确定”。 参数 说明 描述 填写连接器的描述信息,用于识别不同的连接器。 基本地址 要调用API的请求地址。 安全认证 要调用API所使用的认证方式。 APP认证:使用使用API所授权集成应用的Key和Secret进行API请求的安全认证。 无认证:表示API请求不需要认证。 APP Key(APP认证) 仅当“安全认证”选择“APP认证”时需要配置。 API所授权集成应用的Key。 APP Secret(APP认证) 仅当“安全认证”选择“APP认证”时需要配置。 API所授权集成应用的Secret。
  • 为什么配置证书后仍出现不安全提示? 可能由于以下原因导致配置证书后仍出现不安全提示。 证书所记录的域名与用户访问的域名不一致,建议排查证书所记录的域名,或创建自签名证书。 配置了SNI,输入的域名与证书所记录的域名不一致。 域名级别与证书级别不一致,例如域名为5级而证书为4级。 域名未备案。 其他情况您也可以使用 curl 访问的域名命令,根据系统返回的错误信息进行排查。 父主题: HTTP/HTTPS监听器
  • 配置https_proxy环境变量 请根据您系统选择并执行如下命令,配置https_proxy环境变量。 Linux或MacOS系统 临时环境变量 配置https_proxy的命令为: export https_proxy="https://username:password@proxyServer:port" 其中,proxyServer为代理服务器的域名(如果能解析)或者IP。port为端口号。如果你的代理服务器需要用户名和密码才能访问,需要填写上面的username和password部分,否则的话,可以省略这两部分,如下: export https_proxy="https://proxyServer:port" 永久环境变量 在~/.bashrc文件中添加如下内容,可将https_proxy永久配置在当前用户的环境变量中: export https_proxy="https://username:password@proxyServer:port" 其中,proxyServer为代理服务器的域名(如果能解析)或者IP。port为端口号。如果你的代理服务器需要用户名和密码才能访问,需要填写上面的username和password部分,否则的话,可以省略这两部分,如下: export https_proxy="https://proxyServer:port" 请注意:永久环境变量配置完毕后,一般需要注销并重新登录,配置才可生效。 Windows系统 使用cmd: 临时环境变量 配置https_proxy的命令为: set https_proxy=https://username:password@proxyServer:port 其中,proxyServer为代理服务器的域名(如果能解析)或者IP。port为端口号。如果你的代理服务器需要用户名和密码才能访问,需要填写上面的username和password部分,否则的话,省略这两部分,如下: set https_proxy=https://proxyServer:port 永久环境变量 将https_proxy永久配置在当前用户的环境变量中的命令为: setx "https_proxy" "https://username:password@proxyServer:port" 其中,proxyServer为代理服务器的域名(如果能解析)或者IP。port为端口号。如果你的代理服务器需要用户名和密码才能访问,需要填写上面的username和password部分,否则的话,省略这两部分,如下: setx "https_proxy" "https://proxyServer:port" 请注意:永久环境变量配置完毕后,将在新打开的终端中生效,当前终端不会立即生效。 使用PowerShell 临时环境变量 配置https_proxy的命令为: $env:https_proxy="https://username:password@proxyServer:port" 其中,proxyServer为代理服务器的域名(如果能解析)或者IP。port为端口号。如果你的代理服务器需要用户名和密码才能访问,需要填写上面的username和password部分,否则的话,省略这两部分,如下: $env:https_proxy="https://proxyServer:port" 永久环境变量 将https_proxy永久配置在当前用户的环境变量中的命令为: [environment]::SetEnvironmentvariable("https_proxy", "https://username:password@proxyServer:port", "User") 其中,proxyServer为代理服务器的域名(如果能解析)或者IP。port为端口号。如果你的代理服务器需要用户名和密码才能访问,需要填写上面的username和password部分,否则的话,省略这两部分,如下: [environment]::SetEnvironmentvariable("https_proxy", "https://proxyServer:port", "User") 请注意:永久环境变量配置完毕后,将在新打开的终端中生效,当前终端不会立即生效。
  • 配置http_proxy环境变量 请根据您系统选择并执行如下命令,配置http_proxy环境变量。 Linux或MacOS系统 临时环境变量 配置http_proxy的命令为: export http_proxy="http://username:password@proxyServer:port" 其中,proxyServer为代理服务器的域名(如果能解析)或者IP。port为端口号。如果你的代理服务器需要用户名和密码才能访问,需要填写上面的username和password部分,否则的话,可以省略这两部分,如下: export http_proxy="http://proxyServer:port" 永久环境变量 在~/.bashrc文件中添加如下内容,可将http_proxy永久配置在当前用户的环境变量中: export http_proxy="http://username:password@proxyServer:port" 其中,proxyServer为代理服务器的域名(如果能解析)或者IP。port为端口号。如果你的代理服务器需要用户名和密码才能访问,需要填写上面的username和password部分,否则的话,可以省略这两部分,如下: export http_proxy="http://proxyServer:port" 请注意:永久环境变量配置完毕后,一般需要注销并重新登录,配置才可生效。 Windows系统 使用cmd: 临时环境变量 配置http_proxy的命令为: set http_proxy=http://username:password@proxyServer:port 其中,proxyServer为代理服务器的域名(如果能解析)或者IP。port为端口号。如果你的代理服务器需要用户名和密码才能访问,需要填写上面的username和password部分,否则的话,省略这两部分,如下: set http_proxy=http://proxyServer:port 永久环境变量 将http_proxy永久配置在当前用户的环境变量中的命令为: setx "http_proxy" "http://username:password@proxyServer:port" 其中,proxyServer为代理服务器的域名(如果能解析)或者IP。port为端口号。如果你的代理服务器需要用户名和密码才能访问,需要填写上面的username和password部分,否则的话,省略这两部分,如下: setx "http_proxy" "http://proxyServer:port" 请注意:永久环境变量配置完毕后,将在新打开的终端中生效,当前终端不会立即生效。 使用PowerShell: 临时环境变量 配置http_proxy的命令为: $env:http_proxy="http://username:password@proxyServer:port" 其中,proxyServer为代理服务器的域名(如果能解析)或者IP。port为端口号。如果你的代理服务器需要用户名和密码才能访问,需要填写上面的username和password部分,否则的话,省略这两部分,如下: $env:http_proxy="http://proxyServer:port" 永久环境变量 将http_proxy永久配置在当前用户的环境变量中的命令为: [environment]::SetEnvironmentvariable("http_proxy", "http://username:password@proxyServer:port", "User") 其中,proxyServer为代理服务器的域名(如果能解析)或者IP。port为端口号。如果你的代理服务器需要用户名和密码才能访问,需要填写上面的username和password部分,否则的话,省略这两部分,如下: [environment]::SetEnvironmentvariable("http_proxy", "http://proxyServer:port", "User") 请注意:永久环境变量配置完毕后,将在新打开的终端中生效,当前终端不会立即生效。