首頁

AWS SAA-C03 口袋筆記 - 應用程式部署&管理

AWS Elastic BeanstalkAWS App RunnerAWS Amplify 都是 AWS 提供的不同雲端應用程式部署與管理服務,它們各自有不同的特點和用途。下面是它們之間的主要區別:

1. AWS Elastic Beanstalk

主要特點:

  • 全託管的應用程式部署服務:Elastic Beanstalk 是一個可以幫助開發者快速部署和管理應用程式的服務,無需關心底層基礎設施(如 EC2、負載均衡、監控等)。它會自動處理這些工作。
  • 多語言和平台支持:支持多種開發語言,如 Java、.NET、Node.js、Python、Ruby、PHP、Go 以及 Docker 等容器化應用。
  • 自動擴展和管理:根據流量和需求自動擴展,並且提供監控和日誌功能。
  • 高靈活性:開發者可以選擇對環境進行自定義配置,擁有更多的控制權。

適用場景:

  • 對基礎設施有一定要求,需要較高的靈活性來進行自定義配置的情況。
  • 適合傳統的 Web 應用程式或微服務架構的部署。

2. AWS App Runner

主要特點:

  • 專為容器化應用程式設計:App Runner 主要針對現代的容器化應用程式(例如使用 Docker 部署的應用)進行簡化部署與管理。它支持自動從 Git 存儲庫(如 GitHub 或 CodeCommit)或容器映像庫(如 Amazon ECR)拉取應用程式代碼,並直接進行部署。
  • 簡化的開發流程:App Runner 旨在簡化應用程式從開發到生產的部署流程,不需要開發者處理基礎設施的細節或配置。
  • 內建的自動擴展:與 Elastic Beanstalk 類似,App Runner 也會根據流量自動擴展容器應用程式。
  • 無需管理 EC2 實例:開發者無需直接管理 EC2 實例或設置負載均衡,App Runner 完全自動化這些工作。

適用場景:

  • 如果你的應用程式是基於容器(如 Docker)並希望快速部署並簡化基礎設施管理,App Runner 是一個不錯的選擇。
  • 開發者希望專注於應用程式本身,並希望避免配置和管理底層基礎設施。

3. AWS Amplify

主要特點:

  • 針對前端和全棧應用開發:Amplify 是一個針對前端開發者(尤其是 React、Vue、Angular 等 JavaScript 框架)和全棧應用程式開發的全託管平台。它不僅僅是部署服務,還包含了豐富的開發工具和服務。
  • 簡化的全棧開發和部署:Amplify 不僅支持前端應用程式(如 Web 和移動端應用程式),還可以與後端(如 GraphQL、REST API 和數據庫)進行無縫集成。
  • 強大的開發工具集:Amplify 提供了豐富的開發工具,支持本地開發、CI/CD(持續集成/持續部署)、身份認證、數據存儲和文件儲存等功能。
  • 與 AWS 服務緊密集成:Amplify 可以輕鬆與 AWS 的其他服務集成(例如 Amazon Cognito、AWS Lambda、S3、DynamoDB 等),使開發者能夠快速構建和擴展應用。

適用場景:

  • 如果你的應用程式是前端為主的 Web 或移動應用,並需要與後端服務(例如認證、數據庫、API 等)進行集成,Amplify 是一個非常適合的選擇。
  • 開發者希望以快速開發和部署為重點,並且希望簡化整個開發生命周期。

主要區別總結:

特點Elastic BeanstalkApp RunnerAmplify
目標用戶想要簡化雲端基礎設施管理的應用開發者需要簡化容器應用部署的開發者主要面向前端開發者和全棧應用開發者
支持的應用程式類型Web 應用、微服務、傳統應用程式容器化應用程式(如 Docker)Web 應用、移動應用、全棧應用
主要特色高度靈活,支持多種語言和框架,適合傳統應用自動部署容器,簡化基礎設施管理前端開發工具,與後端服務無縫集成
擴展性自動擴展,手動調整配置自動擴展容器應用自動擴展,基於前端和後端需求擴展
設置難度需要一定的配置和設置極為簡化,主要是容器應用的部署非常簡單,尤其對前端開發者友好

總結:

  • Elastic Beanstalk 更適合那些需要更多自定義和靈活性來管理傳統 Web 應用程式或微服務架構的開發者。
  • App Runner 主要面向需要部署容器化應用程式的開發者,並且不需要管理底層基礎設施。
  • Amplify 則是針對現代全棧應用開發的服務,特別是面向前端開發者,簡化了從前端到後端的開發、部署和擴展。

Reference: ChatGPT

AWS SAA-C03 口袋筆記 - Machine Learning

Amazon Rekognition 分析&辨識圖片或影片裡面的物件、人像、文字、場景的服務

Amazon Transcribe 將語音轉換為文字服務

Amazon Polly 將文字轉換為語音的服務

Amazon Translate 語音翻譯的服務

Amazon Lex 可辨識理解語音跟文字,提供聊天機器人互動的介面

Amazon Connect 虛擬聯絡中心,可與客服語音系統串接,提供人工智慧答錄

Amazon Comprehend 自然語言處理(Natural Language Process, NLP)的服務

  • Amazon Medical Comprehend 專門針對醫學的NLP
Amazon SageMaker 提供機器學習、模型訓練的平台

Amazon Forecast 提供歷史資料跟模型,預測商業結果

Amazon Kendra 智慧搜尋文件的服務

Amazon Personalize 個人化推薦的服務

Amazon Textract 從任何文件將文字擷取出來的服務


Reference

  • https://www.udemy.com/course/aws-certified-solutions-architect-associate-saa-c03

AWS SAA-C03 口袋筆記 - Identity & Access Management

 AWS Organization

  • 全球的服務, 允許同時管理多個AWS Accounts
  • 有分主要的management account, 和其他組織底下的member account
  • member account只能屬於一個organization底下
  • 集中帳戶、安全政策套用管理,單一帳單管理,享受集中管理帶來的價錢優惠。 
  • Organizational Units (OUs) 讓多個帳號分組在一個組織單位,以便用單一單位進行管理。把這個想像為IAM user group一樣, 只是後者管的IAM user.
    • OU可以是以環境去分配的(e.g. Dev, Prod...), 可以是以部門去分配的(e.g. RD, BD...), 可以是以專案去分配的(e.g. Proj1, Proj2...)
    • Service Control Policy (SCP) 用來管理組織底下的權限。IAM policies apply to OUs or Accounts, 進而去限制account底下的users / roles。
      • 不會套用在management account. 
      • 跟IAM一樣, 政策權限預設都是deny, 要特別allow才有。 

AWS Control Tower

  • 主要還是透過AWS Organization去建立、管理帳號,但這裡提供一個更簡單方便的地方,可以更快速、最佳實踐的方式建立多個環境、帳號、權限管理。
  • Guardrails 幫你持續治理所有帳號是否有符合最佳實踐的設定
    • Proactive controls: 透過AWS個服務本身管控 (e.g. CloudFormation)
    • Preventive controls: 透過SCP去管控
    • Detective controls: 透過AWS Config去監控

AWS IAM Identity Center (aka AWS Single Sign On)

  • 單一登入就能存取其他組織下的所有帳號。




Reference

  • https://www.udemy.com/course/aws-certified-solutions-architect-associate-saa-c03

AWS SAA-C03 口袋筆記 - Disaster Recovery & Migrations

AWS Database Migration Service (DMS)

  • 主要用來搬遷各種資料來源到另一個資料目的地
  • 資料來源跟目的地不一定要相同,例如Microsoft SQL Server -> Aurora
    • 須透過Schema Conversion Tool (SCT)
  • 資料來源跟目的地一樣就不需要用SCT,例如本地PostgreSQL -> RDS PostgreSQL
  • 會需要開EC2來跑DMS
  • vs DataSync, DataSync是用來搬移本地storage到AWS storage service。
  • 可以是一次性的搬遷或是持續性(透過Change Data Capture, CDC)




 

Reference

  • https://www.udemy.com/course/aws-certified-solutions-architect-associate-saa-c03

AWS SAA-C03 口袋筆記 - Monitoring & Audit

CloudWatch AWS資源的指標監控、追蹤

  • CloudWatch Metric
    • 每種監控都有一個指標(Metric), 像是CPUUtilization、Memory...etc
    • 每個指標可以有多個Dimension, (instance id, environment...etc)
    • 可以建立儀表板(dashboard)裡面有多種指標
    • 可以透過CloudWatch Metric Stream (near real time)將指標數據輸出到Kinesis Data Firehose或是其他第三方service provider: Datadog, Splunk等。
  • CloudWatch Logs 
    • 用來存取從AWS資源(EC2, CloudTrail, Route53...etc)收集下來的日誌
    • 可以將Logs輸出至S3 (不是real time), 要real time可以用CloudWatch Logs Subscription
    • 透過Subscription Filter來過濾日誌最終輸出的目的地
    • 可以用CloudWatch Logs Insights來查詢Log

  • CloudWatch Agent 需要安裝agent才能將資料送到CloudWatch Logs
    • Log Agent 只能收集Logs
    • Unified Agent 能收集metrics & logs & traces
  • CloudWatch Alarms 當指標達到條件用的告警
    • 可以觸發告警外,也可以有相對應的動作 (auto-scaling, stop EC2, 通知SNS...) 
  • EventBridge (aka CloudWatch Event) 接收跟傳遞事件的橋樑
    • 有default, partner, customer三種event bus


CloudTrail 能夠監控您的帳戶向 Amazon CloudWatch API 發出的呼叫,包括 AWS Management Console, AWS CLI,以及其他服務

  • management event: e.g. IAM role被異動
  • data event: e.g. S3 activity
  • CloudTrail Insights event: detect unusual activity
AWS Config 能夠監控AWS資源的設定異動
  • 主要拿來確保AWS資源在設定上的正確性, 舉例:
    • s3 bucket是否有public access
    • 是否有ssh在存取security group
    • IAM access key過期沒
  • 遇到設定上的異常, 可以觸發自動修復或通知


CloudWatch vs CloudTrail vs AWS Config

簡單來分差別:

CloudWatch 監控資源&指標

CloudTrail 監控存取AWS資源的API calls

AWS Config 監控設定的異動


Reference

  • https://www.udemy.com/course/aws-certified-solutions-architect-associate-saa-c03

AWS SAA-C03 口袋筆記 - Load Balancer

Elastic Load Balancer (ELB)

Reference

  • https://www.udemy.com/course/aws-certified-solutions-architect-associate-saa-c03

AWS SAA-C03 口袋筆記 - Data & Analytics

Amazon Athena

  • 主要用於查詢分析S3的資料,舉例: VPC Flow Logs, ELB Logs, CloudTrail trails etc。
  • Serverless, SQL方式去查詢 (build on Presto)
  • Pricing $5.00/TB of data scanned
  • 提高效率、省錢的方式
    • 使用欄位式資料(columnar data)會比較省錢 (less scan)
      • Apache Parquet or ORC 資料格式
      • 效能也會大幅提升
      • 可以用Glue來幫忙轉檔
    • 透過壓縮檔案(bzip2, gzip, lz4...)來減少每次抓取的量, 進而提高效率
    • 在S3裡面去做partition, 來加速查詢。
    • 盡量存放大檔(>128mb)減少scan。
  • 可以透過Federated Query來查詢分析S3以外的資料來源。Federated Query透過Lambda (w/ DataSource Connector)來跑, 最後會將查詢結果存回S3裡。如下圖:


  • Business Intelligence (BI)服務,建立視覺化報表用。通常與Athena搭配使用。
  • 如果將檔案資料直接匯入QuickSight, 可以使用SPICE (內存引擎)。
    • 使用SPICE,分析查詢可以更快、更省錢
    • 例如將現有的csv, json, xlsx檔案匯入做分析
  • Enterprise edition: 可以設定Column-Level security (CLS) 限制哪些欄位的資料存取權限
  • QuickSight可定義自己的User(standard version)和Groups(enterprise version), 但這些用戶跟群組跟IAM無關,只用於QuickSight。
  • QuickSight可以跟很多資料源做整合,如下圖:
  • 欄位式的資料倉儲 (based on PostgreSQL, for OLAP)
  • 不是所有cluster的都有Multi-AZ
  • c luster -> take snapshot -> automated/manual copy -> copied snapshot -> restore -> cluster in another Region 
  • 透過Kinesis Data Firehose, S3 Copy Command將資料寫入到Redshift
  • 也可以從EC2 JDBC driver連到Redshift後直接寫入。建議批量寫入會比較有效率。
  • 透過Redshift Spectrum可以直接查詢S3的資料

AWS OpenSearch (aka Amazon ElasticSearch)
  • 類似ElasticSearch, 可做log查詢、全文查詢。通常與主資料庫做相輔相乘。
  • 資料通常可由Lambda或Kinesis DataFirehose灌入。舉例:
    • DynamoDB -> DynamoDB Stream -> Lambda -> OpenSearch
    • CloudWatch Logs -> Subscription Filter -> Kinesis Data Firehose/Lambda -> OpenSearch
    • Kinesis Data Streams -> Kinesis Data Firehose/Lambda -> OpenSearch
  • 用於跑Apache Hadoop或Apache Spark 
  • 跟data processing, 機器學習, web indexing, big data都可以想到EMR
  • Master和Core Node可以用reserved (min 1 year) purchase option來減少成本
  • Task Node 可以用 spot instance purchase option來減少成本
  • 資料萃取服務(extract, transform, and load; ETL)

  • 透過Glue將資料轉換成Parquet檔案格式餵給Athena架構圖如下:

  • 一些進階的應用:
    • Glue Job Bookmarks: 用來防止資料重複被處理
    • Glue Elastic Views: 用來建來建立Views從不同的資料來源
    • Glue DataBrew: 透過預先建制的轉化用來清理、標準化資料
    • Glue Studio: new GUI 去建立、執行、監控Glue裡的ETL jobs
    • Glue Streaming ETL: 可以透過streaming方式做ETL (Kinesis, Kafka...)
  • 用來建立資料湖的服務 (on top of Glue)
  • 最大好處是可以集中資料權限的管理



Reference

  • https://www.udemy.com/course/aws-certified-solutions-architect-associate-saa-c03

AWS SAA-C03 口袋筆記 - Storage

Amazon 提供block, object, cloud file三種資料存儲的種類。點這裡查看三種種類的差別。

Block

Amazon Elastic Block Store (EBS) 

  • 提供區塊層級儲存體磁碟區。想像他就是個雲端的USB外接硬碟。
  • limited performance
  • 只能掛在一個AZ裡面,如果要移到另一個AZ, 可以使用snapshot的方式。
  • 一個EBS同時間只能掛在一個EC2上,但一個EC2可以掛載多個EBS。
  • EC2 terminate時,預設root EBS也會跟著terminated (其他的EBS不會)。這個可以特別在delete on termination選項來關閉這個設定。 

EC2 Instance Store

  • EC2實體臨時區塊層級儲存。想像電腦本身的硬碟。
  • high-performance, better I/O performance
  • EC2停掉,資料就沒了。適用於臨時暫存而已,e.g. local cache。

Object

Amazon Simple Storage Service (S3)

  • AWS主要的物件儲存服務
  • 高資料可用性、擴展性、安全性和效能。
  • 主要用來存放 object (= files), 和 bucket (= directories)
  • bucket名稱必須是globally unique (跨區域跨帳號), S3是global service, 但bucket是regional。
  • 有不同的class (tire). Standard (General), Standard (IA), One Zone (IA), Glacier Instant Retrieval, Glacier Flexible Retrieval, Glacier Deep Archive, Intelligent Tiering。
  • S3 object lock 提供兩種retention mode: governance mode 和 compliance mode。後者在指定時間內不能被覆寫、刪除,設定也不能被修改。前者跟後者差不多意思,唯還可以讓有權限的人去做設定修改和刪除。
  • S3 Storage Lens: 評估儲存活動和使用量、指標產生摘要洞察、提供互動式儀表板。

Amazon S3 Glacier 

  • 同S3,但專門用來做封存或備份使用。
  • 會用儲存量和存取次數來計費
  • Instant Retrieval, 至少儲存90天
  • Flexible Retrieval, 至少儲存90天, 取檔案時間可分為 Expedited (1~5minutes), Standard (3~5hours), Bulk(5~12hours, free)
  • Deep Archive, 至少儲存180天, 取檔案時間可分為 Standard (12hours), Bulk (48hours)


File

Amazon Elastic File System (EFS)

  • 雲端共用檔案服務系統。
  • 可掛載在多個EC2上面,支援multi-AZ。
  • 高可用性、高擴展性,相對昂貴 (3倍 EBS gp2的價錢), pay per use。
  • 是相容於Linux based AMI (not Windows)
  • 多種儲存的Tiers。Standard, Infrequent access (IA), Archive。

Amazon FSx

  • 可以在AWS上面跑第三方高效能的檔案系統
  • 全受管的共用儲存
  • FSx for Windows File Server
  • FSx for Lustre, 專給機器學習或High Performance Computing (HPC)使用, 可以讀寫S3。
  • FSx for NetApp ONTAP, 適合將已經有跑ONTAP, NAS移到AWS上。有Point-in-Time 立即複製功能, 適合快速複製一份資料給測試機使用.
  • FSx for OpenZFS, 適合將已經有跑ZFS移到AWS上。同樣有Point-in-Time 立即複製功能。


--

AWS Storage Gateway 連結本地存儲到AWS雲端存儲的溝通橋樑

使用情境:

  • 災難復原
  • 備份與還原
  • 分層(tiered storage)。e.g. 在地使用熱資料,雲端拿來放封存資料。
  • 本地快取 & 低延遲檔案存取
不同類型的Storage Gateway:
  • S3 File Gateway 
    • 本地傳輸至S3 File Gateway是透過NFS or SMB協議,Gateway再透過Https傳輸至S3。
    • 如果要傳到Glacier, 需透過S3的Lifecycle policy。
    • 最常用的檔案會被快取於Gateway。
  • FSx File Gateway
    • 本地透SMB Client就可以跟Amazon FSx溝通。如中間多一個Amazon FSx File Gateway可以用於快取常用檔案。
    • Windows 原生相容 (SMB, NTFS, Active Directory...)
  • Volume Gateway
    • 可用於複製Amazon EBS Snapshots並存至S3裡頭。
    • 本地傳輸至Gateway透過iSCSI協議,Gateway再透過Https去建立EBS Snapshots。
    • 分為 Cached Volumes: 用於常用檔案的快取,和 Stored volumes: 用於定期備份整份資料至S3。
  • Tape Gateway
    • 本地的磁帶存儲Server透過iSCSI VTL (Virtual Tape Library)將資料傳到Tape Gateway, 然後Gateway再透過Https把資料存於Glacier或S3。 
硬體設備:
要使用Storage Gateway可以透過在地的虛擬主機(VMware, Hyper-V, KVM)或透過跟Amazon買硬體設備當作Gateway用的mini server。e.g. 我們可以選擇用Amazon EC2當作我們Gateway的host platform。

AWS Snow Family
  • 透過實體裝置去搬遷資料。適用邊緣、網路慢或不穩環境或超大量級資料的資料搬遷使用。
  • 由小到大 
    • Snowcone (8TB HDD ~ 14TB SSD) (TB等級) 
    • Snowball (80TB ~ 210TB) (PB等級)
    • Snowmobile (100PB以上) (EB等級)
  • Snowball無法將資料餵給Glacier, 必須透過S3和S3 lifecycle policy才行。

AWS Transfer Family, 允許你用FTP, FTPS, SFTP傳輸資料到S3或EBS。

AWS DataSync 

  • 專門用來移動本地(或其他雲端)的大量資料到AWS上 (需要agent)。
    • 本地 -NFS, SMB-> DataSync agent -TLS-> DataSync -> AWS Storage Resource。
  • 也可以從AWS不同的儲存類型之間傳輸 (不需要agent)。
  • 移動後,檔案權限和metadata會被保留。


