2023年9月27日 星期三

[GWS] 透過 App Script 你也可以完成的 Google Drive 盤點大法

 剛好最近有一個需求,就是盤點公司部門內 Google Drive 的文件總表,由於資料散落在各個資料夾內,對於資料整理較為不便利,想透過一些方法來更快速的去撈取 Drive 內的所有資料以及他所在的目錄,剛好前陣子有在摸索 App Script 這個服務 ,身為工程師就是想把重工的事情透過自動化去完成,因此解決了這件事情 

Step1 . 你需要在你想盤點的 Google Drive 內,新建一個 Google Sheet















Step2. 進入 Google Sheet 後,點選 擴充功能 > AppScript












Step3. 貼上我寫好的程式碼

// 您的 Google Drive 資料夾的 ID
var folderId = "XXXXXXXXXXXXXXXXXXXXXXX";

// 您的 Google Sheet 的 ID
var sheetId = "XXXXXXXXXXXXXXXXXXXXXXXXXX";

// 函數用於從 Google Drive 讀取文件名稱並寫入 Google Sheet
function writeToSheet() {
  var folder = DriveApp.getFolderById(folderId);
  var sheet = SpreadsheetApp.openById(sheetId);
  var sheetName = "sheet1";  // 修改為您的 Google Sheet 工作表名稱

  // 定義資料陣列,將名稱寫入 A 欄位和 B 欄位
  var data = [];

  // 取得資料夾內的所有檔案和子資料夾
  var files = folder.getFiles();
  var subFolders = folder.getFolders();

  // 建立用於記錄已處理檔案名稱的集合
  var processedFileNames = new Set();

  // 將資料夾的名稱和檔案的名稱添加到資料陣列,排除指定資料夾的檔案名稱
  while (files.hasNext()) {
    var file = files.next();
    if (!processedFileNames.has(file.getName())) {
      data.push([folder.getName(), file.getName()]);
      processedFileNames.add(file.getName());
    }
  }

  // 遍歷所有子資料夾,並從中獲取檔案名稱,排除指定資料夾的檔案名稱
  while (subFolders.hasNext()) {
    var subFolder = subFolders.next();
    var subFiles = subFolder.getFiles();
    while (subFiles.hasNext()) {
      var subFile = subFiles.next();
      if (!processedFileNames.has(subFile.getName())) {
        data.push([subFolder.getName(), subFile.getName()]);
        processedFileNames.add(subFile.getName());
      }
    }
  }

  // 檢查 `data` 陣列是否有任何檔案名稱。如果有,則將 `data` 陣列寫入 Google Sheet,從A2和B2格開始寫入
  if (data.length > 0) {
    var targetSheet = sheet.getSheetByName(sheetName);
    targetSheet.clear();  // 清除工作表內容
    targetSheet.getRange(1, 1, 1, 2).setValues([["檔案路徑", "SOP 名稱"]]); // 在A1和B1格中输入欄位名稱
    targetSheet.getRange(2, 1, data.length, 2).setValues(data);
  }
}

// 呼叫函數以執行操作
function main() {
  writeToSheet();
}
Step4. 貼上後有三個欄位需要修改, ID 如何產出 
1. // 您的 Google Drive 資料夾的 ID var folderId = "XXXXXXXXXXXXXXXXXXXXXXX" 

2. // 您的 Google Sheet 的 ID var sheetId = "XXXXXXXXXXXXXXXXXXXXXXXXXX" 

3. targetSheet.getRange(1, 1, 1, 2).setValues([["檔案路徑", "SOP 名稱"]]); // 在A1和B1格中输入欄位名稱 直接開啟 Drive 然後看上面的 URL 字串,同理 Google Sheet ID 也是一樣






















Step5. 按下儲存後,執行就會產出此 Google Drive 內的所有文件於 Google Sheet 上方便你做盤點的動作





2023年9月23日 星期六

[AWS] EC2 Cross AZ Backup

 Written by: AWS Community Builder Wang Sheng Hau

Because there is a need for cross-availability zone backup on the project, the AWS Backup service is used for backup.The following are the steps to set up. 

