【云服务器系列】基于华为云OBS实现Picgo和Typora的完美融合

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
img

  • 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老
  • 导航
    • 檀越剑指大厂系列:全面总结 java 核心技术,jvm,并发编程 redis,kafka,Spring,微服务等
    • 常用开发工具系列:常用的开发工具,IDEA,Mac,Alfred,Git,typora 等
    • 数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
    • 新空间代码工作室:提供各种软件服务,承接各种毕业设计,毕业论文等
    • 懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
    • 数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂

非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

博客目录

    • 一.概念介绍
      • 1.什么是对象存储
      • 2.产品优势
      • 3.应用场景
    • 二.基础信息
      • 1.obs 概览
      • 2.obs 主页
      • 3.存储包和流量包的区别
      • 4.购买服务
      • 5.PicGo 配置 OBS
    • 三.Python-SKD
      • 1.安装依赖
      • 2..列举桶对象
      • 3.下载图片

一.概念介绍

1.什么是对象存储

对象存储服务(Object Storage Service,OBS)是一个基于对象的海量存储服务,为客户提供海量、安全、高可靠、低成本的数据存储能力。

OBS 系统和单个桶都没有总数据容量和对象/文件数量的限制,为用户提供了超大存储容量的能力,适合存放任意类型的文件,适合普通用户、网站、企业和开发者使用。OBS 是一项面向 Internet 访问的服务,提供了基于 HTTP/HTTPS 协议的 Web 服务接口,用户可以随时随地连接到 Internet,通过 OBS 管理控制台或各种 OBS 工具访问和管理存储在 OBS 中的数据。此外,OBS 支持 SDK 和 OBS API 接口,可使用户方便管理自己存储在 OBS 上的数据,以及开发多种类型的上层业务应用。

在全球多区域部署了 OBS 基础设施,具备高度的可扩展性和可靠性,用户可根据自身需要指定区域使用 OBS,由此获得更快的访问速度和实惠的服务价格。

2.产品优势

在信息时代,企业数据直线增长,自建存储服务器存在诸多劣势,已无法满足企业日益强烈的存储需求。表 1向您详细展示了 OBS 与自建存储服务器的优劣势对比。

对比项OBS自建存储服务器
数据存储量提供海量的存储服务,在全球部署着 N 个数据中心,所有业务、存储节点采用分布式集群方式部署,各节点、集群都可以独立扩容,用户永远不必担心存储容量不够。数据存储量受限于搭建存储服务器时使用的硬件设备,存储量不够时需要重新购买存储硬盘,进行人工扩容。
安全性支持 HTTPS/SSL 安全协议,支持数据加密上传。同时 OBS 通过访问密钥(AK/SK)对访问用户的身份进行鉴权,结合 IAM 权限、桶策略、ACL、防盗链等多种方式和技术确保数据传输与访问的安全。支持敏感操作保护,针对删除桶等敏感操作,可开启身份验证。需自行承担网络信息安全、技术漏洞、误操作等各方面的数据安全风险。
可靠性通过五级可靠性架构,保障数据持久性高达 99.9999999999%,业务连续性高达 99.995%,远高于传统架构。一般的企业自建存储服务器不会投入巨额的成本来同时保证介质、服务器、机柜、数据中心、区域级别的可靠性,一旦出现故障或灾难,很容易导致数据出现不可逆的丢失,给企业造成严重损失。
成本即开即用,免去了自建存储服务器前期的资金、时间以及人力成本的投入,后期设备的维护交由 OBS 处理。按使用量付费,用多少算多少。阶梯价格,用的越多越实惠。前期安装难、设备成本高、初始投资大、自建周期长、后期运维成本高,无法匹配快速变更的企业业务,安全保障的费用还需额外考虑。

3.应用场景

OBS 提供的大数据解决方案主要面向海量数据存储分析、历史数据明细查询、海量行为日志分析和公共事务分析统计等场景,向用户提供低成本、高性能、不断业务、无须扩容的解决方案。

  • 海量数据存储分析的典型场景:PB 级的数据存储,批量数据分析,毫秒级的数据详单查询等
  • 历史数据明细查询的典型场景:流水审计,设备历史能耗分析,轨迹回放,车辆驾驶行为分析,精细化监控等
  • 海量行为日志分析的典型场景:学习习惯分析,运营日志分析,系统操作日志分析查询等
  • 公共事务分析统计的典型场景:犯罪追踪,关联案件查询,交通拥堵分析,景点热度统计等

用户通过 DES 等迁移服务将海量数据迁移至 OBS,再基于提供的 MapReduce 等大数据服务或开源的 Hadoop、Spark 等运算框架,对存储在 OBS 上的海量数据进行大数据分析,最终将分析的结果呈现在 ECS 中的各类程序或应用上。