Reference

  • https://www.udemy.com/course/aws-certified-solutions-architect-associate-saa-c03
  • https://www.tenlong.com.tw/products/9786263333123?list_name=lv

AWS SAA-C03 口袋筆記 - Security

 

封包從Internet一路到Instance裡面經過的Gateway, VPC, public/private subnet等等,就像是開闢一條道路讓封包進出自己的server。如果networking沒設正確,就像道路不通,封包流量自然不會流通。當這條道路打通後,接下來就是在這條路上放上層層的安全把關。

Internet -> Shield -> NACL -> WAF -> Security Group -> Instance

簡單想像客人要進入自己家中時的層層安控。

客人 -> 保全 -> 電梯磁卡 -> 監視器 -> 房門鑰匙 -> 房間

而 Firewall Manager 就像保全公司,負責管理組織底下所有AWS Account以上的安全設定。


Security Group

  • EC2的Firewall。可以控制inbound/outbound traffic規則 (像是哪些 protocol/ports/source 可以通過)
  • request/response是stateful; 如果inbound可以進來,則outbound就一定可以出去。反之,可以出去就一定能進來。
  • 預設格則都是不允許的。

AWS WAF (Web Application Firewall) 

  • 專門用來監控網路第7層(L7, 應用程式層)的http/https 的requests。
  • 可部署於 ALB, API Gateway, CloudFront, AppSync GraphQL API, Cognito User Pool。
  • 可建立 Web ACL。規則例如:IP白名單(一個規則上限1萬筆IP), Http head/body檢查, request大小或是地理位址防堵。
  • Web ACL的設定, 除了CloudFront, 對其他服務的設定都是Regional。

NACL

  • subnet曾的firewall。
  • request/response是stateless。如果inbound可以進來,outbound可以被設定為deny, 就無法出去,這個請求最終會得不到結果。
  • 預設規則都是允許的。

AWS Shield

  • 專門用來防護DDoS攻擊。
  • AWS Shield Standard 是免費的, 預設就有啟動。保護網路第3,4層的攻擊, 像是SYN/UDP 洪水攻擊, Reflection attacks.
  • AWS Shield Advanced ($3000/mo per organization), 保護更複雜類型的攻擊。保護目標如 ELB, CloudFront, Global Accelerator, Router53.

AWS Firewall Manager 

  • 管理組織下所有的Firewall規則。像是WAF rules, Shield Advanced, Network Firewall (VPC level), DNS Firewall...etc。

--

AWS Macie 用來偵測是否有敏感資料Personal Identifiable Information (PII)的服務。透過機器學習,從S3的檔案裡偵測到可能的PII。

AWS GuardDuty 用來偵測是否有資安威脅的服務。非常適合用來保護Crypto Currency Attack。透過機器學習,從各種日誌(VPC flow logs, CloudTrail logs, DNS logs, S3 logs...etc)去偵測威脅的可能。

AWS Inspector 用來掃軟體漏洞評估(根據CVE的資料庫)。主要用在EC2 instances, ECR Container Images & Lambda Functions。

--

AWS Key Manager (KMS) 專門用來管理存取加密過的金鑰。跟大部分的AWS服務都有整合,而跟IAM有完整的整合。可以透過CloudTrail來審視KMS key的使用狀況。

System Manager (SSM) Parameter Store 用來儲存組態或機密資料。常見使用情境像是Lambda可以把db url/password等組態資料存放用此。有分Standard和Advanced兩種Tiers。差別除了價錢跟可儲存數量大小外,Advanced支援參數expiration的police。

AWS Secrets Manager 專門用來管理存取有生命週期的機密。例如每3個月更換一次密碼。常見使用情境像是與Amazon RDS, KMS的整合。支援Multi-Region Secrets (同步replica到其他region)。

AWS Certificate Manager (ACM) 專門用來管理存取TLS Certificates。常見使用情境像是ELB, CloudFront, API Gateway的整合。但這無法用在於EC2上面。


Reference

  • https://www.udemy.com/course/aws-certified-solutions-architect-associate-saa-c03
  • https://www.tenlong.com.tw/products/9786263333123?list_name=lv

AWS SAA-C03 口袋筆記 - Kinesis

Amazon Kinesis 處理(近乎即時)串流資料的服務。主要分Kinesis Data Stream 和 Kinesis Video Stream。

Kinesis Data Stream

  • 是由1..n個shard組成
  • producer -> data record -> stream -> shard -> consumer
    • producer, e.g. applications, client, SDK, Kinesis Client Library (KCL), Kinesis Agent...etc
    • consumer, e.g. Apps(SDK, KCL), Lambda, Kinesis Data Firehose, Kinesis Data Analytics...etc
  • read/write時的data record都包含partition key和data blog。read的data record多一個sequence no (at shard level)
  • 資料用同個partition key會被分派到同個shard (ordering)
    • e.g. 用 user_id 當作partition key, 所以這個用戶的資料都送往同個shard, 且保有順序性
  • retention時間為1~365 days, 一但資料送到kinesis data stream, 就不能被刪除
  • Capacity Modes
    • provisioned mode
      • 需自己手動調整shard數量
      • 單個shard能吃的data record大小限制為 1MB/sec或 1000 records/sec
      • 單個shard能被consume的data record大小限制有兩種
        • 2MB/sec (shared) for all consumer
        • 2MB/sec (enhanced) per consumer
      • 每個shard以每小時為單位計費
    • on-demand mode
      • 預設單個shard的data record大小限制為 4MB/sec或 4000 records/sec
      • 根據前30天吞吐量的高峰值,自動調整shard數量
      • 每小時資料串流量計費 (per GB/hour)


Reference
  • https://www.udemy.com/course/aws-certified-solutions-architect-associate-saa-c03



AWS SAA-C03 口袋筆記 - Cognito & Amplify

Amazon Cognito 用於協助外部使用者(mobile/web app)取得AWS resource臨時用的credential。

現實生活中,拜訪客戶公司時,警衛可能透過打電話或從名片中先確認身份,確認無誤後再給予訪客證或門禁卡,訪客才得以進入大樓。

Amazon Cognito做類似的事情。外部app透過Cognito,先從Cognito User Pools (CUP)裡確認身份無誤後,再從Cognito Identity Pools (CIP)去取得AWS credentials。

Cognito User Pools: 主要作為 serverless 的 user database。提供以下功能特性:

  • 簡易帳密登入 & 密碼重設
  • Email & 電話認證
  • 可啟用MFA認證
  • 社群登入 (FB, Google, SAML...)
  • 可與API Gateway整合。 app -(authenticate)-> Cognito User Pools -(return token)-> app -(rest api with token)-> API Gateway -(evaluate token)-> Cognito User Pools -(authenticated)-> API Gateway -(access with identity)-> backend 
  • 可與Application Load Balance整合。 app -> ALB -(authenticate)-> Cognito User Pools -(authenticated)-> ALB -> backend
Cognito Identity Pools (Federated Identities): 提供用戶暫時的AWS credentials。 
  • 用戶來源於Cognito User Pools, 社群登入, SAML provider, OpenID connect provider...等。
  • 用戶於來源驗證後,再與Cognito Identity Pools換取暫時的credentials
  • 這些credentials裡有我們在Cognito裡設定的IAM policies
    • 也可以透過user_id去做細部的權限控管
  • 提供guess機制。使用Default IAM roles。

-- 分隔線 --

AWS Amplify (BaaS) 提供完整的解決方方案,讓前端開發者能更快速的開發、建置跟發佈前端(web/mobile)應用程式。可想做它像是Elastic Beanstalk (PaaS) for mobile/web application。
透過 Amplify CLI 可以快速建立一個 Amplify backend,裡面包含許多AWS serverless的服務,像S3、Cognito、Lambda、DynamoDB等。






Reference
  • https://godleon.github.io/blog/AWS/AWS-SOA-VPC/
  • https://www.udemy.com/course/aws-certified-solutions-architect-associate-saa-c03
  • https://www.tenlong.com.tw/products/9786263333123?list_name=lv

AWS SAA-C03 口袋筆記 - Networking VPC

在地端,網路封包會先通過Gateway進到公司網路,再經過防火牆和路由來到公司公有網段裡的伺服器,從這裡再進到公司私有網段裡的伺服器。

