使用 Ruby 3.0 計算 AWS S3 Authorization 簽署值

最近在工作上需要使用 AWS S3 下載檔案,對方給了我關於該 AWS S3 的 Bucket name、Access Key 與 Secret Key,需要按照 AWS S3 的文件前去下載該檔案。 從 AWS 的文件中可以看出來,為了要計算簽署值,需要先準備簽署的本體,本體裡面有一段 CanonicalizedResource,他的格式如下 上面的格式裡的第一個字 “/” 千萬不要漏掉,我在這邊卡了好久,就是因為漏了這個字。 翻譯白話的意思就是說,假設我要去下載 https://glee-bucket.s3.amazonaws.com/files/abc.jpg,那麼這個網址的 Bucket name 就叫做 glee-bucket,URI 就是 /files/abc.jpg,最終做出的 CanonicalizedResource 就是: 最後再把這個請求的資料 依據整個本體的格式 做成 然後就可以用 Ruby 中的 HMAC-SHA1-Digest 來計算了: 用 Shell Script 測試簽署值是否可以下載檔案

XPATH 小筆記

假設有以下這份 XML 文件: 選擇所有的 Name 開頭用 // 代表尋找整份文件裡,Node 為 name 的所有元素。如果後面加上 text() 的話,就是只要裡面的文字就好。同理,也可以換成 //id/text(),就可以拿到全部的 ID。 尋找內容是「關閉相機」的 ID 開頭一樣是尋找這份文件,多的是要確認 name 元素裡面的文字內容得是「關閉相機」。找到後,可能會特別想要這個節點裡面的 ID,因此使用 XPATH 裡面的 AXES 功能,找到同一層的哥哥 ID,並且取得裡面的文字。preceding-sibling 就是哥哥的意思,following-sibling 就是弟弟的意思。 *其實 Silbing 是指有同一個父母的元素,分成 Preceding 與 Following 只是在區分前後而已。 尋找內容有包含「http」 //string[contains(text(),’http’)] 開頭一樣是尋找文件裡所有節點是 String 的,然後找裡面文字有包含 http 的。 好用的小工具: http://xpather.com