如何在 AWS 建立 IAM 驗證方式的 MSK
👨💻簡介 上次介紹了使用 SASL/SCRAM 的驗證方式來完成整個設定,這次改成使用 IAM 的驗證方式,因為後續使用其他服務,像是連接器,並不能接受使用 SASL/SCRAM 驗證方式的 MSK,因此會需要改成 IAM 的驗證方式下去建立 MSK 🎯setup 建立叢集 進入到 [MSK 頁面](叢集 | MSK | ap-northeast-1 (amazon.com)),然後創建叢集 叢集設定 創建時選自訂建立,叢集類型我這邊使用的是已佈建,規格可以選最小的,版本使用 AWS 建議的,區域數量為3,達到高可用,最後叢集組態先使用預設即可 聯網 聯網的部分可以使用 AWS 幫你建立好的預設 VPC,我在前一步選擇三個可用區,因此會需要有三條不同區域的子網,安全群組也選擇預設的即可 安全 安全這邊選擇 IAM 角色型身份驗證,加密靜態資料選擇使用 AWS 受管金鑰 監控和標籤 這裡監控只要選基本的即可 接著等到叢集建立完成後開始設定密鑰,建立叢集大概需要15分鐘 建立 IAM Policy 叢集建立好後可以到屬性查看範例 Policy 這邊快速介紹一下權限用意,由上至下的區塊分別對應的是叢集、Topic、Group 叢集: kafka-cluster:Connect:允許連接到 Kafka 叢集,確保 Client 端或服務可以與 Kafka 叢集進行通信。 kafka-cluster:AlterCluster:允許對叢集進行修改操作,比如設定更改、叢集拓撲結構修改等。 kafka-cluster:DescribeCluster:允許檢視 Kafka 叢集的設定和狀態,這可能包括叢集節點、分區等信息。 Topic: kafka-cluster:*Topic*:允許與主題相關的所有操作,這裡使用通配符表示操作(例如,創建、刪除、列出、修改 Kafka Topic 等)。 kafka-cluster:WriteData:允許將資料寫入 Kafka Topic,這涉及生產者(Producer)將訊息發送到 Kafka。 kafka-cluster:ReadData:允許從 Kafka Topic 讀取資料,這涉及消費者(Consumer)從 Kafka 主題中接收訊息。 Group:...
如何在 aws-cli 快速切換帳號
👨💻簡介 在工作上如果有多組 AWS 環境,會需要快速切換進行操作,這篇簡單記錄一下如何快速方便的透過 aws-cli 切換帳號 💡解決辦法 使用 --profile 參數 在每次執行指令後面添加 --profile,指定要使用的 profile aws s3 ls --profile lab 使用環境變數 AWS_PROFILE export AWS_PROFILE=lab 建立 shell function 直接在 .bashrc 或 .zshrc建立一個 shell function 來進行快速切換。 以 .bashrc 為例,將底下代碼添加到 .bashrc change_aws_profile() { export AWS_PROFILE=$1 export AWS_DEFAULT_PROFILE=$1 echo "AWS profile switched to: $1" } 接著 reload source ~/.bashrc 當要切換時只需要輸入對應的 profile 即可 change_aws_profile lab 📚Reference How to: Use multiple AWS accounts with the AWS-CLI - DEV Community
如何在 AWS 使用 SASL/SCRAM 建立 MSK
👨💻簡介 Amazon Managed Streaming for Apache Kafka(Amazon MSK)是 Amazon 推出的完全代管、具有高可用以及安全的 Apache Kafka 服務。在這篇文章中,會使用 AWS 建立 MSK,並使用 SASL/SCRAM 的驗證方式來完成整個設定。 🎯setup 建立叢集 進入到 MSK 頁面,然後創建叢集 叢集設定 創建時選自訂建立,叢集類型我這邊使用的是已佈建,規格可以選最小的,版本使用 AWS 建議的,區域數量為3,達到高可用,最後叢集組態先使用預設即可 聯網 聯網的部分可以使用 AWS 幫你建立好的預設 VPC,我在前一步選擇三個可用區,因此會需要有三條不同區域的子網,安全群組也選擇預設的即可 安全 安全這邊選擇 SASL/SCRAM 身分驗證,加密靜態資料選擇使用 AWS 受管金鑰,待會會提到 SASL/SCRAM(Simple Authentication andSecurity Layer/ Salted Challenge Response Mechanism),是一種使用帳號和密碼來完成驗證的方式,但它的前提是 Client 端與 Proxy 之間必須使用 TLS 加密。 監控和標籤 這裡監控只要選基本的即可 接著等到叢集建立完成後開始設定密鑰,建立叢集大概需要15分鐘 建立KMS Key AmazonMSK 使用 Amazon Secret Manager 來儲存 MSK 使用的帳號與密碼。在設定 Secret Manager 之前,必須先在 Amazon KMS(Key Management Service) 創建一個使用者託管的 Key。...
MongoRestore 快速介紹
👨💻簡介 上一篇介紹了 mongodump,拿來將我們資料庫的檔案備份到本地,這次則是要來介紹 mongorestore,將本地的資料還原到指定的資料庫。 🔰基礎介紹 什麼是 MongoRestore? mongorestore 是 MongoDB 提供的一個命令行工具,用於將先前使用 mongodump 產生的備份檔案恢復到資料庫中,支援 BSON 格式的資料恢復。 MongoRestore 主要功能 恢復資料庫: 可以將備份的整個資料庫恢復。 恢復集合(collection): 可以指定恢復特定的集合。 從遠端伺服器恢復: 可以從遠端的 MongoDB 伺服器恢復資料。 Mongorestore 優缺點 優點 簡單易用:簡單的命令行操作即可完成資料還原。 支援大規模資料恢復:可以高效處理大型資料集。 支援各種平台:跨平台使用,不限作業系統。 缺點 相對耗時:對於大型資料庫,還原時間可能較長。 空間需求:恢復操作需要足夠的磁碟空間。 🎯setup 基本指令 恢復整個資料庫 語法: mongorestore --db <database_name> <path_to_backup_directory> 範例: mongorestore --db mydatabase /path/to/backup 恢復特定集合(collection) 語法: mongorestore \ --db <database_name> \ --collection <collection_name> <path_to_collection_backup> 範例: mongorestore \ --db mydatabase \ --collection mycollection /path/to/backup/mycollection.bson 恢復到特定目錄 語法: mongorestore --db <database_name> --dir <path_to_backup_directory> 範例:...
快速了解 mongodump:MongoDB 資料庫備份必知工具
👨💻簡介 在資料庫管理和系統維護中,備份是非常重要的一環。對於使用 MongoDB 的開發者和資料庫管理員來說,mongodump 是一個非常實用的命令行工具,能夠快速且輕鬆地完成資料庫的備份和恢復。無論是進行資料遷移、系統升級,還是面對突發的故障,mongodump 都能提供穩定的資料保護。這篇文章會簡單介紹一下 mongodump 的基本概念、怎麼使用,以及它的優缺點,讓你能夠更全面地了解這個工具,為你的資料庫管理增添一份安全保障。 🔰基礎介紹 什麼是 mongodump ? mongodump 是 MongoDB 提供的一個命令行工具,用於備份資料庫資料。 它會將 MongoDB 資料庫中的資料導出成 BSON 格式的檔案,這些檔案可以用於後續的資料恢復或移轉。 mongodump 主要功能 mongodump 的主要用途是資料備份與恢復。開發者或資料庫管理員可以使用 mongodump 來建立資料庫的快照,確保在系統升級、遷移或故障時,能夠有完整的資料還原方案。 MongoDump 優缺點 優點 簡單易用:使用命令行即可輕鬆進行資料備份。 支援大規模資料:能夠高效處理大型資料庫。 可用於各種場景:無論是本地還是遠端資料庫都能支援。 支援跨平台:可在各種操作系統上使用。 缺點 無法熱備份:備份過程中會影響資料庫性能,特別是在大型資料庫或高負載環境下。 備份格式相對龐大:BSON 格式備份檔案較大,可能占用較多的磁碟空間。 安全性問題:備份時需要妥善處理資料和憑證,避免資料洩露。 🎯setup 基本指令 導出整個資料庫 語法: mongodump --db <database_name> 範例: mongodump --db mydatabase 導出特定集合(collection) 語法: mongodump --db <database_name> --collection 範例: mongodump --db mydatabase --collection mycolletion 導出到特定目錄 語法: mongodump --out <output_directory> 範例: mongodump --db mydatabase --out /path/to/backup 導出遠端 MongoDB 伺服器 語法: 使用參數組合指令 mongodump --host <mongo_host_or_ip> --port <port> --db <database_name> --username <username> --password <password> --authenticationDatabase <auth_database> 使用 URI:...
Telegram 憑證監控機器人實作 EP5 - 代碼優化
👨💻 簡介 在這篇文章中,我們將對 Telegram 憑證監控機器人的代碼進行優化。我們會新增一些簡單的指令,並且將部分變數改為從 yaml 檔案中讀取,而不是直接寫死在程式碼中。這些改進目的是提高可讀性和可維護性。 🛠️ 使用工具 Python 3.9.6 MongoDB TG Bot 📝 功能需求 新增 TG 指令 show_cert_info 新增 TG 指令 help 調整參數讀取 🎯Setup 新增 TG 指令 show_cert_info 這裡會用到之前寫的 get_ssl_cert 函數,可以印出證書來看一下有什麼資訊: {'subject': ((('countryName', 'US'),), (('stateOrProvinceName', 'California'),), (('localityName', 'San Francisco'),), (('organizationName', 'Wikimedia Foundation, Inc.'),), (('commonName', '*.wikipedia.org'),)), 'issuer': ((('countryName', 'US'),), (('organizationName', 'DigiCert Inc'),), (('commonName', 'DigiCert TLS Hybrid ECC SHA384 2020 CA1'),)), 'version': 3, 'serialNumber': '07419E39583A4C76CF1EA14347FA5F3A', 'notBefore': 'Oct 18 00:00:00 2023 GMT', 'notAfter': 'Oct 16 23:59:59 2024 GMT', 'subjectAltName': (('DNS', '*....
Telegram 憑證監控機器人實作 EP4 - 憑證資訊處理
👨💻 簡介 前篇已經將 TG Bot 整合 MongoDB,現在要將一些函數修改,在對 DB 進行操作前,先對 domain 進行驗證操作。 🛠️ 使用工具 Python 3.9.6 MongoDB TG Bot 📝 功能需求 新增 domain 前檢查 domain 憑證 透過 TG Bot 檢查所有 domain 是否有過期 🎯Setup 新增 domain 前檢查 domain 憑證 之前在撰寫 CloudFunction 時有使用到 get_ssl_cert_expiry_date 函數,在這裡先對這個函數做一個簡單的修改,將驗證憑證是否有效以及取得過期時間拆成兩個函數: def get_ssl_cert_info(domain, check_only=False): ssl_context = ssl.create_default_context() with ssl_context.wrap_socket(socket.socket(socket.AF_INET), server_hostname=domain) as conn: conn.settimeout(3.0) try: conn.connect((domain, 443)) if check_only: return True else: return conn.getpeercert() except Exception as e: print(f"無法獲取 {domain} 的 SSL,錯誤:{e}") return False if check_only else None def get_ssl_cert_expiry_date(cert): if cert is None: return None try: expire_date = datetime....
Telegram 憑證監控機器人實作 EP3 - 整合 MongoDB
👨💻 簡介 這一部分主要讓 TG Bot 可以接收指令,對 MongoDB 進行增刪改查,讓我能夠透過 TG Bot 來新增、修改、刪除 domain,這樣就能夠做到自動化管理,而且可以做到多環境的管理。 🛠️ 使用工具 Python 3.9.6 MongoDB TG Bot 📝 功能需求 透過 TG Bot 讀取 MongoDB 所有 domain 透過 TG Bot 讀取 MongoDB 特定 domain 透過 TG Bot 新增 Domain 到 MongoDB 透過 TG Bot 新增同一 env 底下多組 domain 到 MongoDB 透過 TG Bot 修改 MongoDB Domain 透過 TG Bot 刪除 MongoDB Domain 🎯Setup 透過 TG Bot 讀取 MongoDB 所有 domain 先將原本的 MongoDB 啟動起來,並放入值,接著來去呼叫 load_domain_envs_from_mongodb 這個 function...
Telegram 憑證監控機器人實作 EP2 - 打造自己的 TG Bot
👨💻 簡介 今天這篇主要是帶大家快速建立屬於自己的 Telegram bot,申請 bot 的部分我會附上網址,主要完成一些跟 Bot 的簡單回覆以及設定指令等等功能。 🛠️ 使用工具 Python 3.9.6 TG Bot 申請教學 📝 功能需求 輸入指令讓 TG Bot 回傳訊息 接受傳入參數並進行簡單回傳 設定 cronjob,固定時間回傳訊息 🎯Setup 要使用 TG Bot,可以使用 pyTelegramBotAPI 這個 Library,官網有簡單的範例可以讓我們快速上手。 輸入指令讓 TG Bot 回傳訊息 這個簡單的範例可以在你輸入 hello 時,做簡單的回傳: import telebot TOKEN = "your-token" # 建立機器人 bot = telebot.TeleBot(TOKEN) # 設定一個指令處理器,當收到指令 /hello 時觸發。 @bot.message_handler(commands=['hello']) def hello_command(message): # 發送一條消息到發送 /hello 指令的聊天中 bot.send_message(message, "Someone has started me!") # 讓機器人不斷運行,等待並處理任何消息或指令。 bot.infinity_polling() 要建立指令都會需要設定 message_handler,並且需要傳入 message 參數。 這個參數代表了觸發該指令的 Telegram 消息對象,透過這個 message 對象,你可以訪問到發送指令的用戶資訊、消息內容、聊天資訊等重要資料。...
Telegram 憑證監控機器人實作 EP1 - 讀取 MongoDB Domain Info
👨💻 簡介 上次做的憑證監控已經可以正常運作了,但這次希望能夠不從 yaml 讀取 domain info,而是從 MongoDB 進行讀取,方便未來的擴充性。 這次的重點是要透過 Python 連接 MongoDB,並且透過 Python 讀取 MongoDB,最後透過 Python 寫入 MongoDB。 🛠️ 使用工具 Python 3.9.6 MongoDB Mongoshell Docker Docker-Compose 📝 功能需求 建立 MongoDB docker-compose 透過 Python 連接 MongoDB 透過 Python 讀取 yaml 並寫入 MongoDB 透過 Python 傳入 env 以及 domain 寫入 MongoDB 透過 Python 讀取 MongoDB 透過 Python 修改 MongoDB 透過 Python 刪除 MongoDB 🎯Setup 建立 MongoDB docker-compose 要簡單使用 MongoDB 可以用 docker-compose 快速拉起: version: "3....