Created
July 1, 2016 09:10
-
-
Save thebrecht/8a6b84d6a17c23ee996706cf92d4696b to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
最近遇到需要在命令列底下上傳檔案到AWS S3,查了一些介紹。 | |
首先是官網的資源 http://aws.amazon.com/tw/cli/ ,其實這裡應該可以查到所有需要的資訊了。(不過雖然掛正體中文的版本,但目前還是英文的內容就是了) | |
安裝 AWS Command Line Interface (CLI) | |
要在 commadn line 上和AWS溝通,首先要安裝 awscli,下載路徑,Windows有 32 / 64位元 的執行檔,Mac/Linux的話需要使用Python套件管理工具 pip 安裝 awscli。 | |
我自己的環境中沒有pip,所以要先從pip裝起。 | |
install pip | |
在Ubuntu底下,一行搞定。 | |
sudo apt-get install python-pip | |
install awscli | |
pip install awscli | |
讓子彈飛一下,很快就裝完了。 | |
使用 AWS IAM 服務,取得API key和 Secret Key | |
在使用 awscli 之前,需要設定 API key 和 Secret key。如果你已經有這兩組Key,就可以跳過這段;如果沒有,這時需要到AWS 的 IAM ( Identity and Access Management) 服務註冊一個 User,並取得 User 的 API key 和 Secret key 。 | |
到AWS web控制台上找到 IAM的服務,在Dashboard中找到 User、進去後點選 Create New User,建完後,有一個「Show User Security Credentials」點開來看,就可以看到這個 User的 API Key 和 Secret Key,請把它存下來,或是下方也有一個 「Download Credentials」可以下載這2組的csv檔案。 | |
注意:請妥善保存這組key,API key查得到,但是 Secret Key生成後,就好像就查不到了,弄丟好像就只能再生成另一組 key 。 | |
取得 S3 的存取權限 | |
雖然我們已經有key 可以準備存取 S3了,但是在此之前,還得先開權限給它,才能正常使用。請回到 IAM 的 User 列表中,點選剛剛建立的 User名稱,進去後有一個 Permissions 的區塊,點選 Attach Policy。進入後有各種權限的設定,我們要找的是「AmazonS3FullAccess」,勾選 Attach 即可。 | |
這樣,我就們取得了 S3 的存取權限。 | |
設定 awscli | |
終於回到了 awscli ,在command line 底下輸入: | |
aws configure | |
執行後它會問下面四個問題: | |
AWS Access Key ID | |
AWS Secret Access Key | |
Default region name | |
Default output format | |
前兩個我們已經取得了,依序填入即可。 | |
region name 是你的 S3 所在的 region ,以我自己為例,是使用 us standard,也就是 us-east-1 ,region可以到這裡查詢 http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region 。 | |
第四個是輸出的格式(有 json、text、table 三種格式),沒有特別需求的話,enter 按下去留白即可。 | |
使用awscli | |
awscli 可以跟許多AWS的服務溝通(不知道是不是全部啦,aws服務那麼多,誰曉得。不過常用的都有啦),而我們的目標是使用S3,它的基本組成語法結構就是: | |
aws s3 (命令) 〔本地端檔案路徑〕(s3 bucket 路徑,以s3:// 開頭) [其餘的參數] | |
可以用: | |
aws s3 help | |
來查詢可以用的命令。 | |
使用mb指令建立 bucket | |
在開始上傳檔案之前,我們要先建立一個bucket來當作存放的位置。由於 bucket 的名稱不能重複,所以可以考慮使用網址格式的命名方式來命名 bucket。例如可以取成 test.brecht.im。 那就讓我們來建立 bucket: | |
aws s3 mb s3://test.brecht.im | |
建立完成後,會回傳make_bucket的訊息。如果還想確認一下,那就使用: | |
aws s3 ls | |
這時就會列出剛剛建立的bucket了。 | |
ps. 預設 bucket的權限不是公開的,不過只要對後面的存取檔案設定公開讀取權限,檔案就可以公開存取。如果要進一步了解用指令修改 bucket的權限設定,可參考 http://docs.aws.amazon.com/cli/latest/userguide/using-s3api-commands.html | |
使用 cp 指令上傳檔案 | |
假設我們有一個 README.md 的檔案,要放在剛剛建立的bucket底下的 backup目錄,那就就用以下的語法: | |
aws s3 cp README.md s3://test.brecht.im/backup/ --acl public-read | |
上傳後,就可以透過 https://s3.amazonaws.com/test.brecht.im/backup/README.md 下載或讀取檔案了。 | |
可以用下面指令檢查: | |
aws s3 ls s3://test.brecht.im/backup | |
注意到後面的--acl是設定存取權限,public-read是讓大家都可以讀取,沒加上這個參數的話,上傳的檔案別人就讀不到了。就上傳物件來說,它可以設定的權限有: | |
private | |
public-read | |
public-read-write | |
請視實際需要服用,另外 bucket也可以作權限的設定,詳細的情況,可以參考: http://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html | |
aws s3 的指令大抵類似 linux的指令,接在 aws s3後面可以使用的指令還有: | |
cp (複製檔案) | |
help (說明檔) | |
ls (列出檔案) | |
mb (建立 bucket) | |
mv (搬移檔案) | |
rb (刪除bucket) | |
rm (刪除檔案) | |
sync (本地端與bucket或是bucket與bucket之間同步) | |
website (bucket用作網站的設定) | |
相關資源 | |
http://aws.amazon.com/tw/cli/ (awscli 官方網站) | |
http://tmont.com/blargh/2014/1/uploading-to-s3-in-bash (如果想用bash script來備份檔案到S3可參考) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment