Kettle 如何下载OSS上的文件
使用OSS FTP
ossftp是一个特殊的FTP server,可以将对文件、文件夹的操作映射为对OSS的操作,使您可以基于FTP协议来管理存储在OSS上的文件。
容器化部署OSS FTP
- 下载ossftp安装包 , 地址
- 编写dockerfile
FROM centeros7.9
RUN yum -y install zip unzip
RUN mkdir /opt/ossftp
COPY ossftp-1.2.0-linux-mac.zip /opt/ossftp
RUN unzip /opt/ossftp/ossftp-1.2.0-linux-mac.zip -d /opt/ossftp/
RUN chmod 755 /opt/ossftp/ossftp-1.2.0-linux-mac/start.sh
EXPOSE 2048 8192
ENTRYPOINT ["/opt/ossftp/ossftp-1.2.0-linux-mac/start.sh"]
- 把dockerfile 和 安装盘放在同一个目录
- 返回上一级执行
docker build -t ossftp ossftp_docker
- 运行容器
docker run -p 8192:8192 -p 2048:2048 -p 51000-53000:51000-53000 \
-v /opt/ossftp/config.json:/opt/ossftp/ossftp-1.2.0-linux-mac/config.json \
-d ossftp
- 访问页面
http://localhost:8192/?module=launcher&menu=config
配置ossftp
参数 | 示例值 | 说明 |
ossftp监听地址 | 127.0.0.1 | 使用FTP服务的客户端IP。如果是在本机上运行客户端,保持默认。 |
ossftp监听端口 | 2048 | ossftp的接收访问请求的端口。不与其他端口冲突时,保存默认。 |
ossftp被动端口范围起始端口 | 51000 | ossftp回应访问请求的起始端口。不与其他端口冲突时,保持默认。 |
ossftp被动端口范围终止端口 | 53000 | ossftp回应访问请求的结束端口。不与其他端口冲突时,保持默认。 |
ossftp日志等级 | INFO | 设置ossftp的日志输出等级。取值如下:DEBUG:记录细粒度信息事件,一般用于调试程序。INFO:记录软件正常运行发生的事件。WARNING:记录不会对系统造成影响的非正常事件。ERROR:记录会对系统造成影响,但不影响系统稳定性的非正常事件。CRITICAL:记录导致系统无法正常工作的事件。 |
Bucket endpoints | examplebucket.oss-cn-hangzhou.aliyuncs.com | Bucket的访问域名。格式为 |
Language | cn | ossftp的显示语言。 |
单击保存配置,然后单击重启使配置生效。
创建自定义登录用户
ossftp客户端可以使用拥有Bucket访问权限的AccessKey访问ossftp服务端,也可以使用拥有Bucket访问权限的自定义登录用户访问ossftp服务端。本文介绍如何在ossftp服务端为ossftp客户端创建自定义登录用户。
操作步骤
- 登录安装了ossftp的服务器。
- 切换到ossftp的安装目录。
- 修改config.json中的accounts。
配置示例如下:
{
"modules":{
"accounts":[
{
//填写拥有Bucket访问权限的AccessKey ID和AccessKey Secret。
"access_id":"LTAI4FrfJPUSoKm4JH******",
"access_secret":"Y6IoUOZReouXvWaXuwjvDch9******",
//填写目标Bucket名称。
"bucket_name":"examplebucket",
//填写Bucket内文件的访问路径。填写后,该账号仅可以访问指定路径的文件;置空则表示允许访问Bucket内所有文件。
"home_dir":"examplefolder/",
//自定义登录密码。
"login_password":"password1",
//自定义登录用户名。
"login_username":"user1"
},
{
//填写拥有Bucket访问权限的AccessKey ID和AccessKey Secret。
"access_id":"LTAI4FrfJPUSoKm4JH******",
"access_secret":"Y6IoUOZReouXvWaXuwjvDch9******",
//填写目标Bucket名称。
"bucket_name":"examplebucket",
//填写Bucket内文件的访问路径。填写后,该账号仅可以访问指定路径的文件;置空则表示允许访问Bucket内所有文件。
"home_dir":"",
//自定义登录密码。
"login_password":"password2",
//自定义登录用户名。
"login_username":"user2"
}
],
"launcher":{
"auto_start":0,
"control_port":8192,
"language":"cn",
"popup_webui":1,
"show_systray":1
},
"ossftp":{
"address":"127.0.0.1",
"bucket_endpoints":"",
"log_level":"INFO",
"passive_ports_start":51000,
"passive_ports_end":53000,
"port":2048
}
}
}
重启ossftp服务使自定义登录用户生效。
通过浏览器访问ossftp的图形化管理界面。
连接OSS FTP
docker运行脚本
#/bin/bash
imagesName=$1
CONTIANER_ID_A=`docker ps | grep :2048- | cut -d " " -f 1`
docker stop ${CONTIANER_ID_A}
docker run -p 8192:8192 -p 2048:2048 -p 51000-53000:51000-53000 \
-v /opt/ossftp/config.json:/opt/ossftp/ossftp-1.2.0-linux-mac/config.json \
-d $imagesName
docker system prune -a -f
坑
配置完成之后连接不上
- 解决: 这里记得写0.0.0.0
连接ossftp之后获取不到目录
- 解决 : 开放51000-53000
使用自定义用户无法连接
还未解决
kettle从FTP下载下来的Excel无法打开
- 解决办法 勾选二进制模式