二.基础信息

1.obs 概览

obs 概览

image-20240810165610262

2.obs 主页

主页地址

对象存储服务 OBS

提供安全稳定、性能领先、无限弹性扩展的存储能力,降低使用成本,驱动千行百业数据价值变现

image-20240806002917784

3.存储包和流量包的区别

存储包和流量包是两种不同的服务产品,通常用于云计算服务中。它们的主要区别在于服务的内容和用途。

存储包主要是指用于抵扣云存储服务中数据存储费用的产品。例如,在华为云对象存储 OBS 服务中,存储包可以用来抵扣 OSS 文件或 ECS 快照的存储费用 。用户购买存储包后,在有效期内,存储包会按照一定的规格(如每小时固定额度)抵扣相应的存储费用。如果存储使用量超出了存储包的抵扣额度,超出部分将按照按量付费的方式计算费用。

流量包则是指用于抵扣数据传输过程中产生的流量费用的产品。流量包可以进一步细分为多种类型,例如下行流量包、回源流量包等。下行流量包用于抵扣从云存储服务向外网传输数据产生的流量费用,而回源流量包则用于抵扣数据从云存储服务传输到内容分发网络(CDN)边缘节点产生的流量费用 。流量包通常有预设的有效期和额度,用户在使用过程中,相应的流量费用会被流量包抵扣,超出额度则按实际用量计费。

4.购买服务

存储包和流量包的区别

存储包:华为云 obs 存储包还是比较便宜的,40G 一年只要 9 元

image-20240810165751309

流量包:华为云流量包一年 50G 流量,一年价格为 108 元

image-20240810165857211

5.PicGo 配置 OBS

根据下图在 picgo 中配置 obs,我们就可以管理自己的图床了,再结合 typora,使博客对于图片的管理更加方便

image-20240810170209183

三.Python-SKD

1.安装依赖

pip install pycryptodome==3.20.0pip install esdk-obs-python --trusted-host pypi.org

2…列举桶对象

列举桶对象 API

100 个以内对象:

from obs import ObsClient
import os
import traceback# 推荐通过环境变量获取AKSK,这里也可以使用其他外部引入方式传入,如果使用硬编码可能会存在泄露风险。
# 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html。
ak = 'ak'
sk = 'sk'
server = "https://obs.cn-east-3.myhuaweicloud.com"
# 创建obsClient实例
# 如果使用临时AKSK和SecurityToken访问OBS,需要在创建实例时通过security_token参数指定securityToken值
obsClient = ObsClient(access_key_id=ak, secret_access_key=sk, server=server)
try:bucketName = "kwan1"# 指定列举对象的前缀# prefix = 'test/'prefix = None# 指定单次列举对象个数为100max_keys = 100# 列举桶内对象resp = obsClient.listObjects(bucketName, prefix, max_keys=max_keys, encoding_type='url')# 返回码为2xx时,接口调用成功,否则接口调用失败if resp.status < 300:# print('List Objects Succeeded')# print('requestId:', resp.requestId)# print('name:', resp.body.name)# print('prefix:', resp.body.prefix)# print('max_keys:', resp.body.max_keys)# print('is_truncated:', resp.body.is_truncated)index = 1for content in resp.body.contents:# print('object [' + str(index) + ']')print('key:', content.key)# print('lastModified:', content.lastModified)# print('etag:', content.etag)# print('size:', content.size)# print('storageClass:', content.storageClass)# print('owner_id:', content.owner.owner_id)# print('owner_name:', content.owner.owner_name)index += 1else:# print('List Objects Failed')print('requestId:', resp.requestId)print('errorCode:', resp.errorCode)print('errorMessage:', resp.errorMessage)
except:print('List Objects Failed')print(traceback.format_exc())

100个以上:

from obs import ObsClient
import os
import tracebackak = 'ak'
sk = 'sk'
server = "https://obs.cn-east-3.myhuaweicloud.com"
obsClient = ObsClient(access_key_id=ak, secret_access_key=sk, server=server)
try:max_num = 1000mark = Noneindex = 1while True:resp = obsClient.listObjects('kwan1', marker=mark, max_keys=max_num, encoding_type='url')if resp.status < 300:# print('requestId:', resp.requestId)# print('name:', resp.body.name)# print('prefix:', resp.body.prefix)# print('max_keys:', resp.body.max_keys)# print('is_truncated:', resp.body.is_truncated)for content in resp.body.contents:# print('object [' + str(index) + ']')print('key:', content.key)# print('lastModified:', content.lastModified)# print('etag:', content.etag)# print('size:', content.size)# print('storageClass:', content.storageClass)# print('owner_id:', content.owner.owner_id)# print('owner_name:', content.owner.owner_name)print(f'index:{index}')index += 1if resp.body.is_truncated is True:mark = resp.body.next_markerelse:breakelse:print('errorCode:', resp.errorCode)print('errorMessage:', resp.errorMessage)
except:import tracebackprint(traceback.format_exc())

