AWS ECS 分享

Agenda

  • 實作!!
  • FAQ

What?

ECS是Amazon的一項免費服務(其他都要錢)主要是基於docker用來管理伺服器需要的服務及可以依照你的docker image達到直接快速佈署(CI)目的而生。

"Amazon ECS 能讓複雜的基礎設施變得簡單,因此您可以專注在設計、建構與執行容器化的應用程式"

When?

當你已經花太多時間去管理docker與你的EC2時,這是個選項

How?

今天實作用ECS佈署我們常用的PHP環境

事前準備

  • Mac一台(今天的demo都以mac為主)
  • Docker hub帳號一組
  • AWS 可課金帳號一組
  • 基本Docker知識
  • 愉悅的心情

新增使用者

我們先進入AWS的AMI點選Add User新增一個使用者,方便我們這次demo

給予使用者權限

為了方便我們這邊直接給予最高的權限以免到時發生問題

取得Key & ID

新增完後我們可以取得這個使用者的Key跟ID方便我們等等aws-cli登入及使用,先放旁邊備用

安裝docker

官網下載

接下來我們要安裝docker可至上方的連結下載,並選擇Stable stable即可,下載完後double click把鯨魚拖到Applications資料夾即可

接下來我們進入ECS

左上方的Service 點一下後出現的選單中找尋ECS

進入精靈

點Start

ECS精靈-2

直接下一步

ECS精靈-3

這一步是為了你的ECS Repo命名,取一個對你有義意不會忘記的名稱

ECS精靈-4

在這裡我們就要開始上傳我們的docker image,接下來我們會依照ECS的指示一步一步完成他

登入docker

首先我們先登入docker,如果沒帳號的話可以到docker hub去註冊一個,因為我們等一下會用docker hub上人家已經作好的image,所以這裡我們就不自建image了

登入aws-cli

如果你是第一次使用aws-cli的話,我們需要先設定aws輸入"aws configure"後,輸入剛剛我們新增的使用者的ID與KEY還有你的區域即可

登入aws-cli

接下來就可以依照剛剛aws頁面上的指示登入aws-cli,輸入後他會出現一大串的東西,這時不用怕,直接在把他那一大堆東西copy / paste貼回去按下enter就登入了

 準備dockerfile

登入完docker與aws-cli後我們就可以挑一個我們在網路上人家已經做好的環境,在這裡我們用ubuntu-nginx-php7為例,我們用git 將人家的docker file clone下來

建立Image

有了dockerfile後我們就可以建立我們的image,進入剛剛clone下來的目錄輸入

docker build -t laravel .

接下來他就會開始建立我們的image,別忘了image的名稱要與剛剛ECS repo同名

上傳image至ECS

Image Build完以後就可以tag我們的image,然後push他,這邊就是直接照ECS上面的指示進行後,完成後就會看到右邊圖示的樣子,代表你已經完成

設定你的Service

當你docker image push完成後,我們就可以在ECS的精靈在按下一步了,這時後就會出現右邊的畫面,設定你task的名稱、記憶體、以及port的對應,請依需求設定然後按下一步就好了

設定Service

在這裡我們要設定對外的服務,你希望ECS幫你跑多少的task然後實體對外的port要如何對應,及需不需要負載平衡

設定叢集

設定叢集的名稱、機器要有多大,要幾台機器,然後登入的key之類的,最後設定你對外的port要開哪些,沒意外直接下一步即可

確認

確認沒問題後就可以執行了

等待

等待ECS把你的服務建立出來

服務完成

看到下面這個畫面就代表好了

確認服務

這時後我們就可以到EC2看到一台機器是剛剛起來的,我們就可以連到這台ip看看

登登~

完美的連到我們的服務了

FAQ

Amazon ECS 分享

By Seta Chuang

Amazon ECS 分享

  • 867