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

aws workshop for beginner

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

aws workshop for beginner

Avatar for Ching Yi Chan

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]: