Skip to content

Commit

Permalink
feat: update some aws notes
Browse files Browse the repository at this point in the history
  • Loading branch information
yilanboy committed Oct 24, 2024
1 parent f65bec5 commit 79e0718
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 1 deletion.
25 changes: 25 additions & 0 deletions aws/05-lambda.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@ nav_order: 5

放在 Lambda 上面的程式稱為 Function。Lambda 背後的技術是使用 AWS 自己研發的 [Firecracker](https://firecracker-microvm.github.io/),可以快速地開啟一個 MicroVM。

Lambda 會在事件進來之後立刻開啟一個 MicroVM 來處理進來的事件。並在處理完事件之後關閉 MicroVM。
所以 Lambda 上面除了程式碼之外,無法儲存任何檔案 (例如靜態資源就無法放在 Lambda 上面)。

如果你有一個服務需要多個 Function 在背後運行,可以建立一個 Lambda Application,並將所有 Function 放在這個 Application 中。

## Layer
Expand All @@ -25,6 +28,24 @@ Layer 可以給多個 Function 重復使用,當 Function 會解壓縮 Layer

**注意每個 Function 至多只能使用 5 個 Layer**

## Network

Lambda 可以放置在 VPC 底下,讓 Lambda 其他服務放在一起並在私有網路底下快速的存取它們,
例如 ElastiCache 與 RDS (Relational Database Service)。

但要注意放在 VPC 底下的 Lambda 無法對外部發送請求,因為 Lambda 不具備 Public IP 也無法綁定一個 Public IP。
所以必須要再加上一個 NAT 來讓 Lambda 與外部互通。

## Persistent Storage with EFS

Lambda 上可以掛 EFS (Elastic File System),讓其擁有持久性的儲存空間用來放置檔案。
但注意有幾個前置條件。

- Lambda 需要與 EFS 一同放置在 VPC 底下 (這樣 Lambda 就會失去與外面直接互通的能力)。
- Lambda 的 IAM 需要幾個操作 EFS 的權限。有 `elasticfilesystem:ClientMount``elasticfilesystem:ClientWrite` (唯讀連線則不需要)。
- EFS 檔案系統的安全群組中必須允許傳入 NFS 通訊 (連接埠 2049)
- 在 Lambda 上掛載檔案系統的位置,以 **「/mnt/」開頭。例如「/mnt/lambda」**

## 使用 AWS CLI 更新 Lambda 的環境變數

在 AWS CLI 中可以透過以下指令取得 Lambda Function 的設定。
Expand Down Expand Up @@ -89,3 +110,7 @@ aws lambda update-function-configuration \
如果想使用自己的 FQDN,可以搭配 API Gateway 做 Custom Domain Name 的 Mapping。
- 提供 10GB 暫時性的存儲空間,詳細可以參考[這裡](https://aws.amazon.com/tw/blogs/aws/aws-lambda-now-supports-up-to-10-gb-ephemeral-storage/)
- 你可以將你的程式打包成容器在 Lambda 上面運行,但執行速度取決於容器的啟動速度,較為大型的應用,效果通常不會太好

## 參考資料

- [如何建立正確的 EFS 存取點組態,以使用 Lambda 函數掛載我的檔案系統?](https://repost.aws/zh-Hant/knowledge-center/efs-mount-with-lambda-function)
2 changes: 1 addition & 1 deletion aws/16-storage.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ nav_order: 16
- IOPS SSD,在 io1 可以提供 4GB 到 16TB 的存儲空間,根據你的硬碟大小,可以提供的 IOPS 也會提高。
- 1GB 的硬碟大小可以提供 50 IOPS。

## Elastic Elastic File System (EFS)
## Elastic File System (EFS)

- 支援 POSIX (Portable Operating System Interface) 標準。
- EFS 可以同時被**上千台 EC2** 掛載。
Expand Down

0 comments on commit 79e0718

Please sign in to comment.