Upgrade to Pro — share decks privately, control downloads, hide ads and more …

aws workshop for beginner

aws workshop for beginner

Ching Yi Chan

February 04, 2014
Tweet

More Decks by Ching Yi Chan

Other Decks in How-to & DIY

Transcript

  1. • AWS 的演變 • AWS 服務與計費模型 
 Lab:導覽計費⾴頁⾯面
 Lab:申請 AWS

    帳號 • AWS 常⽤用服務 EC2、S3 • AWS Web Console 
 Lab:導覽各服務與 Region 課程⼤大綱(1)
  2. • Simple Storage Service (Amazon S3) 簡介
 Lab:S3 console 主要功能

    • Elastic Compute Cloud (Amazon EC2) 簡介
 Lab:Web Console
 Lab:設定 EC2 Command Line Tool
 Lab:簡單 Web Server 建置 • 認識 Security Group、KeyPair、AMI • 認識 Spot Instance 與 Reserved Instance 課程⼤大綱(2)
  3. ! • 以 Linux VM 為例,設定 public key 認證 •

    putty for windows user • authorized_keys file for unix-like user
 
 課程⼤大綱(3)
  4. • 每⼀一個獨⽴立的 AWS 服務都會有 pricing ⾴頁⾯面 • pricing 的實際⺫⽬目標是以『使⽤用的資源』類型各 別計算。不同的資源計算的單位、單價各有不

    同。 • 別忘了使⽤用 API Request 是需收費的『資源』, 計使⽤用次數與傳輸量(http request 與 http response 也是有流量的)。 AWS 服務與計費模型(1)
  5. • 免費套餐僅適⽤用於新的 AWS 客⼾戶,可在註冊 AWS 後的 12 ⽉月內均可使⽤用。 • 當免費試⽤用過期或者使⽤用量超過了免費試⽤用套

    餐限額,需依標準費率⽀支付超額的費⽤用。 • 免費使⽤用量每個⽉月計算⼀一次並⾃自動計⼊入到賬單 中,免費使⽤用量不能累計。 • 本課程以 S3 與 EC2 服務為主,它們亦有提免 費額度。 新帳號免費套餐 (1)
  6. • 準備事項 • 信⽤用卡⼀一張 • 可收發信件的 Email • 可⽴立即接聽的電話 •

    帳單英⽂文地址
 (可利⽤用中華郵政地址中翻英) AWS 帳號申請(1) -"#
  7. • http://aws.amazon.com/ec2/ • EC2 服務簡⽽而⾔言之就是『虛擬機』與相關的週 邊服務的集合。 • Elastic IP:提供 IP

    綁定服務 • Elastic Loading Balance:負載平衡器 • CloudWatch:提供監控資料與事件觸發 • AutoScaling:動態管理 EC2 Instance 數量的機制 EC2 服務
  8. • http://aws.amazon.com/pricing/ec2/ • 機器(instance)使⽤用以⼩小時計費,不滿⼀一⼩小時 算⼀一⼩小時(所以,關機⼀一次就是⼀一⼩小時的 錢)。機器使⽤用的存儲空間,EBS 每⽉月使⽤用容量 (GB)收費,並額外對 Disk IO

    計次收費,固 定 IP(EIP)綁定 Instance 時不收費,閒置時收 費。 • 網路的流出以每 GB 量收費,但流出的⺫⽬目的不 同,計費不同。流出 AWS 之外的地區單價最 ⾼高,AWS 之內對傳次之,同帳號同區,依不同 服務可免費,或使⽤用較便宜的計價. EC2 計費模型(1)
  9. • 在 Pay As You Go 的基本模型下,只要你 • 關閉主機,就停⽌止 Instance

    計費 • 取消 EBS 的⽀支配,就停⽌止 EBS 的計費 • 釋放 EIP 的佔⽤用,就停⽌止閒置 EIP 的計費 • Pay As You Go 的優點即為付費的時間單位遠⽐比 傳統的以『⽉月份』為單位的合約⼩小,但換算成 『⽉月份』時,總價也許不是優勢。 EC2 計費模型(2)
  10. EC2 計費模型 Elastic & PAY AS YOU GO system loading

    date-time 固定運算容量的 合約,依可預估 的極值事先採購
  11. EC2 計費模型 Elastic & PAY AS YOU GO system loading

    date-time 依系統負責需求,決定所需運算量的模式。
  12. • On Demand Instances
 以⼩小時計費。使⽤用成本較⾼高,但若是有緊急需 求時,有隨時建⽴立、⾺馬上使⽤用的便利性存在。 • Reserved Instances
 ⻑⾧長租型的

    Instances,預付⼀一筆使⽤用期限(⼀一年 或三年)的約合,將 On Demand Instances 的價 格換成另⼀一種等級。換句話說,付了這筆之後 的每⼩小時計費是⽐比便宜的價⺫⽬目表。 EC2 Instance 類型(1)
  13. • Spot Instances
 AWS 將『閒置』沒有⼈人使⽤用的機器開放出來 『競標』。使⽤用的不是複雜的競標機制,單純 填寫⼀一個價格,若此價格有機器可以⽤用,你就 能使⽤用。當市場價格已⾼高於你當出的出價時, AWS 會回收

    Instances 供更⾼高出價者使⽤用。 • 使⽤用 Spot Instances 常被⽤用在進⾏行『運算』的事 項,機器被回收時,只要針對整體結果缺少的 部分進⾏行『重算』。(前提是軟體架構設計要 能⽀支援這件事)
 EC2 Instance 類型(2)
  14. • 以價格為導向的 Region 選擇
 參考 pricing ⾴頁⾯面⾃自然會有結論,⻑⾧長久以來是規 模最⼤大的點較省錢(US-EAST) • 在價格的前提下,應注意蒐集各區的『故障』

    記錄。將 EC2 Region 就想像成 IDC 機房,也是 有⼈人去維運的,值得考慮各種故障因素。天災 (冬天的暴雪)、設備故障(電⼒力設備過載, 無法開出新的 Instance)、⼈人為失誤。 EC2 Region 的選擇(1)
  15. • 以『 』為導向的 Region 選擇,留⽩白表⽰示 有各種可能。 • 例如:你的網路會不會經過『國家級特殊的防 ⽕火牆』。它可能關係各別國家政策或是宗教信 仰對於內容控管的反映。

    • 例如:你的資料是否有法律或合約載明的區域 限制。 • 例如:『經驗』,這是⼀一種歸納法,雖然不⾒見 得科學,但有時挺有⽤用的。 EC2 Region 的選擇(3)
  16. • 任何的建議都⽐比不上 benchmark,無論⽤用商⽤用⼯工 具、Open Source ⼯工具,甚⾄至是簡單的 log 訊息 記錄效能數據,都有助於你了解你的程式在 EC2

    上的執⾏行效能。 • 有了數據後,你可以知道你的程式『慢/快』 在哪裡。針對慢的部分,有計劃改寫嗎?或是 再換更⾼高級的 Instance Type?⼀一直換 Instance Type 換到頂了該如何?還是得認真⾯面對程式效 能不佳的問題!太吃 CPU?太吃 Disk IO?太吃 RAM?終極⽅方法還是得做平⽔水擴充的架構。 EC2 Instance Type (2)
  17. • 別試著把原本的服務直接搬上 EC2。Instance 遠 ⽐比你想像中的慢(即使你可以選更貴的 Instance)。Disk IO 即網路 IO,所以 Disk

    IO 重 的服務也⽐比你想像中的慢(可以加開 IO 速度保 證,但 EBS 的收費會不同) EC2 Instance Type (4)
  18. EC2 in Action -"# • EC2 Console 導覽 • 建⽴立

    EC2 Instance 的準備⼯工作 • 建⽴立 Security Group • 建⽴立 Key Pair • 建⽴立 EC2 Instance • 使⽤用 Amazon Linux AMI • 安裝與啟動 HTTP Server
  19. -"# EC2 Console 導覽 (5) IMAGES 功能以 AMIs 最常⽤用,針對 安裝好的

    Instance 我們能將它建⽴立成 AMI 作為建⽴立 Instance 的『範本』, 不⽤用每回都從無到有安裝。
  20. -"# EC2 Console 導覽 (6) Security Group 即為 Instance 套⽤用的

    防⽕火牆設定,透過 Security Group 可 指定對外開通的 port 與通訊協定。 ! unix-like 主機通常會開通 tcp:22 讓 SSH Client;Windows 主機通常會開 通 tcp:3389 讓遠端桌⾯面可以登⼊入。
  21. -"# EC2 Console 導覽 (7) KeyPairs 指定 unix-like 主機透過 SSH

    連線時使⽤用的 KeyPair。
 Windows 是使⽤用 RDP 與指定的 KeyPair ⾃自動產⽣生的密碼
  22. -"# 準備建⽴立 EC2 Instance • 準備⼯工作是必要的嗎? • 準備⼯工作不是必要的。任何有需要建⽴立的資源, 例如 Security

    Group 與 Key Pair 在建⽴立的過程都 會有提⽰示與分枝流程處理。 • 事先準備有什麼好處? • 先計劃好你的設定,掌握安裝流程。未事先計 劃,你的思路將被安裝流程掌握。
  23. -"# 準備建⽴立 EC2 Instance 建⽴立 Security Group (7) 完成 SSH

    與 HTTP 防⽕火牆設定,按 Create 建⽴立
  24. -"# 準備事項『回顧』 • 回顧⼀一下我們做了什麼 • 建⽴立 Security Group 開通 SSH、RDP、HTTP

    • 建⽴立 Key Pair 並下載了⼀一份 .pem 檔 • 其他⼯工作事項 • 對 Windows User 來說,使⽤用 putty (ssh client) 無法直接以 .pem 檔作為 key 登⼊入 Linux Server,需轉換為 putty 可接受的格式
  25. -"# 建⽴立 EC2 Instance 可以替 EC2 Instance 設定 Tag。⽽而 Name

    Tag 會被當作機器的名稱,顯⽰示在 EC2 Instance 總表,不填的情況則顯⽰示為空⽩白。
  26. -"# 在 Windows 登⼊入 Linux VM (4) 載⼊入 Key File

    後,它提⽰示 你這是⼀一個 OpenSSH ⽤用 的 private key,你需要使 ⽤用 Save private key 功能, 存成 Putty 可⽤用的格式
  27. -"# 在 Windows 登⼊入 Linux VM (5) 由功能表或 Actions 區的

    Button 都有 Save private key 的功能,它們是⼀一樣的。請點選 它,將檔案存成 ppk 格式
  28. -"# 在 Windows 登⼊入 Linux VM (6) 載⼊入 Key File

    後,它提⽰示 你這是⼀一個 OpenSSH ⽤用 的 private key,你需要使 ⽤用 Save private key 功能, 存成 Putty 可⽤用的格式
  29. -"# 在 Windows 登⼊入 Linux VM (7) Save private key

    會跳出對 話窗,詢問存檔位置。取 個好記的檔名唄。
  30. -"# 在 Windows 登⼊入 Linux VM (8) 啟動 putty 後,要使⽤用

    private key 登⼊入, 需填寫 Connection/SSH/Auth 內的 Private key file to authentication 欄。 ! 將先前轉換好的 ppk 格式的 private key 路 徑指定上去。
  31. -"# 在 Windows 登⼊入 Linux VM (11) 確定 key file

    指定完成後,可在 ec2 console 查到您的主機位置,並填在 Host Name 欄, 準備進⾏行連線
  32. -"# EC2 Lab 回顧 • 你已經試過 • 準備 security group

    與 key pair • 建⽴立、關閉、移除 Instance • 能由 Linux 使⽤用 .pem 檔登⼊入 • 轉換 .pem 成 putty 可使⽤用的 key file 由 Windows 登⼊入 • 安裝 httpd 並測試連線
  33. • http://aws.amazon.com/s3/ • S3 服務即為 AWS 的資料存取服務。 • 使⽤用者將檔案上傳⾄至 S3

    的 Bucket 內,S3 將儲 存於 Bucket 內的資料稱為 Object。 • 使⽤用者可以修改 Object 的權限或 Metadata。 S3 服務
  34. • Bucket 是 S3 服務儲存 Object 的容器。同時, 可以想像成它是程式語⾔言內『名命空間』的概 念。所以,Bucket 的名稱在整個

    S3 服務內是唯 ⼀一的,不可重複的命名。 • 每⼀一組 AWS 帳號最多能建 100 個 Bucket。在 Bucket 內沒有限制能放多少 Object,Object的 存取效率與 Bucket 內的 Object 數量無關。 Bucket
  35. • Bucket 會影響存取 S3 的 Domain Name 所以對 命名規則有些要求(DNS 相容規則):

    • ⻑⾧長度需在 3 ⾄至 63 個字元之間 • DNS 相容規則:名稱以⼀一個或⼀一個以上的單字 組成,並以『.』相隔 • 僅採⽤用⼩小寫字元 • 開頭與結尾必需是字⺟母或數字 • 可以使⽤用 {⼩小寫字元、數字、破折號(Dashes)} Bucket 命名規則
  36. • 合法命名的範例 • myawsbucket • my.aws.bucket • myawsbucket.1 • 不合法命名的範例

    • .myawsbucket • myawsbucket. • my..examplebucket Bucket 命名範例
  37. Object • S3 是⼀一個 key-value 的 storage。 • 每⼀一個被放在 Bucket

    內的 Object 會有⼀一個唯⼀一 的 key,⽽而 value 即為此 Object 的內容。 • key 的命名只有規範必需是以 UTF-8 編碼的字 元,資料⻑⾧長度上限為 1024 Bytes。 • Bucket 內沒有限定最多可放⼊入的 Object 的數 量,但 value 必需在 5 TB 以內(單⼀一次上傳限 制為 5 GB)
  38. 模擬 File System • 由於 S3 是⼀一個 key-value 的 storage,它並沒有

    『⺫⽬目錄』的概念,但是能以 key 來模擬。 • 在 key 使⽤用 『/』符號隔開,寫成 Linux 路徑分 隔字元的型式: ! ! • 在 API 裡將可指定『prefix』,例如:列出 Object 時, 指定 john 就只會列出以 john 為開 頭的 key 相關的 Object。 For Example: the bucket "my-application" could include the following keys: 1. john/settings/conf.txt 2. jane/settings/conf.txt
  39. S3 常⾒見使⽤用情境 • 當作靜態網站發佈,例如 AWS CTO 的 Blog
 http://www.allthingsdistributed.com/ •

    當作網站的圖床,也就是放⼤大量靜態圖⽚片的位 置。靜態資料也常⾒見有⼈人放 S3,像是 css 或 javascript 檔。S3 也能輕易接上 CDN 服務。 • 解決瞬間⼤大量下載的⽅方案。例如:研討會的簡 報、遊戲更新檔或瀏覽器 plugin。放在⼀一般的機 房是有限流量的(依合約規定),短時間⼤大量 下載使⽤用 Pay As You Go 沒有限流量,讓使⽤用者 有⽐比較好的體驗。
  40. -"# S3 Buckets Page 建⽴立完成第1個 Bucket 後,S3 將你導向列 出所有 Bucket

    的⾴頁⾯面。這將是你未來進 ⼊入 S3 看到的第 1 ⾴頁。 ! 接著可 『 Double-Click』Bucket 名稱進⼊入 列出所有 Object 的⾴頁⾯面。
  41. -"# Remove Public Access 展開 Permissions 將 Grantee: Everyone 刪除


    並 refresh 此⾴頁,讓 properties 更新。 refresh
  42. -"# Access By Query String https://s3-ap-southeast-1.amazonaws.com/lab.iii.20131006.qty/skype_nat_travsal.pdf? AWSAccessKeyId=ASIAIJYYLYFXTG3VJULQ&Expires=1381032318&Signature=zC7GkZ6e0ePnP1RVga1XrylguSM %3D&x-amz-security-token=AQoDYXdzEDwawAK%2BsaBNiQ2/9crgfWyKg9e0HzaRBTpOsAmmfM/ aUD39C5WpML4YF4D2iSITChep7aCTyyica60B8%2BTwesN6Yml/1i/4NprIeWppqEK/ 39Hx7cox4lKA7LUZVfgUUEx9FqerE993dv4y/typ

    %2BtSoBuQnyKbgvoNnHGgDtqtv37EWjDMSgnMbO2kPfPOQ8MJiSSu/ L8awBRsv2avSaAHt1LbyFAXtVmmelZo6p3HqJoiq5%2B4%2B5QbhrEBGG7mpXUahOPqsgNxt0VEjgut2zRA5GLVf mr0e43C4oQGr5kqMygWQaO/ fo8OD77dGlqd0Z6lOKcCvmO9w0ZDl9OrJcZNN93Q3rpiyeUlBHSVSie8bwi6oQZwluhNJMEW/ y1ejgdc9HVOHJhH8iDhn7wnAdBUGsJxb2xm%2BTSFLQIvtWr1jdTyTfiDancOSBQ%3D%3D
  43. -"# Access By Query String 有可能是 180 秒開始倒數的,當時間變成負值時,此 URL 也過期了。

    https://s3-ap-southeast-1.amazonaws.com/lab.iii.20131006.qty/skype_nat_travsal.pdf? AWSAccessKeyId=ASIAIJYYLYFXTG3VJULQ &Expires=1381032318&Signature =zC7GkZ6e0ePnP1RVga1XrylguSM%3D&x-amz-security-token=AQoDYXdzEDwawAK %2BsaBNiQ2/9crgfWyKg9e0HzaRBTpOsAmmfM/aUD39C5WpML4YF4D2iSITChep7aCTyyica60B8%2BTwesN6Yml/1i/ 4NprIeWppqEK/39Hx7cox4lKA7LUZVfgUUEx9FqerE993dv4y/typ %2BtSoBuQnyKbgvoNnHGgDtqtv37EWjDMSgnMbO2kPfPOQ8MJiSSu/ L8awBRsv2avSaAHt1LbyFAXtVmmelZo6p3HqJoiq5%2B4%2B5QbhrEBGG7mpXUahOPqsgNxt0VEjgut2zRA5GLVfmr0e4 3C4oQGr5kqMygWQaO/ fo8OD77dGlqd0Z6lOKcCvmO9w0ZDl9OrJcZNN93Q3rpiyeUlBHSVSie8bwi6oQZwluhNJMEW/ y1ejgdc9HVOHJhH8iDhn7wnAdBUGsJxb2xm%2BTSFLQIvtWr1jdTyTfiDancOSBQ%3D%3D qty:~ qrtt1$ python Python 2.6.1 (r261:67515, Aug 2 2010, 20:10:18) [GCC 4.2.1 (Apple Inc. build 5646)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import time >>> print (1381032318) - time.time() 152.522821903
  44. -"# S3 Lab 回顧 • 你已經試過 • 建⽴立 Bucket,並上傳 Object

    • 能透過 S3 Console 修改它的屬性,權限設成 public Object。 • 由 Object Properties 查詢下載網址 • 變更 Object 權限,例如將物件設為 private Object • 使⽤用 Query String 下載 private Object
  45. AWS Command Line (1) • AWS Command Line,簡稱 AWS Cli

    • 功能:下指令的控制 AWS 服務 • AWS Cli 事實上是呼叫 AWS SDK for Python • 會使⽤用 AWS Cli 即距離 AWS SDK 不遠矣
  46. AWS Command Line (2) • AWS Cli 安裝 • Windows:下載

    .msi 安裝檔 • Linux:使⽤用 Python 安裝⼯工具安裝 • AWS Cli 設定 • 使⽤用 aws configure 指令
  47. AWS Cli 設定 -"# • 準備項⺫⽬目 • 使⽤用者 access key、secret

    key、region • 建⽴立設定檔 • aws configure $ aws configure AWS Access Key ID [None]: (accesskey) AWS Secret Access Key [None]: (secretkey) Default region name [None]: ap-southeast-1 Default output format [None]: