顯示具有 [職場] 挨踢技巧 標籤的文章。 顯示所有文章
顯示具有 [職場] 挨踢技巧 標籤的文章。 顯示所有文章

5/25/2023

AWS WAF 的排除邏輯

距離上次的分享已經兩年多,沒想到又遇到了值得分享的疑難雜症。這次遇到的是 AWS WAF 的排除邏輯。 我要用 rate based rule 去觀測短時間的大量 request。但因為某些網頁的設計,會在一次 request 中再呼叫多個 url 或載入大量圖檔。因此在下面的設定介面中,看起來是要設定為:

不是 特定 URL
OR
不是 圖檔

不過設定完發現,特定 URL 和圖檔還是持續進來。透過代理商詢問原廠才知道,這裡要設為 AND 才行:

不是 特定 URL
AND
不是 圖檔

乍聽之下覺得很不合理,如果用 AND,不是應該要兩個同時成立才算嗎? 不過和同事聊到這件事,他的說明是:

當特定 URL被呼叫時:

不是特定 URL is true
OR
不是圖檔 is false

>> true OR false = true 所以符合,還是會 count

改用 AND

不是特定 URL is true
OR
不是圖檔 is false

>> true AND false = false 所以不符合就不 count

 這個解釋聽起來很有道理,不過怕過幾天就會忘了,還是記錄一下並和大家分享好了。

2/09/2021

如何透過 Cloudwatch 觀察 EC2 狀態

Cloudwatch 本來就有內建 EC2 的不少指標。不過,有些最基本的指標,例如剩餘硬碟空間、記憶體用量卻沒有。這時候可以透過安裝 Cloudwatch agent 取得。網路上有些這樣的文章,但是做法不一且有的版本已經不適用。分享一個做法,主要步驟是來自於 AWS support 建議,加上一點個人經驗補充 :

1. 下載及安裝 CloudWatch Agent (支援 64-bit versions of Windows Server 2019, Windows Server 2016, Windows Server 2012, and Windows Server 2008 R2)

2. 建立 IAM Role 並關聯到 EC2 上

2.1 開 Role

2.2 將 Role attach 到 EC2 (step 1~4)

3. 建立 ColudWatch Configuration File:  

把檔案存放在 C:\Program Files\Amazon\AmazonCloudWatchAgent\config.json ,內容如下:

{
"metrics": {
"append_dimensions": {
"InstanceId": "${aws:InstanceId}"
},
"metrics_collected": {
"LogicalDisk": {
"measurement": [
"% Free Space",
"Free Megabytes"
],
"metrics_collection_interval": 60,
"resources": [
"*"
]
},
"Memory": {
"measurement": [
"% Committed Bytes in Use",
"Available MBytes"
],
"metrics_collection_interval": 60,
"resources": [
"*"
]
}
}
}
}
 

這樣會每隔60秒從 Windows 效能監視器取得一次數據更新。如果想新增觀測的 Metrics 可以參考此文

4. 執行 CloudWatch Agent

開啟一個 PowerShell (需 run as administrator) ,執行底下的命令

& "C:\Program Files\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent-ctl.ps1" -a fetch-config -m ec2 -s -c file:"C:\Program Files\Amazon\AmazonCloudWatchAgent\config.json"

如果有錯誤 (e.g. Windows 2012),可能需要先執行下行改 policy 再試一次

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

5. 預設收集到的資訊會放在 CWAgent 這個namespace裡面,可以登入 CloudWatch concle 來查看收集到的資訊。

  

如果沒看到,有幾個方向可以查找:

  • Windows 效能監視器是否有想看的東西了? 沒有的話可以勾起來
  
  • 勾選後需要 restart service: Amazon CloudWatch Agent (如果無法啟動,用 Admin 執行 PowerShell 並執行上面步驟 4 指令)
  • 確認 EC2 的 IAM role 有改成上面步驟 2 的 role 

2/07/2021

聯絡 AWS 中文客服的方法

對大部分中文使用者來說,要用英文聯絡 AWS 客服,應該是件頭痛的事。即使寫得出問題,也不一定看得懂對方的回覆。如果能用中文,是不是簡單多了? 分享一個幾年前學到的秘技。只要在 subject 前方多加 (Mandarin),就會被轉到中文客服。

AWS 客服大概是我遇過最專業的客服團隊。除了回覆速度快外,大部分的 ticket,都能一次回覆就完全解決我們的問題。要做到這樣,除了專業能力足夠外,還要能夠完全了解客戶的問題、精準地表達 (輔以足夠的外部連結或範例),真的很不簡單。

在中國使用 reCAPTCHA 的方法

大部分網站在註冊、登入的地方,都有防止機器人的需求。Google reCAPTCHA 是一個蠻常見的方法。不過,Google 在中國經常被擋,而對一個主要市場非中國的網站來說,另外找一套中國境內的方案又好像不太實際。這時候,可以參考 Google 官方提供的方法,將 Domain 從 Google.com 改為 recaptcha.net 就可以了。

11/19/2020

AWS S3 跨帳號權限

工作中遇到問題,常常上網都能找到解答。不過之前跟朋友聊天時發現,有些用英文找得到到解答,中文不一定好找,對某些慣用中文搜尋的人可能就以為無解,多繞冤枉路。所以想到可以多開一個文章分類: [職場] 挨踢技巧,分享一些經驗,希望能幫到一些人,節省一點時間。 

今天熱騰騰的經驗是,我們將 AWS A 帳號的 S3 檔案搬移到另一個 AWS B 帳號後,發現 B 帳號的使用者無法存取。原先以為是 IAM 或是 bucket 的設定問題,直到用兩邊 Admin 帳號操作相同動作,A 帳號可以, B 帳號不行,才確定是檔案權限問題。搜尋了一下,應該是今年的新改變 (參考: Amazon S3加入更多安全與存取控制功能)。用舊的方式直接 sync,會讓檔案複製過去後,擁有者還是 A 帳號,所以 B 帳號沒有權限操作。

解決方式可以參考官方文件: Why can't I access an object that was uploaded to my Amazon S3 bucket by another AWS account? 裡面的教學包含:

  • 如何在搬移時提供新帳號權限
  • 如果搬完了,怎麼修改不用重搬
  • 如果有多帳號會傳到同一個 bucket,如何確保大家都記得提供權限 (require full control)
在找的過程中發現,現在 s3 介面現在也提供跨帳號搬移的操作了。除了整個 bucket 搬移,也可以指定 pre-fix or tag,權限也能透過介面勾選轉移,不一定要再去找 cli 的語法了。