AWS Certified Developer – Associate(SDA-C01) 考試準備

2019-12-15 AWS, Certificate

概述 & 考試範圍

SDA-C01 專注在「開發」的情境,偏向任何會與開發有相關的服務都需要特別深入閱讀,像是 Lambda, X-Ray, DynamoDB, Elastic Beanstalk, S3, EC2 等等,尤其以 DynamoDB 更為深入。

  • 考試時間:140 分鐘 (如需更多時間可延長 30 分鐘)
  • 考試題數:65 題
  • 考試題型:選擇題、複選題 (最多選 3 個)
  • 考試深度:理解開發應用程式的 3-Tiers 服務,DynamoDB 詳細應用方法及成本控管。

考前必備基本知識

  • Serverless architecture
    • Compute
      • Lambda
      • Lambda@Edge (With CloudFront)
      • Fargate (Container engine)
    • Storage
      • S3
      • EFS (未支援 Lambda)
    • Database
      • DynamoDB
      • Aurora Serverless
    • Other
      • API Gateway
      • SNS
      • SQS
      • AppSync (GraphQL API)
      • EventBridge
      • Step Functions
      • Kinesis
      • Athena
      • Cloud9
    • 特性
      • 無狀態 Compute 運作
      • 不需要管理 Infra
  • Lambda
    • 使用情境
      • 適合毫秒級別的運算
      • 無狀態
      • 簡短程式碼
      • 工作排程
    • 計費:依照運行時間計費
    • 限制
    • 特性
      • 當 Create, Update OR 長時間未執行會有秒級的延遲,稱為 cold-start
      • 不需要 maintenance windows 或是任何 scheduled downtimes
      • Lambda function 版本更新時 1 分鐘內會有同時存在 New / Old Version 同時被執行的情況
      • Lambda 預設為 internet,如果要存取 Private Subnet 可以 inVPC 後透過 NAT Gateway 存取 internet。
      • 非預期的錯誤可以透過 DLQ(dead letter queue) 將訊息傳至 SQS/SNS
      • 預期的錯誤可以透過 Error handling
      • Lambda 程式碼存在 S3 加密並在執行前進行完整性檢查
      • 每個 Lambda 都在隔離環境中執行
      • 版本發佈時使用 Alias 更換版本並使用權重做到 A/B 測試,最多可以 Alias 兩個版本。
    • 不建議放在 function handler 的動作
      • Database Connection
      • AWS SDK initiize
      • Package Dependencies
      • Datasets
    • 不建議在 Lambda function 內再 Call Lambda function,如果有需求則要避免 loop。
    • 建議存放在 environment 作為參數傳入的資訊
      • Database connection user, password or more string.
      • S3 bucket
      • 可識別 Personal 的資訊
  • X-Ray
    • Debug 使用
    • 在程式碼中引用 X-Ray Library package 使用
  • DynamoDB
    • 基於 Key-Value 的資料庫型態,由 Tables > Items > Attributes 組成
    • 一張 Table 必須要有一個 Primary key,又分為兩種
      • Partition key(hash attribute):指定 1 個 attribute 做為 Primary key,必須視唯一值
      • Partition key(hash attribute) + Sort key(range attribute):指定 2 個 attribute 做為 Primary key,2 值組合必須唯一值
    • 一張 Table 最多有 5 個 GSI、5 個 LSI
      • Global Secondary Indexes (GSI):
        • 可以跨 Table 進行 Indexs
        • 可以隨時修改 Indexes
        • 可以疊加在 LSI 上
      • Local Secondary Indexes (LSI):
        • 不能隨時修改 Indexes
    • Read Consistency(讀取一致性模型) 分為
      • ECR(最終一致性):
        • 當 replication 未完成時,可能會讀取到舊資料
        • 每秒可讀 2 次
        • 預設為 ECR
      • SCR(強制一致性):
        • 存取最近 replication 寫入完成的資料
        • 存取速度比 ECR 慢
        • GSI 不支援
        • 每秒可讀 1 次
        • 透過指定參數 ConsistentRead = true 開啟 SCR
    • Read/Write Capacity Mode:簡稱 RCU、WCU
      • RCU:每次讀取單位 4KB,超過就需要額外 RCU
        • SCR 每秒可讀一次,故每秒 4KB
        • ECR 每秒可讀一次,故每秒 8KB
      • WCU:每次讀取單位 1KB,超過就需要額外 WCU
  • API Gateway

考試題型

廣度專注在「開發方法」,考試強度在於幾個管理服務:

  • Lambda
  • DynamoDB
  • X-Ray、S3、IAM、Elastic Beanstalk、Kinesis Data Streams

整體的題型比較偏向以開發過程中會用遇到的問題,其中很多觀念都不只是在 AWS 會用到而已:

  • 有一需求,每次產生一張 DynamoDB Table,只需要保留 7 天內的資料,如何做最省錢且有效率? (delete table, 因為 delete item 更花錢)
  • 有一需求,DynamoDB Table 每筆 item 有 7KB 資料,每秒需讀取 10 次、寫入 10 次 (10 RCU, 70 WCU)
  • Lambda 如果需要使用 X-Ray 應該要做哪些事?
    • (X) 安裝 X-Ray agent
    • (O) 引用 X-Ray Library package
  • 有一需求,要讓 Lambda 存取 RDS 也要存取 internet,要如何作? (Lambda inVPC Private subnet with NAT Gateway)
  • 有一需求,CloudFront 管理 Lambda function,開發人員手動上傳一個新的 Lambda 版本到 S3,該如何透過 CloudFormation 更換新版本? (Lambda::Alias)
  • 有一需求,已有一個 Lambda function,開發人員手動上傳並覆蓋 S3 原本的 Lambda zip code,但沒有更新 Lambda 版本,為什麼? (必須指定 version)
  • 有一需求,Elastic Beanstalk 包含 EC2 和 RDS,要將 RDS 分離並且 zero downtime 該如何做? (RDS snapshot -> RDS instance deletion -> Elastic Beanstalk blue/green deployment)
  • 有一需求,該網站有 html, js, jpg, css 檔案,要建構無伺服器網站的做法? (CloudFront, S3)
  • 有一需求,由 Lambda 處理來自 Amazon Kinesis Data Streams 的資料,發現  Amazon Kinesis Data Streams 內有重複處理的資料,原因是? (Lambda Retries 導致資料重複)
  • 有一需求,原本的 Amazon Kinesis Data Streams 擁有 4 個 sharing 並透過 EC2 處理資料,但因為使用需求大於預期,所以 resharing 到 6 個 shard,此時最大的 EC2 有幾個 instance? (6 instances, Typically, when you use the KCL, you should ensure that the number of instances does not exceed the number of shards.)
  • 有一需求,要透過 ECR 進行 docker pull image,該如何做?
  • 有一需求,ECR 如何處理 dynamic port mapping 到 ALB? (task definition)
  • 有一需求,使用 DynamoDB Table 但是遇到 Read Capacity 讀取速度變慢,該如何做可以有效解決問題? (DAX)
  • 有一需求,使用 EC2 但是遇到 RDS 讀取速度變慢,該如何做可以有效解決問題? (Elasticache)
  • 有一需求,使用 S3 作為每個人的家目錄,彼此不能訪問對方的家目錄,要如何設定可以不用建立多個 IAM Policy? (IAM Policy with Condition, Controlling Access to a Bucket with User Policies)
  • 什麼是 SQS Delay queues? (new messages delay to a queue)
  • 有一需求,使用 Elastic beanstalk 佈署新版本,使用哪種方式可以 zero downtime 且不減少負載的情況下部屬? (Immutable)

未確認的答案題型

  • 有一需求,要分別佈署程式碼到 Dev, QA, Production 環境,該怎麼做?
    1. CodeDeploy deployment groups
    2. API Gateway

考試心得

整體而言難度在 Associate 考試算中下等級,主要抓住幾個重要的服務像是 Dynamodb、Lambda、Serverless 然後有過 AWS 開發經驗稍微再閱讀一下就可以考過,這張 Associate 準備過程是以 SAA 為基礎後大約花 8 小時內左右。

Reference

給 Mr. 沙先生一點建議

彙整

分類

展開全部 | 收合全部

License

訂閱 Mr. 沙先生 的文章

輸入你的 email 用於訂閱