3.下载图片

import requests# 图片的URL
image_url = 'https://kwan1.obs.cn-east-3.myhuaweicloud.com/zsb4UftyA5gKCQ8.png'# 使用rfind找到最后一个'/'的位置
last_slash_index = image_url.rfind('/')# 从'/'后面截取字符串作为图片名称
if last_slash_index != -1:image_name = image_url[last_slash_index + 1:]
else:image_name = image_url  # 如果没有找到'/',则整个URL就是图片名称print(image_name)# 打开URL
response = requests.get(image_url, stream=True)# 确保请求成功
if response.status_code == 200:# 打开一个文件用于写入with open(image_name, 'wb') as out_file:# 写入内容out_file.write(response.content)
else:print('图片下载失败,状态码:', response.status_code)

觉得有用的话点个赞 👍🏻 呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

img

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/396900.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32-IIC协议详解

一、IIC简介 IC&#xff08;Inter-Integrated Circuit&#xff09;协议由飞利浦公司于1980年代开发&#xff0c;是一种用于集成电路间短距离通信的串行协议。它设计用于连接低速外围设备&#xff0c;特别适合于需要简单数据交换的场景。IC协议使用两根信号线&#xff1a;SCL&am…

Python数值计算(23)——modified akima插值

1. 数学原理 在前面的Akima插值中&#xff0c;计算斜率使用如下公式&#xff1a; 如果记&#xff1a; 在出现分母分子同时为零的情况时&#xff0c;会出现NaN的计算结果&#xff0c;Akima他自己也意识到这种问题&#xff0c;因此&#xff0c;在原来的算法上做了修订&#xff0…

Python | Leetcode Python题解之第330题按要求补齐数组

题目&#xff1a; 题解&#xff1a; class Solution:def minPatches(self, nums: List[int], n: int) -> int:patches, x 0, 1length, index len(nums), 0while x < n:if index < length and nums[index] < x:x nums[index]index 1else:x << 1patches …

【线性代数】第2章 矩阵及其运算,矩阵的定义,矩阵的加法,矩阵的乘法(同济大学)

目录 1 矩阵 一、矩阵概念的引入 二、矩阵的定义 三、特殊的矩阵 同型矩阵与矩阵相等的概念 四、矩阵与线性变换 例 例 例 2 矩阵的运算 例 一、矩阵的加法 二、数与矩阵相乘 例&#xff08;续&#xff09; 三、矩阵与矩阵相乘 1 矩阵 一、矩阵概…

NVIDIA Triton系列11-模型类别与调度器-1

NVIDIA Triton系列11-模型类别与调度器-1 B站&#xff1a;肆十二-的个人空间-肆十二-个人主页-哔哩哔哩视频 (bilibili.com) 博客&#xff1a;肆十二-CSDN博客 问答&#xff1a;(10 封私信 / 72 条消息) 肆十二 - 知乎 (zhihu.com) 在 Triton 推理服务器的使用中&#xff0c;模…

数据科学 - 数据可视化(持续更新)

1. 前言​​​​​​​ 数据可视化能够将复杂的数据集转化为易于理解的图形、图表或图像。这种直观的表现形式使得人们能够更快地理解数据的分布、趋势、异常值以及数据之间的关系&#xff0c;从而更深入地洞察数据背后的信息。 数据可视化在数据分析和决策制定过程中具有不可…

C++的7种设计模式原则

一、设计模式前言 设计模式&#xff08;Design Patterns&#xff09;的“模式”指的是一种在软件设计中经过验证的、解决特定问题的方案。它们不是具体的代码&#xff0c;而是解决常见设计问题的抽象方案或模板。设计模式提供了一种标准的方式来组织代码&#xff0c;以提高代码…

为JetBrains IDE设置自定义TODO筛选器(筛选指定的关键字)和Live Templates

为JetBrains IDE设置自定义TODO筛选器&#xff08;筛选指定的关键字&#xff09;和Live Templates 以下内容以搜索关键字 // TODO Zzz 为例&#xff0c;不区分大小写&#xff0c;可以将模板中的 Zzz 换成其他内容。 设置自定义TODO筛选器 在IDE设置中找到TODO选项&#xff0…

AWS注册是否必须使用美元银行卡

亚马逊网络服务(AWS)作为全球领先的云计算平台,吸引了众多企业和个人用户。然而,不少人在注册AWS账户时会产生疑问:是否必须使用美元银行卡?实际上,这种说法并不准确。虽然AWS的主要结算货币是美元,但用户在注册和使用过程中有多种支付方式可供选择。我们结合九河云的分析来告…