在雲端(AWS),網路封包會先通過Internet Gateway進到Virtual Private Cloud (VPC),再經過Route table及Network Access Control List (NACL)來到Public Subnet的Instances,從這裡再進到Private Subnet的Instances。

Internet -> IGW -> VPC & Router -> NACL ->  Route table -> Public/Private subnet -> Security Group -> Instances

幾個關鍵名詞:

  • Internet Gateway
  • VPC
  • Route table
  • NACL
  • Subnet
  • CIDR
公司的AWS VPC裡的內網如何連到外網?
一般Private subnet不具有對外連網能力,需透過NAT Gateway將流量導到外部。 Private Subnet -> NACL -> Route table -> NAT Gateway -> Router & VPC -> IGW -> Internet

公司的AWS VPC如何跟其他的VPC串接?
預設兩個VPC溝通會走外網。 VPC1 -> IGW -> Internet -> IGW -> VPC2
可以用VPC Peering讓兩個VPC在AWS Cloud裡對連。 VPC1 -> VPC Peering -> VPC2

同個AWS Regin裡,內網裡的Instance,如何繼續用內網的方式與AWS其他服務溝通?
預設存取AWS的其他服務都會先繞到外網去。 Private Subnet -> ... -> VPC -> IGW -> Internet -> AWS DynamoDB
可以用VPC Endpoint (AWS PrivateLink)讓Instance直接與AWS的服務溝通。Instance -> VPC Endpoint -> S3

公司的AWS VPC如何跟公司地端網路環境串接?
可以透過Site-to-Site VPN Connection (Virtual Private Gateway)溝通。Instance -> ... -> Virtual Private Gateway (VGW) -> Customer Gateway (CGW) -> ... -> On-Promises Servers
  • 還是透過外網連線,但有多一層VPN加密連線。
  • CGW 可透過軟體安裝或是有支援的硬體設備。用 public internet-routable IP address.
  • 如果CGW在前面有台NAT,則需要啟用NAT traversal (NAT-T), 然後用NAT上的 public IP address。
  • VGW 這邊subnet的route table要記得啟用Route Propagation。
  • NACL和Security Group也要設定正確才會通。
  • 如果想用ping指令測試連線,記得security group inbound的ICMP protocol要打開。
  • 一個VGW跟多個CGW溝通,且CGW也想要彼此也能溝通,可以利用AWS VPN Cloud Hub (hub-and-spoke model)這個服務。每個地端的Site連到同一個VGW設定dynamic routing即可互通。

公司的AWS VPC如何跟公司地端網路環境串接,但不走外網?
可以申請AWS的專線 AWS Direct Connect (DX Connect),確保所有資料都是在專線裡溝通,而不會經過外網(Internet)。 VPC -> Virtual Private Gateway -> AWS Direct Connect Location(AWS Direct Connect Endpoint | Partner Router) -> Customer Network(Customer Router)。
  • 至少需要一個月以上的時間建置專線。
  • Direct Connect Location (通常與當地ISP業者合作,又稱合作夥伴),在裡頭會有AWS Cage和Customer/Partner Cage。
  • AWS Cage有 DX Router, 有專線回到AWS自己的Data Center中。 
  • Customer/Partner Cage有使用者自己或合作夥伴的Router連到地端的網路服務。
  • High Resiliency -> 有多個DX Locations, 每個location底下只有一個DX Connect。
  • Max Resiliency -> 有多個DX Locations, 每個location底下有一個以上DX Connect。

VPC Flow Logs 用來查看VPC裡的網路流量。
  • NACL (stateless),預設都是允許。
    • inbound如果允許進來,outbound如果拒絕,則response會被擋下來。
  • Security Group (stateful),預設都是不允許。
    • inbound如果允許,outbound即使沒特別開起,也會自動允許。request / response會順利執行。



Reference
  • https://godleon.github.io/blog/AWS/AWS-SOA-VPC/
  • https://www.udemy.com/course/aws-certified-solutions-architect-associate-saa-c03
  • https://www.tenlong.com.tw/products/9786263333123?list_name=lv