通过云助手向实例发送小文件

本文涉及的产品
对象存储 OSS,标准 - 本地冗余存储 20GB 3个月
对象存储OSS,敏感数据保护2.0 200GB 1年
对象存储 OSS,内容安全 1000 次 1年
简介: 背景 下发文件是运维实例过程中最常见的动作之一,在一项对自动化运维工具的使用场景调研中,文件下发按照频繁程度排在前三位。 当前向ECS下发文件主要有以下几种方式: 上传至OSS,再下载到实例中; 通过远程文件拷贝命令scp向实例拷贝文件; 通过第三方软件下发文件。 OSS方式是常见的下发文件方式,但操作稍显繁琐,需要用户开通OSS,产生额外的费用; scp方式只能在通公网的机

背景

下发文件是运维实例过程中最常见的动作之一,在一项对自动化运维工具的使用场景调研中,文件下发按照频繁程度排在前三位。

当前向ECS下发文件主要有以下几种方式:

  • 上传至OSS,再下载到实例中;
  • 通过远程文件拷贝命令scp向实例拷贝文件;
  • 通过第三方软件下发文件。

OSS方式是常见的下发文件方式,但操作稍显繁琐,需要用户开通OSS,产生额外的费用;

scp方式只能在通公网的机器上使用,需要登录,还可能需要跳板机,局限性较大,且难以进行文件的批量下发,自动化程度低;

通过第三方软件下发需要用户自行进行安装和管理,上手难度较高,且第三方软件的安全性不能得到保证。

对于小文件下发的场景,如配置文件、脚本等,云助手提供了一种新的方式。在控制台上,从ECS实例详情页通过下发远程文件功能下发。通过SendFile OpenAPI,可以批量向实例下发文件,更可以通过OOS进行编排,提高运维的自动化程度。当前通过云助手下发的文件大小不能超过32K,对于一般的脚本、配置文件,32K基本满足要求。而对于大文件的下发,仍需借助OSS。

功能介绍

通过远程连接操作ECS实例时,您是否苦于无法方便的传输文件?

在对一批实例进行运维时,您是否还在一台台的拷贝文件?

通过云助手的下发文件功能,这些场景都可以更加便捷!

基于云助手SendFile、DescribeSendFileResults API的组合,可以通过ECS控制台或OpenAPI向实例中指定路径批量下发文件,文件大小在Base64编码后不能超过32KB。如果指定的路径不存在,会自动创建路径。对于Linux实例,可以指定文件的Owner,Group,Mode等参数。

控制台使用

通过ECS管理控制台有两种方式下发文件,一种是在实例详情页向指定实例发送文件,另一种是从云助手控制台批量的发送文件。

从实例详情页发送文件

  1. 进入ECS实例详情页面,进入左侧本实例远程命令

  1. 将待下发的文件通过点击或拖拽的方式上传,或选择粘贴文档内容,下发文本文件。

  1. 点击下发按钮开始下发文件。

从云助手控制台下发文件

云助手控制台发送文件窗口,将待下发的文件通过点击或拖拽的方式上传,或选择粘贴文档内容,进行配置并点击执行进行文件下发。云助手控制台可以批量的向实例下发文件。

相关API

应用举例

通过OpenAPI从本地读取并下发文件到实例

通过SendFile API可以将文件从本地批量发送至实例的目标路径下,实例代码如下:

DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "<accessKeyId>", "<accessSecret>");
IAcsClient client = new DefaultAcsClient(profile);

SendFileRequest request = new SendFileRequest();
request.setRegionId("cn-hangzhou");
request.setName("test.sh");
request.setTargetDir("/root");

List<String> instanceIdList = new ArrayList<String>();
instanceIdList.add("i-xxxxxx");
request.setInstanceIds(instanceIdList);

//filePath为本地文件路径,以Base64方式读入
byte[] bytes = Files.readAllBytes(Paths.get(filePath));
request.setContent(Base64.getEncoder().encodeToString(bytes));
request.setContentType("Base64");

try {
    SendFileResponse response = client.getAcsResponse(request);
    System.out.println(new Gson().toJson(response));
} catch (ServerException e) {
    e.printStackTrace();
} catch (ClientException e) {
    System.out.println("ErrCode:" + e.getErrCode());
    System.out.println("ErrMsg:" + e.getErrMsg());
    System.out.println("RequestId:" + e.getRequestId());
}

根据SendFile返回的InvokeId字段,可以通过DescribeSendFileResults查看下发文件任务的状态和结果:

DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "<accessKeyId>", "<accessSecret>");
IAcsClient client = new DefaultAcsClient(profile);

DescribeSendFileResultsRequest request = new DescribeSendFileResultsRequest();
request.setRegionId("cn-hangzhou");
request.setInvokeId("t-xxxxxx");

try {
    DescribeSendFileResultsResponse response = client.getAcsResponse(request);
    System.out.println(new Gson().toJson(response));
} catch (ServerException e) {
    e.printStackTrace();
} catch (ClientException e) {
    System.out.println("ErrCode:" + e.getErrCode());
    System.out.println("ErrMsg:" + e.getErrMsg());
    System.out.println("RequestId:" + e.getRequestId());
}

通过阿里云CLI下发文件

还可以通过阿里云CLI向目标实例下发文件。

$ aliyun ecs SendFile --Content your_content --InstanceId.1 i-xxxxxxx --Name test.sh --TargetDir /root
{
	"InvokeId": "f-hz0x8xxxxx",
	"RequestId": "BBEC9000-B0A8-47D9-B105-XXXXX"
}

再通过DescribeSendFileResults轮询文件下发结果。

aliyun ecs DescribeSendFileResults --InvokeId f-hz0x8xxxxx --waiter expr='Invocations.Invocation[0].InvocationStatus' to=Success

展望

由于文件大小有32KB的限制,该功能当前有一定的局限性。SendFile API在未来会借助OSS的能力,完善大文件的下发场景。

发送文件是运维场景中非常基础的能力,通过结合运维编排OOS的编排能力,可以实现非常丰富的功能,提高运维自动化和智能化。

相关实践学习
通义万相文本绘图与人像美化
本解决方案展示了如何利用自研的通义万相AIGC技术在Web服务中实现先进的图像生成。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情:&nbsp;https://www.aliyun.com/product/ecs
相关文章
|
弹性计算 监控 网络协议
ecs资源监控操作
监控阿里云ECS服务器资源分为7步:登录阿里云控制台,进入ECS管理界面,选择要监控的实例,查看基础监控数据,通过云监控服务获取详细图表、配置报警规则,可选安装云监控插件获取OS级数据,最后定期审查优化资源配置。通过这些步骤,确保系统稳定运行并及时处理问题。如需帮助,参考官方文档或联系阿里云支持。
501 3
|
Ubuntu Linux 数据安全/隐私保护
百度搜索:蓝易云【ubuntu系统安装gcc-7、g++-7教程】
请注意,以上步骤是针对Ubuntu系统的。如果你使用的是其他Linux发行版,请相应地调整命令。
388 6
|
11月前
|
存储 NoSQL 固态存储
阿里云服务器云盘选择参考,ESSD Entry云盘和Entry云盘区别
在我们选择阿里云服务器系统盘和数据盘的时候,有部分云服务器同时支持ESSD Entry云盘和ESSD云盘,对于部分初次接触阿里云服务器的用户来说,可能并不是很清楚他们之间的区别,因此不知道选择哪种更好更能满足自己场景的需求,本文为大家介绍一下阿里云服务器ESSD Entry云盘和ESSD云盘的区别及选择参考。
|
资源调度 PyTorch 调度
多任务高斯过程数学原理和Pytorch实现示例
本文探讨了如何使用高斯过程扩展到多任务场景,强调了多任务高斯过程(MTGP)在处理相关输出时的优势。通过独立多任务GP、内在模型(ICM)和线性模型(LMC)的核心区域化方法,MTGP能够捕捉任务间的依赖关系,提高泛化能力。ICM和LMC通过引入核心区域化矩阵来学习任务间的共享结构。在PyTorch中,使用GPyTorch库展示了如何实现ICM模型,包括噪声建模和训练过程。实验比较了MTGP与独立GP,显示了MTGP在预测性能上的提升。
350 7
|
弹性计算 JSON 开发工具
"一键玩转阿里云ECS!Python大神揭秘:如何自动化创建镜像并跨地域复制,让你的云资源部署秒变高效达人!"
【8月更文挑战第14天】本文介绍如何使用Python与阿里云SDK自动化管理ECS镜像,包括创建镜像及跨地域复制,以优化云资源部署。首先安装`aliyun-python-sdk-ecs`并配置阿里云凭证。接着,通过Python脚本实现镜像创建与复制功能,简化日常运维工作并增强灾难恢复能力。注意权限及费用问题。
331 2
|
存储 运维 API
一张图读懂TuGraph Analytics开源技术架构
通过一张图描述清楚TuGraph Analytics的整体架构和关键设计,帮助大家快速了解TuGraph Analytics项目轮廓。
一张图读懂TuGraph Analytics开源技术架构
|
存储 弹性计算 运维
阿里云经济型e实例详细介绍_性能测试_使用限制说明
阿里云服务器ECS推出经济型e系列,经济型e实例是阿里云面向个人开发者、学生、小微企业,在中小型网站建设、开发测试、轻量级应用等场景推出的全新入门级云服务器,CPU采用Intel Xeon Platinum架构处理器
|
JavaScript 前端开发 安全
【QML 与 C++ 之间的通讯机制】QML 与 Qt 通讯:讲解如何在QML 中使用C++类,以及如何在C++ 中获取QML的内容
【QML 与 C++ 之间的通讯机制】QML 与 Qt 通讯:讲解如何在QML 中使用C++类,以及如何在C++ 中获取QML的内容
1810 1
|
Oracle NoSQL 固态存储
阿里云服务器ESSD Entry云盘和Entry云盘区别及选择参考
在我们选择阿里云服务器的时候,有部分云服务器同时支持ESSD Entry云盘和ESSD云盘,可能有的用户还不清楚他们之间的区别,因此不知道选择哪种更好更能满足自己场景的需求,本文为大家介绍一下阿里云服务器ESSD Entry云盘和ESSD云盘的区别及选择参考。
2614 0
阿里云服务器ESSD Entry云盘和Entry云盘区别及选择参考
|
存储 安全 前端开发
浏览器跨窗口通信:原理与实践
浏览器跨窗口通信:原理与实践
644 0