顯示具有 S3Bucket 標籤的文章。 顯示所有文章
顯示具有 S3Bucket 標籤的文章。 顯示所有文章

2021年5月6日 星期四

[Alibaba Cloud] OSS 介紹

 Object Storage Service (對象儲存服務)

阿里雲對象儲存服務(Object Storage Service,簡稱 OSS)

是阿里雲提供的海量、安全、低成本、高可靠的雲端儲存體服務

它具有與平台無關的 RESTful API 介面

能夠提供 99.999999999%(11個9)的數據可靠性和 99.99% 的服務可用性

可以在任何應用、任何時間、任何地點儲存和訪問任意類型的數據


儲存空間(Bucket是用於儲存物件(Object的容器,所有的對象都必須隸屬於某個儲存空間。你可以設定和修改儲存空間屬性用來控制地域、存取權限、生命週期等,這些屬性設定直接作用於該儲存空間內所有對象,因此可以通過靈活建立不同的儲存空間來完成不同的管理功能。


同一個儲存空間的內部是扁平的,沒有檔案系統的目錄等概念,所有的對象都直接隸屬於其對應的儲存空間。
每個用戶可以擁有多個儲存空間。
儲存空間的名稱在 OSS 範圍內必須是全域唯一的,一旦建立之後無法修改名稱。
儲存空間內部的對象數目沒有限制。

Object 對象是 OSS 儲存數據的基本單元,也被稱為 OSS 的檔案。
Object 是由元資訊(Object Meta),用戶數據(Data和檔案名(Key組成。
Object 由儲存空間內部唯一的 Key 來標識。 Object Meta 是一個鍵值對
表示了對象的一些屬性比如最後修改時間大小等資訊,同時也可以在元資訊中儲存一些自訂的資訊。
Object 的生命週期是從上傳成功到被刪除為止。在整個生命週期內,對象資訊不可變更。
重複上傳同名的對象會覆蓋之前的對象,因此 OSS 不支援修改檔案的部分內容等操作。
OSS 提供了追加上傳功能,用戶可以使用該功能不斷地在 Object 尾部追加寫入數據。


Region 地域是表示 OSS 的資料中心所在物理位置。

可以根據費用、請求來源等綜合選擇資料存放區的地域。

Endpoint 表示是 OSS 對外服務的訪問網域名稱。

OSS HTTP RESTful API 的形式對外提供服務,當訪問不同地域的時候

需要不同的網域名稱。通過內網和外網訪問同一個地域所需要的網域名稱也是不同的。

Region 是在建立 Bucket 的時候指定的,一旦指定之後就不允許更改。

Bucket 下所有的 Object 都儲存在對應的資料中心

目前不支援 Object 等級的 Region 設定。


存取金鑰(AccessKey簡稱 AK

是指的是訪問身分識別驗證中用到的 AccessKeyID AccessKeySecret

OSS 通過使用 AccessKeyID AccessKeySecret 對稱式加密的方法來驗證某個請求的寄件者身份

AccessKeyID 用於標識用戶,AccessKeySecret 是用戶用於加密簽名字元串和 OSS 用來驗證簽名字元串的密鑰,其中 AccessKeySecret 必須保密。

Bucket 的擁有者申請的 AccessKey
Bucket 的擁有者通過 RAM 授權給第三方要求者的 AccessKey
Bucket 的擁有者通過 STS 授權給第三方要求者的 AccessKey

OSS Standard (標準存儲)
高可靠、高可用、高吞吐和低延時的對象存儲服務
支持頻繁的數據訪問,支撐各種熱點類應用的使用場景
 
OSS Infrequent Access (低頻率訪問)
適用於訪問頻度較少、長期(30天以上)的數據存儲,比標準類型更低的存儲費用。
 
OSS Archive Storage (歸檔存儲)
適合需要長期保存(建議半年以上)的歸檔數據,在儲存周期內極少被訪問,數據進入到可讀取狀態需要等待1分鐘的解凍時間。適合需要長期保存的檔案數據、醫學影像、科學資料、影視素材。

2020年9月16日 星期三

[AWS] AWS CI/CD 動手做 - Travis CI - 2

 接續上一篇AWS CI/CD 動手做 - Travis CI - 1 的內容

我們繼續做後面的步驟

7. 新增 .travis.yaml 到 GitHub Project 上面

(上一篇有給yaml的範例,可直接copy來用)

8. 新增 .travis.yaml to github repo

  • 更改 .travis.yaml 內的 bucket name
  • 更改 .travis.yaml 內的 access key
  • 更改 .travis.yaml 內的 secret access key
  • 加密 travis encrypt aws secret access key
  • 加密 travis encrypt SOMEVAR="secretvalue" --add               

(加密此travis.yaml用的,後面是密碼,前面是項次,因為裡面有aws 的key,如果不加密很快就會被其他人拿來利用)

9. 在Repo根目錄建立appspec.yml

(編輯yml檔,格式務必正確,盡量不要使用tab)

version: 0.0

os: linux

files:

    - source: /                           #置於Repo的根目錄下,要進行CI/CD的來源目錄

    destination: /cd_squid           #置於On-Premise下,被進行CI/CD的目的來源

    hooks:       #下方設定為CI/CD期間所要進行之動作

    AfterInstall:

    - location: scripts/after_install.sh

    timeout: 60

    runas: root

    ApplicationStart:

     - location: scripts/application_start.sh

     timeout: 60

      runas: root

     ValidateService:

     - location: scripts/validate_service.sh

     timeout: 60

runas: root

***************************************************************************

下一個篇就會開始講CD的了,前面就是所有CI的流程建置

統整一下:透過Github 把Code 放在上面,透過Travis CI 去推Code

然後CI過的話就會把Code先存一份在Aws S3 bucket上面備份

在進行CD的後續流程

2020年7月7日 星期二

[AWS] AWS CI/CD 動手做 - Travis CI - 1

最近在公司接觸了CI/CD的服務部屬,但是因為是直接接手別人建好的服務
想說趁機趁還有印象時快點把SOP寫起來,這樣也是加深自己的印象
也可以提供一些如果想把地端服務做CI/CD的MIS可以做參考
這邊會是以在地端有Linux Service要做CI/CD著手

何謂 CICD ,其實講的比較簡單一點就是將上程式的流程自動化,自動 build code、執行 unit test、自動更新線上服務...所有反覆步驟都轉為自動化執行

CI(Continuous integration),即是「持續整合」

CD(Continuous Deployment),即是「持續佈署」


本篇會使用的版控工具為 GitHub
使用 Travis CI 作為版控的串接服務,因為Travis CI 只能跟GitHub做串接
Trvais CI的解釋 可參考Miles大神的介紹,述小弟不在贅述
儲存相關設定的會在 aws S3 Bucket
這邊地端服務會以常見的Squid Proxy Service 作為Demo
使用的Liunx版本為Ubuntu 18.04 TLS


1.  首先在 GitHub 上面開啟一個 Private Project
(補充:
如果不會使用GitHub可參考這篇)


2.  Download Project 到本機桌面


3.  使用Git 的相關指令來確認是否跟GitHub Project有互通

  •  git add .
  •  git commit -m "xxx"
  •  git push
  •  git pull 


4. 新建一個 AWS S3 bucket,盡量可以跟 Github Project的名字一樣

(補充:為什麼需要使用S3呢,因為S3是用來儲存你所需要部屬的程式或是設定檔,讓Travis CI打包檔案丟上來用的空間)


5. 建立一個 IAM User  Travis CI,盡量可以跟 Github Project 的名字一樣,比較好辨識

(補充:為什麼要給Travis CI一個權限呢,因為Travis CI需要去觸發Codedeploy去接續後續的的部屬流程以及需要把打包好的東西丟至S3 Bucket上,所以需要開權限)


6. IAM User 權限 給他 “AmazonS3FullAccess” 就好


7. 新增 .travis.yaml 到 GitHub Project 上面


"後面會再繼續寫步驟,這只是一開始而已,沒這麼簡單"


#####以下是 .travis.yaml的範例#####


language: python

python:

- '2.7'

services:

- docker

before_install:

- chmod +x tests/*.sh

install:

- docker build -t "GitHub Project Name"/squid .

- docker run -di --name squid "GitHub Project Name"/squid

script:

- docker exec -it squid /tests/test_config.sh

- docker exec -it squid /tests/test_service.sh

notifications:

  email:

    recipients:

    - your-email

    on_success: change

    on_failure: always

  slack:

   

before_deploy:

- zip -r latest-${TRAVIS_BUILD_NUMBER}.zip *

- mkdir -p "GitHub Project Name"

- mv latest-${TRAVIS_BUILD_NUMBER}.zip "GitHub Project Name"/latest-${TRAVIS_BUILD_NUMBER}.zip

deploy:

- provider: s3

  access_key_id: "KEY"

  secret_access_key: "KEY"

  bucket: "GitHub Project Name-bucket"

  skip_cleanup: true

  local_dir: "GitHub Project Name"

  region: your aws region

  on:

    branch: master