!2 v1.0.1 Merge pull request !2 from Chenyt26/master-dev
对象存储服务(Object Storage Service,OBS)是一个基于对象的海量存储服务,为客户提供海量、安全、高可靠、低成本的数据存储能力。 您可以使用OBS Helper action实现如下对OBS的操作:1、上传文件/文件夹2、下载文件/文件夹3、创建桶4、删除桶本项目说明文件仅做基础功能示例,具体不同场景下的使用样例及其参数使用请访问OBS Helper Workflow Sample
1、需要开通华为云的OBS服务,进行对象操作时需要建好桶。OBS主页,OBS文档;2、action调用华为云接口需要华为云鉴权,建议将您华为云账户的ak/sk配置于您GitHub工程中的settting-Secret-Actions,分别添加为ACCESSKEY、SECRETACCESSKEY以加密使用,获取ak/sk方式; 3、注意替换参数region为自己OBS服务的地区,方便插件配置终端节点 obs.’<region>‘.myhuaweicloud.com 来访问您的OBS服务;4、注意替换参数bucket_name为自己OBS服务的桶名(创建桶时为要创建的桶名)
推荐使用huaweicloud/auth-action进行OBS操作的鉴权认证。
- name: Authenticate to Huawei Cloud uses: huaweicloud/auth-action@v1.0.0 with: access_key_id: ${{ secrets.ACCESSKEY }} secret_access_key: ${{ secrets.SECRETACCESSKEY }} region: '<region>'
请注意,上传/下载时,地址类参数请不要使用操作系统独有的地址符号(如Linux系统的’~‘,会被识别成名为’~‘的文件夹)。Github Actions提供的上下文功能中,有一些常用的地址上下文,例如:
name: Show Contexts on: push: branches: master jobs: Show-Workspace: runs-on: ubuntu-latest steps: # ${{ github.workspace }}为action运行时的工作目录 - name: Echo Workspace of Action run: echo ${{ github.workspace }} # ${{ runner.temp }}为运行器临时目录的路径 - name: Echo Temporary Directory on the Runner run: echo ${{ runner.temp }}
目前OBS支持的区域名称和对应region(区域)、终端节点请见对象存储服务 OBS
目前OBS支持的存储类型(storage_class)如下
标准存储: standard 低频访问存储: infrequent 归档存储: archive
以下action示例片段若无特别说明,均默认使用了华为云统一鉴权huaweicloud/auth-action。
- name: Authenticate to Huawei Cloud uses: huaweicloud/auth-action@v1.0.0 with: access_key_id: ${{ secrets.ACCESSKEY }} secret_access_key: ${{ secrets.SECRETACCESSKEY }} region: 'cn-north-4'
注意:上传单个文件时,在使用参数obs_file_path的时候,请使用是否以’/‘作为结尾来区分是上传为文件,还是上传至文件夹。
假设本地文件夹的格式如下:
└── src1 ├── src2 ├── test1.txt └── test2.txt └── src3 └── test3.txt
- name: Upload to Huawei Cloud OBS uses: huaweicloud/obs-helper@v1.4.0 with: bucket_name: 'bucket-test' local_file_path: 'src1/src2/test1.txt' obs_file_path: 'test1.txt' operation_type: 'upload'
成功上传后,桶内生成对象为:
test1.txt
- name: Upload to Huawei Cloud OBS uses: huaweicloud/obs-helper@v1.4.0 with: bucket_name: 'bucket-test' local_file_path: 'src1' obs_file_path: 'src' operation_type: 'upload' include_self_folder: true
src └── src1 ├── src2 ├── test1.txt └── test2.txt └── src3 └── test3.txt
- name: Upload to Huawei Cloud OBS uses: huaweicloud/obs-helper@v1.4.0 with: bucket_name: 'bucket-test' local_file_path: | 'src1/src2/test1.txt' 'src1/src3' obs_file_path: 'src' operation_type: 'upload' include_self_folder: false
src └── test1.txt └── src3 └── test3.txt
注意:下载文件时,在使用参数local_file_path的时候,请使用是否以’/‘作为结尾来区分是下载为文件,还是下载至文件夹。
假设bucket-test桶内包含如下对象:
test1.txt src1 ├── src2 ├── test2.txt └── test3.txt └── src3 └── test4.txt
- name: Download File from Huawei Cloud OBS uses: huaweicloud/obs-helper@v1.4.0 with: bucket_name: 'bucket-test' local_file_path: 'src1/' obs_file_path: 'test1.txt' operation_type: 'download'
下载完成后,本地生成的文件为:
└── src1 └── test1.txt
- name: Download from Huawei Cloud OBS uses: huaweicloud/obs-helper@v1.4.0 with: bucket_name: 'bucket-test' local_file_path: 'src' obs_file_path: 'src1' operation_type: 'download' include_self_folder: true
src └── src1 ├── src2 ├── test2.txt └── test3.txt └── src3 └── test4.txt
- name: Download from Huawei Cloud OBS uses: huaweicloud/obs-helper@v1.4.0 with: bucket_name: 'bucket-test' local_file_path: 'src' obs_file_path: 'src1' operation_type: 'download' include_self_folder: false exclude: | 'src1/src2/test3.txt' 'src1/src3'
src └── src2 └── test2.txt
创建新桶时,可指定是否开放桶公共读权限(public_read)和桶的存储类型(storage_class)。若不指定,默认不开放公共读权限,存储类型为标准存储(standard)。如需开放更多权限,请至obs控制台进行修改。
假设您的OBS中不存在名为’new-bucket’的桶
- name: Create Bucket on Huawei Cloud OBS uses: huaweicloud/obs-helper@v1.4.0 with: access_key: ${{ secrets.ACCESSKEY }} secret_key: ${{ secrets.SECRETACCESSKEY }} region: 'cn-north-4' bucket_name: 'new-bucket' operation_type: 'createBucket' public_read: true storage_class: 'infrequent'
执行成功后,OBS中会创建一个名为’new-bucket’、开放公共读权限,存储类型为低频访问存储的桶
删除桶操作默认会自动清空桶内所有对象和碎片,若您不确定桶内是否有重要对象未备份,请设置参数’clear_bucker’为false
假设您的obs中存在名为’new-bucket’的桶
- name: Delete bucket on Huawei Cloud OBS uses: huaweicloud/obs-helper@v1.4.0 with: bucket_name: 'new-bucket' operation_type: 'deleteBucket'
执行成功后,您在obs的桶’new-bucket’以及其中所有对象和碎片将被删除
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802032778号
Huawei Cloud OBS Helper
对象存储服务(Object Storage Service,OBS)是一个基于对象的海量存储服务,为客户提供海量、安全、高可靠、低成本的数据存储能力。 您可以使用OBS Helper action实现如下对OBS的操作:
1、上传文件/文件夹
2、下载文件/文件夹
3、创建桶
4、删除桶
本项目说明文件仅做基础功能示例,具体不同场景下的使用样例及其参数使用请访问OBS Helper Workflow Sample
前置工作
1、需要开通华为云的OBS服务,进行对象操作时需要建好桶。OBS主页,OBS文档;
2、action调用华为云接口需要华为云鉴权,建议将您华为云账户的ak/sk配置于您GitHub工程中的settting-Secret-Actions,分别添加为ACCESSKEY、SECRETACCESSKEY以加密使用,获取ak/sk方式; 3、注意替换参数region为自己OBS服务的地区,方便插件配置终端节点 obs.’<region>‘.myhuaweicloud.com 来访问您的OBS服务;
4、注意替换参数bucket_name为自己OBS服务的桶名(创建桶时为要创建的桶名)
华为云统一鉴权认证
推荐使用huaweicloud/auth-action进行OBS操作的鉴权认证。
上传下载对象参数说明
创建删除桶参数说明
参数支持列表
目前OBS支持的区域名称和对应region(区域)、终端节点请见对象存储服务 OBS
目前OBS支持的存储类型(storage_class)如下
action代码示例片段
以下action示例片段若无特别说明,均默认使用了华为云统一鉴权huaweicloud/auth-action。
上传文件示例
假设本地文件夹的格式如下:
上传文件src1/src2/test1.txt至obs根目录
成功上传后,桶内生成对象为:
上传文件夹src1(包含文件夹自身)至src文件夹
成功上传后,桶内生成对象为:
上传多个文件和文件夹(不包含文件夹自身)至src文件夹
成功上传后,桶内生成对象为:
下载文件示例
假设bucket-test桶内包含如下对象:
下载文件test1.txt至文件夹src1中
下载完成后,本地生成的文件为:
下载文件夹src1(包含文件夹自身)至文件夹src中
下载完成后,本地生成的文件为:
下载文件夹src1(不包含文件夹自身,排除下载桶内src1/sr2/test3.txt和src1/src3目录下的所有文件)到src文件夹下
下载完成后,本地生成的文件为:
创建桶用法
创建新桶时,可指定是否开放桶公共读权限(public_read)和桶的存储类型(storage_class)。若不指定,默认不开放公共读权限,存储类型为标准存储(standard)。如需开放更多权限,请至obs控制台进行修改。
创建名为’new-bucket’的桶(开放公共读、低频访问存储、未使用统一鉴权)
假设您的OBS中不存在名为’new-bucket’的桶
执行成功后,OBS中会创建一个名为’new-bucket’、开放公共读权限,存储类型为低频访问存储的桶
删除桶用法
删除桶操作默认会自动清空桶内所有对象和碎片,若您不确定桶内是否有重要对象未备份,请设置参数’clear_bucker’为false
删除名为’new-bucket’的桶(自动清空桶内所有对象和碎片)
假设您的obs中存在名为’new-bucket’的桶
执行成功后,您在obs的桶’new-bucket’以及其中所有对象和碎片将被删除
Action中使用的公网地址说明
第三方开源包引入的公网地址