如何讓完美的讓USER只能存取一個 S3 bucket - 使用AWS Organizations

前陣子遇到一個這樣的需求, 外部的USER想用傳輸軟體上傳一些圖檔到 S3 ,做為靜態網站使用。直覺上這不是什麼難事, IAM 權限設定一下即可。

但是實際研究了一下, 無論IAM Policy如何設計, 對於S3 第一層的Bucket 列表, 只有兩種選擇, 全部列表出來或是全部隱藏. 並不能列出某一個特定Bucket 給USER看, 這造成兩個問題:

  1. 我不想讓USER(可能是外部USER甚至包商等等), 從S3 Bucket列表名稱裡,猜到公司的一些資訊.
  2. 有些第三方的S3上下傳軟體,依賴著這個List功能, 如果你隱藏了S3 Bucket List, 軟體會判定登入有問題而拒絕進一步操作.

AWS 官方Forum也證明了這個限制(2017/03)

--

使用 AWS Organizations

AWS Organizations是在2016年底 re:Invent 推出的新功能, 簡單來說, 就是管理AWS多帳號的功能。這邊指的多帳號,並不是IAM帳號,而是AWS Root Account. 當公司組織很大, 可以使用這功能開幾個帳號給下面單位使用 …

more ...

AWS Lambda - 從傳入的 S3 Event 裡取得資訊

我們寫 Lambda Function的時候, 要實作 handler . 當事件驅動了這個 function 的時候, 相關資訊會經由 event 這個參數傳進來.

def handler_name(event, context): 
    ....
    return some_value  

接下來就探討一下, 我們會從 event 裡看到什麼樣的資訊.

準備動作

AWS Lambda 小練習: 氣溫資料爬蟲 為例, 我希望每當爬蟲把網頁抓回來丟上S3之後, S3的trigger 就能自動呼叫另一隻 Parser 用途的Lambda Function, . 所以至少我得知道來源是哪個檔案才能進行下一步.

以下是新增 trigger步驟:

對著你寫好的 parser lambda function, 新增一個由 S3 發動的 trigger. 這邊順便加了一些條件. 這邊只接受物件上傳 Put Event (其他的event …

more ...

部落格月底盤點, 一個月只燒了1美元

以前對於自建Blog , 總是直覺認為就是 web server + DB 的組合. 但是租一台便宜的虛擬機器少說也要5~10美金一個月. 無論你的網站多小, 最低門檻就是要付這些錢.

直到朋友 qrtt1 提醒才如夢初醒, 只要使用了靜態Blog產生器, 就可以甩開資料庫/php . 你會產生一些靜態網頁及圖片, 只要找個簡單的網頁空間放上即可. 這給我一種打開了另一扇窗的感覺.

由於現在主流雲端儲存服務, 都能做到「托管靜態網站」的功能, 而且我確信我的站很小, 費用一定可以極小化,於是我決定試試靜態網頁產生器+ AWS S3的組合.

這個Blog已經開張一個月了, 打開帳單一看, 差不多 1美元的費用, 算是我可以接受的範圍, 在這邊寫一篇記錄一下.

流量

--

這個月的流量很低, 而且可能超過一半都是來自於我自己的.

費用

--

以下是分項說明(單位皆為美金):

  • CloudFront
    • 說明: CDN, 網站對外頻寬費用都在這塊
    • 頻寬: 0.025 GB
    • 費用小計: $0 …
more ...

AWS儲存降價- S3 & Glacier降價 , Glacier新增兩種資料擷取選項

AWS CEO Andy Jassy 在月初的Twitter提到, 想在月底 AWS re:Invent 上分享的東西太多, 所以會在這陣子就先公布一些新消息, 所以這陣子經常被新消息洗版..

今天的S3 & Glacier 降價消息跟大家比較相關:

S3 降價

S3 的標準儲存降價16~24%, 每GB-月的價格大約從 $0.03 降到 $0.023~$0.025 美金左右. 對於那些比較貴的 Region 像是Tokyo等等 ,降的比較多. 降價之後, 跟 GCE & Azure的簡單比較:

  • GCE Cloud Storage : $0.026 GB/month (Multi-Regional 等級)
  • Azure Blob : $0.030 …
more ...