---
tags: HowTo, COS, TWCC
title: HowTo:存取雲端物件儲存 (COS) | zh
GA: UA-155999456-1
---
{%hackmd @docsharedstyle/default %}
{%hackmd @docsharedstyle/twccheader-zh %}
# HowTo:存取雲端物件儲存 (COS)
:::success
<i class="fa fa-star" aria-hidden="true"></i> **適用情境:台灣杉二號 (命令列介面) 如何存取雲端物件儲存的資料?**
*您是否也有相同的困擾?讓我們手把手帶您組合 TWCC 雲端服務架構,輕鬆解決您的問題!*
:::
[ TWCC 台灣杉二號 (命令列介面) (TWNIA2 (HPC CLI))](https://www.twcc.ai/doc?page=hpc_cli) 除了可使用[高速檔案系統 (Hyper File System, HFS)](https://www.twcc.ai/doc?page=hfs) 作為運算的儲存空間外,也可將較少存取的靜態資料存放於 [TWCC 雲端物件儲存 (Cloud Object Storage, COS)](https://www.twcc.ai/doc?page=object)。
本文將介紹 2 種方式,教學 TWNIA2 (HPC CLI) 如何存取 [TWCC 雲端物件儲存 (Cloud Object Storage, COS)](https://www.twcc.ai/doc?page=object) 空間的資料:
1. **S3 用戶端工具**
透過 HTTPS (超級文字傳輸安全協定) 上傳及下載檔案,使用者可以在**登入節點**,以及**提交 job 到計算節點時**使用。
2. **掛載為網路硬碟**
採用 [FUSE (Filesystem in Userspace)](https://en.wikipedia.org/wiki/Filesystem_in_Userspace) 技術遠端掛載 COS 空間為網路硬碟,**僅限掛載於登入節點** (ln01.twcc.ai)。
:::info
<i class="fa fa-paperclip fa-20" aria-hidden="true"></i> **附註:**
建議用戶優先考慮使用 **S3 用戶端工具**:
- 因 FUSE 技術掛載 COS,並非實際本機檔案系統,因此為避免資料流失,用戶**僅能上傳單一檔案** (可多檔讀取、下載)。
- 此外還有[<ins>諸多限制</ins>](https://github.com/s3fs-fuse/s3fs-fuse#limitations),因此僅提供用戶在登入節點使用。
:::
您可依需求擇一使用,以下說明如何使用此 2 種方式。
## 1. S3 用戶端工具
S3 用戶端工具種類繁多,以下介紹的工具以 CLI 操作形式為主,您可依需求選擇使用,範例將採用 `TWCC CLI`、`S3cmd` 存取 COS 資料:
- **[S3cmd](https://github.com/s3tools/s3cmd)**
以 Python 撰寫,開發早且功能完整穩定,為最知名 S3 CLI 工具之一。
- **[TWCC CLI](https://github.com/TW-NCHC/TWCC-CLI)**
若已經熟悉 TWCC CLI,可以優先考慮使用,並可操作多項 TWCC 服務。
- 其他工具
- **[Rclone](https://github.com/rclone/rclone)** :
可串接多種雲端儲存空間,在 TWCC 台灣杉二號與雲端物件儲存之間,適合小檔案的傳輸。
- **[S5cmd](https://github.com/peak/s5cmd)** :
以 GO 語言撰寫,傳輸速度較 Python 撰寫之工具快,但功能無 S3cmd 完整。
### 安裝及設定
- 存取 TWCC 雲端物件儲存服務需輸入 **Access Key** 與 **Secret Key**。請登入至 [TWCC 使用者網站](https://www.twcc.ai/) > 雲端物件儲存服務頁面查看。
- 至`雲端物件儲存 (計畫成員共享空間)` 或 `私有雲端物件儲存 (個人空間)` 之**第三方軟體下載**頁面,即可找到 Key 資訊。
![](https://cos.twcc.ai/SYS-MANUAL/uploads/upload_5db9d1f9718fc6c8ed4dee7a4995bee4.png)
#### S3cmd
- **安裝**
```bash
# 使用 pip 安裝
$ pip install s3cmd --user
```
- **寫入金鑰**
```bash
# 可自行選擇熟悉 editor 寫入 ~/.s3cfg,這邊以 vim 為例
$ vim ~/.s3cfg
```
```bash
# 寫入內容
-----------------------
# Setup endpoint
host_base = cos.twcc.ai
host_bucket = cos.twcc.ai
use_https = True
# Setup access keys
access_key = <COS Access Key>
secret_key = <COS Secret Key>
-----------------------
```
#### TWCC CLI
- **安裝**
```bash
# 使用 pip3 安裝
$ pip3 install TWCC-CLI --user
```
- **如何加入金鑰、選擇計畫,進入 TWCC CLI 環境,詳情可參考 [TWCC CLI 文件](https://man.twcc.ai/@twccdocs/doc-cli-main-zh/https%3A%2F%2Fman.twcc.ai%2F%40twccdocs%2Fguide-cli-signin-zh)**。
<!-- #### MCLI
- **安裝**
已預先裝於台灣杉二號,使用以下指令載入工具即可。
```bash
$ module load mcli
```
- **寫入金鑰**
加入金鑰,指令及參考範例如下。
```bash
$ mcli config host add twcc https://cos.twcc.ai <COS Access Key> <COS Secret Key>
``` -->
### 操作範例
每個範例動作,依序展示使用指令 `S3cmd`、`TWCC CLI` 的操作方式。
- **建立名為 `mytwccbucket` 的 bucket**
```bash
# for S3cmd
$ s3cmd mb s3://mytwccbucket
# for TWCC CLI
$ twccli mk cos -bkt mytwccbucket
```
- **上傳檔案**
先在 /home 目錄建立一個空檔案,檔名為 `myfile`
```bash
$ touch ~/myfile
```
複製檔案到 `mytwccbucket` bucket
```bash
# for S3cmd
$ s3cmd put ~/myfile s3://mytwccbucket/
# for TWCC CLI
$ twccli cp cos -bkt mytwccbucket -fn myfile -sync to-cos
```
- **查閱檔案**
查閱是否上傳成功
```bash
# for S3cmd
$ s3cmd ls s3://mytwccbucket/myfile
# for TWCC CLI
$ twccli ls cos -bkt mytwccbucket
```
- **刪除檔案**
刪除剛上傳的 myfile
```bash
# for S3cmd
$ s3cmd rm s3://mytwccbucket/myfile
# for TWCC CLI
$ twccli rm cos -bkt mytwccbucket -okey myfile
```
- **刪除 bucket**
請先確認 bucket 內無檔案,再刪除 bucket
```bash
# for S3cmd
$ s3cmd rb s3://mytwccbucket
# for TWCC CLI
$ twccli rm cos -bkt mytwccbucket
```
:::info
<i class="fa fa-paperclip fa-20" aria-hidden="true"></i> **附註:** 其他參數及說明:
- S3cmd
可以下 `$ s3cmd --help` 參考,或是查閱 [<ins>s3cmd GitHub</ins>](https://github.com/s3tools/s3cmd#simple-s3cmd-howto)
- TWCC CLI
可以下 `$ twccli --help` 參考,或是查閱 [<ins>TWCC CLI 文件</ins>](https://man.twcc.ai/@twccdocs/twcc-cli-v05#4-%E9%9B%B2%E7%AB%AF%E7%89%A9%E4%BB%B6%E5%84%B2%E5%AD%98%E6%9C%8D%E5%8B%99COS-Cloud-Object-Storage)
:::
## 2. 掛載
以下將介紹兩種掛載工具:[Goofys](https://github.com/kahing/goofys) 與 [S3fs](https://github.com/s3fs-fuse/s3fs-fuse),您可依需求選擇。
:::info
<i class="fa fa-paperclip fa-20" aria-hidden="true"></i> **附註:** 掛載方式僅能在登入節點 ln01.twcc.ai 使用。
:::
### 建立 COS bucket
- 請參考 TWCC [雲端物件儲存](https://www.twcc.ai/doc?page=object)手冊,並在使用者網站先建立 1 個 COS bucket。(Bucket 的管理無法透過 TWNIA2 操作)
- 登入 ln01.twcc.ai 後,在自己帳號下創立 `~/mount_cos` 資料夾:
```bash
$ mkdir -p ~/mount_cos
```
### 寫入金鑰
以下將建立資料夾 `~/.aws`,請複製 TWCC 網頁的 COS 金鑰字串,寫入 `~/.aws/credentials`。
可自行選擇熟悉 editor ,範例以 `vim` 為例:
```bash
$ mkdir -p ~/.aws
$ vim ~/.aws/credentials
```
寫入以下內容:
```bash
[default]
aws_access_key_id = COS Access Key
aws_secret_access_key = COS Secret Key
```
### [Goofys](https://github.com/kahing/goofys)
- 以 Go 語言撰寫,效能佳,可優先考慮使用。
掛載指令:
```bash
$ goofys --endpoint https://cos.twcc.ai mytwccbucket ~/mount_cos
```
### [S3fs](https://github.com/s3fs-fuse/s3fs-fuse)
- S3fs為知名的 s3 掛載工具。
掛載指令:
```bash
$ s3fs mytwccbucket ~/mount_cos -o url=https://cos.twcc.ai/ -o use_path_request_style
```
### 存取方式
掛載完成後,只需在`~/mount_cos` 路徑之下讀寫,就能存取剛建立的 COS `mytwccbucket` 資料。
以下示範操作
```bash
# 寫入一個空檔案,檔名為 myfile
$ touch ~/mount_cos/myfile
```
此時在 TWCC 網頁的雲端物件儲存管理,點選`mytwccbucket`,可以查看到內容新增了`myfile`檔案。
### 卸載
請先離開掛載的資料夾,回到 /home 目錄。
```bash
$ cd ~/
```
再執行卸載指令。
```bash
$ fusermount -u ~/mount_cos
```
再執行以下指令,資料夾裡無檔案,即卸載完成。
```bash
$ ls ~/mount_cos
```