程序员前端开发者的AI绘画副业之路:在裁员危机中寻找新机遇

正文&#xff1a; 在这个充满变数的时代&#xff0c;作为一名前端开发者&#xff0c;我经历了行业的起伏&#xff0c;见证了裁员危机和中年失业危机的残酷。在这样的背景下&#xff0c;我开始了利用AI绘画作为副业的探索&#xff0c;不仅为了寻求经济上的稳定&#xff0c;更是为…

DLMS/COSEM中的信息安全:安全密钥(下)

2.5组件B终端实体证书类型要由DLMS/COSEM服务器支持 每个DLMS/COSEM服务器应使用X.509 v3格式&#xff0c;并包含以下任一项&#xff1a; ——具有P-256或P-384 ECDSA功能的签名密钥&#xff1b;或 ——具有P-256或P-384 ECDSA功能的密钥协商密钥。 每张证书均应使用ECDSA进行签…

lvs(linux virtual server)实例

一.lvs概述 1.1什么是lvs LVS&#xff08;Linux Virtual Server&#xff09;是一个基于Linux操作系统的虚拟服务器技术&#xff0c;用于实现负载均衡和高可用性。LVS通过将客户端的请求分发到多台后端服务器上&#xff0c;从而提高整体服务的处理能力和可靠性。LVS主要有两个组…

蓝桥杯 双周赛 第16场 小白赛 题目复盘 (2024年8月10日)

3. 织女的考验 下面的代码看似很正确&#xff0c;但忽略了一个细节&#xff0c;下面判断是否有字母数量不同时&#xff0c;用abs(cnt[i]) 1判断&#xff0c;这里忽略了abs(cnt[i]) 等于其他值的情况(YES和NO都存在) #include <iostream> #include <cstring> usi…

java: 程序包org.springframework.boot.autoconfigure不存在

通过 mvn -U idea:idea 命令重新加载maven包&#xff0c;具体操作是这样的&#xff1a; 打开cmd窗口cd 到 工程根目录&#xff0c;比如我的工程是&#xff1a;D:\IdeaProjects\demo&#xff0c; 执行 mvn -U idea:idea 命令&#xff0c;完了以后重新运行项目就正常了&#xff…

《网络编程实战系列》(17)网络桥接模式

文章目录 **桥接模式的基本原理****桥接模式的应用场景****桥接模式的优缺点****桥接模式的实现****总结**桥接模式(Bridge Mode)是一种网络配置模式,用于将多个网络接口或网络段连接在一起,使其在逻辑上形成一个单一的网络。这种模式常用于在不同网络之间传递数据包,并使…

树与二叉树、图的基本概念

一、树与二叉树的基本概念和性质 1. 树的的性质 1&#xff09;树中的结点数 n 等于所有结点的度数之和加 1 【说明】结点的度是指该结点的孩子数量&#xff0c;每个结点与其每个孩子都由唯一的边相连&#xff0c;因此树中所有结点的度数之和等于树中的边数之和。树中的结点&…

pr涂鸦转场(喷漆涂鸦效果视频转场过渡效果)mogrt模板

https://prmuban.com/40353.html 主要特点&#xff1a; 与Adobe Premiere Pro 2024兼容 4K分辨率&#xff08;38402160&#xff09; 自动调整大小功能 快速渲染时间 无需额外插件 包括视频教程

240806-在Linux/RHEL开机中自动启动bash脚本

A. 常规方法 要在Red Hat Enterprise Linux (RHEL) 中设置开机启动的bash脚本&#xff0c;可以使用以下方法之一&#xff1a; 方法1&#xff1a;使用/etc/rc.d/rc.local 打开/etc/rc.d/rc.local文件&#xff1a; sudo vi /etc/rc.d/rc.local在文件末尾添加你想要执行的bash脚…

<Qt> 窗口

目录 一、Qt窗口 二、菜单栏 &#xff08;一&#xff09;创建菜单栏 &#xff08;二&#xff09;在菜单栏中添加菜单 &#xff08;三&#xff09;创建菜单项 &#xff08;四&#xff09;在菜单项之间添加分割线 &#xff08;五&#xff09;给菜单项添加槽函数 &#xf…

虚拟机和docker容器的区别

背景 我们知道虚拟机和docker容器中的进程都可以在独立的空间中运行&#xff0c;互不干扰&#xff0c;那么两者主要区别是什么呢 虚拟机和docker容器的区别 虚拟机主要是通过硬件模拟出来一个个操作系统&#xff0c;每个操作系统有自己的的文件和目录&#xff0c;网络设备等…