Step1. Access AWS backup Console














Step2. Create Backup Plan








Step3. Create New Plan and enter the backup plan name , Create a backup repository. This is the repository for EC2 backup. Click to create a backup repository.












Step4. Backup frequency can be selected according to usage scenarios
















Step5. The backup period can be customized at a specific time. It is recommended to select off-peak time for backup.

















Step6. Choose to copy to another availability zone: this time, backup from Virginia Region to Tokyo Region

Create a destination backup repository, which will be automatically synchronized from Virginia to the Tokyo backup repository.









Step7. Assuming that your EC2 is using Windows and uses services such as SQL Server, be sure to enable it.

Back up and restore Microsoft Windows applications with VSS (Volume Shadow Copy Service) functionality









Step8. After completion, you will see the EC2 Backup plan created







Step9. Click to enter the plan and start assigning resources to let him know which services to back up.

You can choose a default IAM role and let AWS help you create a role for AWS Backup.















Step10. Backup resource selection, select EC2 here, you can choose to back up all EC2 or specific EC2



















Step11. After setting, click OK to see the set backup plan.










Click the backup repository on the left to see the repository you set. From the restore point, you can see the set automatic backup.















Step12. Click the restore point and press Copy to manually copy across regions to the Toyko Region.






























Step13. After switching to Tokyo Region, you can see the created backup save library

You can see that the backup EC2 has been copied to Tokyo Region

Since the Backup Plan has been set in the Virginia Region above, it will be automatically synchronized.














[1] AWS Backup EC2跨越區域建立備份副本

https://docs.aws.amazon.com/zh_tw/aws-backup/latest/devguide/cross-region-backup.html

2023年9月14日 星期四

[AWS] Amazon CodeCatalyst 一站式開發工具

 Written by: AWS Community Builder Wang Sheng Hau

今天參加了 AWS 所舉辦的 Webinar 現代應用開發賦能系列] 一站式開發工具 Amazon CodeCatalyst — 高效開發者必學神器 ,覺得這對於開發者來說是一個及為便立的服務

以往開發者在本機端開發時常常會因為硬件的問題而造成開發不順 , 公司對於設備添購又斤斤計較的情況下 , 這時候如果改使用 AWS CodeCatalyst 後就可以避免這樣的事情一在發生

把開發環境部署在雲端 , 你可以不用侷限在自己的電腦硬體不足的問題 , 甚至可以在通勤期間透過平板就可以進行開發或是 Code reivew , 整個 flow 非常的方便 , 並且又有 CI/CD 流程

下面是節錄本次會議中的一些 講師 Donnie 的 Slide 

可以知道 Amazon CodeCatalyst 是一個集成的 DevOps 服務,專為軟體開發團隊提供,以將持續整合和部署實踐納入其軟體開發流程中。

CodeCatalyst 提供了一個地方,可以計劃工作,共同編寫代碼,並使用持續整合和持續交付(CI/CD)工具構建、測試和部署應用程序。

您可以通過將 AWS 帳戶連接到 CodeCatalyst 空間來輕鬆集成 AWS 資源到您的項目中。在一個工具中包含了應用程序生命周期的所有階段和方面,您可以快速自信地交付軟體。


這邊說明了 CodeCatalyst Blueprints 適用於個場景 [1]
  • 無伺服器應用模型
  • Devops 部署管道
  • 無伺服器/微服務架構
  • Web 3 Tier 應用程式
  • 點擊流數據即時分析
  • AWS Glue ETL

透過了 AWS 託管服務來減少自己維運的困擾 , 透過自動化的構建以及完善的 Workflow 更能加速服務的部署以及優化整個維運流程



其實可以把 CodeCatalyst 想像成加強版本的 AWS Cloud9 ,但功能又更完善更強大


更重要的是透過輕鬆的成員邀約就可以達成共同開發的情境 , 問題的追蹤以及代碼的審核在以往都是要自行建構在 flow 裏面 , 現在全部整合在 CodeCatalyst 內讓你值些使用

下圖為講師 Demo 畫面

CodeCatalyst 收費可以參考 [3]