Please enable Javascript to view the contents

透過 AWS CLI 操作 S3

 ·  ☕ 3 min read

建立 IAM 使用者

首先建立一個 IAM 使用者


click iam

進入後點選左側的存取管理/使用者


click iam user

點選「新增使用者」

click iam create user

新增使用者

輸入「使用者名稱」

存取類型勾選「程式設計方式存取」


click iam create user 1

設定許可

設定許可選擇「直接連接現有政策」

勾選「AdministratorAccess」

建立沒有許可界限的 user


click iam create user 2

新增標籤 (選用)

標籤部分跳過


click iam create user 3

檢閱

確認資訊無誤


click iam create user 4

成功

將 CSV 下載保存


click iam create user 5

AWS CLI 操作

安裝 AWS CLI

接下來安裝 AWS CLI


安裝完成後,開啟 CMD 輸入 aws --version,沒意外會跑出相關資訊


aws version

組態設定

接著輸入 aws configure,查看剛剛下載的 CSV,依序輸入以下

  • AWS Access Key ID (英文只有大寫的那串)
  • AWS Secret Access Key (比較長的那串)
  • Default region name (輸入離你比較近的地區 ap-northeast-1 (東京))
  • Default output format (輸入 json)

aws configure

之後就可以透過 AWS CLI 對 S3 進行操作了

基本操作

主要使用命令 aws s3 對儲存貯體 (Bucket) 進行操作


s3 mb 建立儲存貯體 (必須唯一)

1
2
aws s3 mb s3://儲存貯體名稱
aws s3 mb s3://儲存貯體名稱 --region 地區名稱

s3 ls 列出儲存貯體或儲存貯體中的資料夾及物件

1
2
3
aws s3 ls	# 列出已存在的儲存貯體
aws s3 ls s3://儲存貯體名稱
aws s3 ls s3://儲存貯體名稱/資料夾名稱/

s3 rb 刪除儲存貯體

1
2
aws s3 rb s3://儲存貯體名稱	# 預設儲存貯體必須為空
aws s3 rb s3://儲存貯體名稱 --force	# 強制刪除

其它還有 s3 cps3 mvs3 rms3 sync
操作上與 Liunx、Windows 的命令很像

實戰

目前我新增文章,都是將 Hugo 生成的 public 資料夾整個直接上傳到 S3 (如何使用 Hugo 建立一個靜態網站)

感覺有點麻煩,因此我想改成使用 AWS CLI 的方式來上傳

使用 s3 sync 命令來做同步
會更新任何與目的地檔案具有相同檔名、但檔案大小或修改時間不同的檔案

1
2
3
4
5
6
7
8
aws s3 sync 來源 目的地

# 例如
aws s3 sync "D:\Blog\public" s3://blog.mytest.com --delete --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers full=id=自己的 AWS 正式使用者 ID

# 上面表示將本機的 D:\Blog\public 同步到 S3 名為 blog.mytest.com 的儲存貯體
# 同時刪除該儲存貯體裡在 D:\Blog\public 資料夾中不存在的物件
# 並賦予所有人讀取權限以及自己的 AWS 帳戶完整權限

正式使用者 ID 可以從 AWS 右上角點選「我的安全登入資料」後的「帳戶識別符」找到


aws id

只要一行命令,就可以取代打開瀏覽器、登入 AWS、到 S3 上傳檔案的一系列動作了

還沒完,這樣還是要打那一長串命令,寫成 Batch 吧
新增文件複製貼上以下並更改變數 LOCALBUCKETAWS_ID
另存新檔,副檔名為 .bat

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
@ECHO off
mode con:cols=100 lines=25

::----------
:Start
set LOCAL=本機絕對路徑
set BUCKET=S3 儲存貯體
set AWS_URI=http://acs.amazonaws.com/groups/global/AllUsers
set AWS_ID=自己的 AWS 正式使用者 ID

::----------
CLS
ECHO -----------------------------------------------------------------------------------------------
ECHO LOCAL     %LOCAL%
ECHO BUCKET    %bucket%
ECHO -----------------------------------------------------------------------------------------------
ECHO READY...
PAUSE
goto S3_Sync

::----------
:S3_Sync
ECHO ----------
aws s3 sync %LOCAL% %BUCKET% --delete --grants read=uri=%AWS_URI% full=id=%AWS_ID%
ECHO ----------
ECHO DONE!
PAUSE

::----------
:End
exit

以後只要執行這個 Batch 檔就 OK 了


demo

Done

分享
您的鼓勵是我最大的動力

JIHONGO
作者
JIHONGO
A Person