分享天某云对象存储开发的体验

news2024/10/7 10:15:47

       最近体验了天某云对象存储的功能,作为一名资深开发者,开发体验差强人意,与阿里云存在一定的差距。

     首先在开发文档上居然没有基于nodejs的代码示例,只有java,c#,go等的代码示例,虽然有javascript的,但那也只适用于浏览器端。难道nodejs就这么不受待见,阿里腾讯的云服务开发我都用过不少,nodejs也是和几大主流语言,有自己一席之地,甚至当年阿里函数计算出来时都是只支持nodejs,这么到这里连个名字都没见,失败。

      然后看到也提供api调用的方式,就改用这个来实现对象存储的访问,结果调试发现,有明显的时延,做一次预签名下载链接生成,从发起调用到返回居然平均要1秒多,咨询技术支持,他说不清楚api调用,都是用的sdk访问,甩给我一个java写的demo,平均耗时不到600~800毫米,说仅预签名调用才几十毫秒。(??建立网络连接的开销占比这么大?后来判断估计是他那边的网络不行),但至少给了我一个思路方向:

        如果你的应用对oss的性能要求高,不要考虑它的api调用,一定是用sdk方式。

     这就回到原来的问题上,要么我用其他语言的sdk,要么我自己想办法在nodejs实现sdk的调用方式。最开始我以为javascript的sdk可以拿来用在nodejs上,结果被打脸,用了下根本没法跑。后来看了下技术给的java文档,这不就是aws的库吗?还是S3的标准,上chatgpt赶紧问问,果不其然原来aws官网就已经给出了详尽的演示代码,天某云你做啥子嘛,好歹直接在开放者文档上给个链接也行啊,害得老子转了一大圈用了你的api调用。

        这是aws的预签名链接Create a presigned URL for Amazon S3 using an AWS SDK - Amazon Simple Storage ServiceCreate a presigned URL for Amazon S3 using an AWS SDKicon-default.png?t=N7T8https://docs.aws.amazon.com/AmazonS3/latest/userguide/example_s3_Scenario_PresignedUrl_section.html

      然后copy了下拿到本地开发调试,半小时不到跑通搞定,爽!!!

       经过实测,从建立连接到生成一个预签名下载链接,平均不到50毫秒。这个速度完全满足了应用到需要。

  初始化client注意的点:

    *region字段要有,但值无所谓,按技术支持说的不用填,但不写的话,代码会报错。 

     *ak, sk到某某云的对象存储管理页面里去查。

  

   * endpoint的话,创建一个bucket,然后点击bucket查看详情,外网的和内网都在。

    其他的代码部分就直接参考aws的官网的就行了,为了方便小伙伴,我贴出自己的完整示例

     

const { S3Client, GetObjectCommand} = require("@aws-sdk/client-s3");
const {  getSignedUrl} = require("@aws-sdk/s3-request-presigner");

const client = new S3Client({
    region: '1111',
    credentials: {
      accessKeyId: '<ak>',
      secretAccessKey: '<sk>'
    },
    endpoint: 'https://xxxx.xxx.xx.cn',
    forcePathStyle: true,
    sslEnabled: true
  });

  const signurl = async () =>
  {
    const Key ='test.jpg'
    const Bucket = 'test-bucket';

    const command = new GetObjectCommand({ Bucket, Key });
    const url = await getSignedUrl(client, command, 
      { expiresIn: 3600 ,
        ResponseCacheControl: 'max-age=3600', // 设置HTTP缓存控制头
      });
    console.log(url);
  }

  signurl().catch(console.error);

   另外吐槽下管理权限这块,很容易让人搞晕,概念太多,用户,用户组,策略,委托,当时想和另外一个小伙伴一起使用,发现子用户总是无法看到主账户的资源,后来才知道关键点是这个。

    

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

面试经验分享 | 蓝队面试经验

关于蓝队面试经验 1.自我介绍能力 重要性 为什么将自我介绍能力放在第一位&#xff0c;实际上自我介绍才是面试中最重要的一点&#xff0c;因为护网面试并没有确定的题目&#xff0c;让面试官去提问 更多是的和面试官的一种 “交谈” &#xff0c;面试的难易程度也自然就取决…

Kubernetes 教程:在 Containerd 容器中使用 GPU

原文链接:Kubernetes 教程:在 Containerd 容器中使用 GPU 云原生实验室本文介绍了如何在使用 Containerd 作为运行时的 Kubernetes 集群中使用 GPU 资源。https://fuckcloudnative.io/posts/add-nvidia-gpu-support-to-k8s-with-containerd/ 前两天闹得沸沸扬扬的事件不知道…

C++ | Leetcode C++题解之第71题简化路径

题目&#xff1a; 题解&#xff1a; class Solution { public:string simplifyPath(string path) {auto split [](const string& s, char delim) -> vector<string> {vector<string> ans;string cur;for (char ch: s) {if (ch delim) {ans.push_back(mov…

深度学习之基于YOLOv5目标检测可视化系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景与意义 随着深度学习技术的快速发展&#xff0c;目标检测在多个领域中的应用日益广泛&#xff0c;包括…

CMakeLists.txt语法规则:foreach 循环基本用法

一. 简介 cmake 中除了 if 条件判断之外&#xff0c;还支持循环语句&#xff0c;包括 foreach()循环、while()循环。 本文学习 CMakeLists.txt语法中的循环语句。 CMakeLists.txt语法中 有两种 循环实现方式&#xff1a;foreach循环与 while循环。 二. CMakeLists.txt语法规则…

【vue3-pbstar-big-screen】一款基于vue3、vite、ts的大屏可视化项目

vue3-pbstar-big-screen是一款基于vue3、vite、ts的大屏可视化项目&#xff0c;项目已内置axios、sass&#xff0c;如element、echarts等需要自行安装。 屏幕适配方案 本项目主要通过transform: scale()缩放核心区域实现屏幕适配效果 //html <div class"container-wr…

编程算法赛

1偶数累加 2、统计字符的数量 3、计算表达式的值 4、哥德巴赫猜想 5、进制的转换

【一刷《剑指Offer》】面试题 16:反转链表

力扣对应题目链接&#xff1a;206. 反转链表 - 力扣&#xff08;LeetCode&#xff09; 牛客对应题目链接&#xff1a;反转链表_牛客题霸_牛客网 (nowcoder.com) 核心考点 &#xff1a;链表操作&#xff0c;思维缜密程度。 一、《剑指 Offer》内容 二、分析题目 解题思路&#…

CoPilot 产品体验:提升 OpenNJet 的控制管理和服务提供能力

文章目录 前言系统架构介绍CoPilot 配置CoPilot 插件规范 体验 CoPilot 实例CoPilot: Broker 实例CoPilot: Ctrl 实例 开发其他语言编写的 CoPilot目标主要思路具体实现执行 go 程序代码 功能扩展总结 前言 CoPilot 是 OpenNJet 的一个重要组成部分&#xff0c;它在 Master-Wo…

【QA】Java常见运算符

前言 本文主要讲述Java常见的运算符 运算符的概念 两个基本概念&#xff1a; 运算符&#xff1a;对字面量或者变量进行操作的符号 表达式&#xff1a;用运算符把字面量或者变量连接起来符合java语法的式子就可以称为表达式 示例&#xff1a; int a 10; int b 20; int …

【一看就懂】UART、IIC、SPI、CAN四种通讯协议对比介绍

UART、IIC、SPI、CAN四种通信协议对比 通信方式传输线通讯方式标准传输速度使用场景UARTTX(发送数据线)、RX(接收数据线)串行、异步、全双工115.2 kbit/s(常用)计算机和外部设备通信&#xff08;打印机&#xff09;IICSCL(时钟线)、SDA(数据线)串行、同步、半双工100 kbit/s(标…

HNU-人工智能-实验4-基于Resnet的分类器

前言 本实验是自选实验&#xff0c;可以在给定范围内选择。 我刚刚提交了实验报告&#xff0c;暂时不准备放出我自己的实验报告&#xff0c;大概在截止提交之后我再放。 之所以这么着急写blog&#xff0c;是想便利还没做实验的同学。 如果选择的也是这个“毒蘑菇识别”的分类器…

安卓手机录屏在哪里?教给你3种方法

随着智能手机的普及&#xff0c;录屏功能在日常生活和工作中的需求日益增加。那么安卓手机录屏功能在哪里&#xff1f; 本文将详细介绍3个安卓手机的录屏方法&#xff0c;并分享一些实用技巧&#xff0c;帮助您更好地利用这一功能。 方法一&#xff1a;使用安卓手机自带的录屏…

武汉星起航:自运营团队—亚马逊平台运营典范,优势凸显业绩斐然

武汉星起航电子商务有限公司&#xff0c;作为跨境电商领域的佼佼者&#xff0c;凭借自运营团队多年的深耕经验与对亚马逊市场规则的深刻理解&#xff0c;成功在亚马逊平台开设多家自营店铺&#xff0c;并取得显著成绩。公司月流水达到几百万的辉煌业绩&#xff0c;不仅彰显了其…

基于 OpenHarmony compress 三方件使用指南~

关于 提供了一个轻量级的图像压缩库。将允许您将大照片压缩成小 尺寸的照片&#xff0c;图像质量损失或可以忽略不计 compress 的依赖添加 为你的应用添加 compress-debug.har。将 compress-debug.har 复制到 entry\libs 目录下即可&#xff08;由于 build.gradle 中已经依赖…

笔记---DFS,深度优先搜索

深度优先搜索乃是注重深度&#xff0c;会把一条路径优先全部搜完然后再去回溯&#xff0c;再去搜其他路径 连通性模型 与BFS中的Flood Fill相似 AcWing.1112.迷宫 一天Extense在森林里探险的时候不小心走入了一个迷宫&#xff0c;迷宫可以看成是由 n∗n 的格点组成&#xff…

Java:内存模型

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 一、Java内存模型出现的背景 二、什么是Java内存模型 三、Java内存模型的底层实现 总结 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一…

基于C语言的贪吃蛇小游戏(简易版)

这篇博客会是对学习C语言成果的检测&#xff0c;为了实现贪吃蛇小游戏&#xff0c;我们用到的“工具”有&#xff1a;C语言函数、枚举、结构体、动态内存管理、预处理指令、链表、Win32 API等。 目录 1.简易版游戏效果 1.1欢迎界面 1.2游戏规则提示页面 1.3游戏进行页面 …

STM32F407VET6 学习笔记1:GPIO引脚认识分类与开发板原理图

今日学习STM32F407VET6 &#xff0c;首先从基本原理图、引脚方面开始做个初步理解并整理&#xff1a; 这里使用的学习开发板是在嘉立创购买的 立创梁山派天空星&#xff0c;芯片是 STM32F407VET6 主要对这个芯片的引脚做一些归纳认识、对开发学习板原理图设计进行认识理解:最…

恭喜发财!东方第一 MEME 拥抱符文

第 431 号符文 HOPE•YOU•GET•RICH &#x1f9e7;&#xff0c;是 Omnity 首个支持的跨链 Runes 资产&#xff0c;也是TG群里红包小程序支持的第一个 Runes 资产。 大家可以在 Omnity 的 TG 群和 RunesCC 的 TG 群里&#xff0c;不定时的抢到符文红包。 Omnity TG&#xff1a;…