

Amazon CodeCatalyst 不再向新客戶開放。現有客戶可以繼續正常使用該服務。如需詳細資訊，請參閱[如何從 CodeCatalyst 遷移](migration.md)。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在工作流程執行之間快取檔案
<a name="workflows-caching"></a>

啟用檔案快取時，建置和測試動作會將磁碟上檔案儲存至快取，並在後續工作流程執行中從該快取還原這些檔案。快取可減少建置或下載未在執行之間變更的相依性所導致的延遲。CodeCatalyst 也支援備用快取，可用於還原包含一些所需相依性的部分快取。這有助於減少快取遺漏的延遲影響。

**注意**  
檔案快取僅適用於 Amazon CodeCatalyst [建置](build-workflow-actions.md)和[測試](test-workflow-actions.md)動作，且僅當它們設定為使用 **EC2** [運算類型](workflows-working-compute.md#compute.types)時。

**Topics**
+ [關於檔案快取](#workflows-caching.files)
+ [建立快取](#workflows-caching.fallback)
+ [檔案快取限制條件](#workflows-caching.constraints)

## 關於檔案快取
<a name="workflows-caching.files"></a>

檔案快取可讓您將資料整理成多個快取，每個快取都在 `FileCaching` 屬性下參考。每個快取都會儲存指定路徑指定的目錄。指定的目錄將在未來的工作流程執行中還原。以下是使用名為 `cacheKey1`和 的多個快取進行快取的範例 YAML 程式碼片段`cacheKey2`。

```
Actions:
  BuildMyNpmApp:
    Identifier: aws/build@v1
    Inputs:
      Sources:
        - WorkflowSource
    Configuration:
      Steps:
        - Run: npm install
        - Run: npm run test
    Caching:
      FileCaching:
        cacheKey1:
          Path: file1.txt
          RestoreKeys:
             - restoreKey1
        cacheKey2:
          Path: /root/repository
          RestoreKeys:
             - restoreKey2
             - restoreKey3
```

**注意**  
CodeCatalyst 使用多層快取，其中包含本機快取和遠端快取。當佈建的機群或隨需機器在本機快取上遇到快取遺失時，將從遠端快取還原相依性。因此，某些動作執行可能會因為下載遠端快取而遇到延遲。

CodeCatalyst 會套用快取存取限制，以確保某個工作流程中的動作無法修改來自不同工作流程的快取。這可保護每個工作流程，避免其他工作流程推送可能影響建置或部署的不正確資料。快取範圍會強制執行限制，將快取隔離到每個工作流程和分支配對。例如， `workflow-A` 分支`feature-A`中的檔案快取與 同級分支 `workflow-A`中的檔案快取不同`feature-B`。

當工作流程尋找指定的檔案快取且找不到它時，就會發生快取遺漏。這可能有多種原因，例如建立新分支或參考新快取且尚未建立時。也可能在快取過期時發生，依預設，會在上次使用後 14 天發生。為了減輕快取遺漏並提高快取命中率，CodeCatalyst 支援備用快取。備用快取是替代快取，提供還原部分快取的機會，這可能是快取的較舊版本。快取會先在 下搜尋屬性名稱`FileCaching`的相符項目來還原，如果找不到， 會評估 `RestoreKeys`。如果屬性名稱和所有 都存在快取遺漏`RestoreKeys`，工作流程將繼續執行，因為快取是盡最大努力且不保證的。

## 建立快取
<a name="workflows-caching.fallback"></a>

您可以使用下列指示將快取新增至工作流程。

------
#### [ Visual ]

**使用視覺化編輯器新增快取**

1. 開啟 CodeCatalyst 主控台，網址為 https：//[https://codecatalyst.aws/](https://codecatalyst.aws/)。

1. 選擇您的專案。

1. 在導覽窗格中，選擇 **CI/CD**，然後選擇**工作流程**。

1. 選擇工作流程的名稱。您可以依定義工作流程的來源儲存庫或分支名稱進行篩選，或依工作流程名稱或狀態進行篩選。

1. 選擇**編輯**。

1. 選擇**視覺化**。

1. 在工作流程圖表中，選擇您要新增快取的動作。

1. 選擇 **Configuration (組態)**。

1. 在**檔案快取 - 選用**下，選擇**新增快取**並在欄位中輸入資訊，如下所示：

    **索引鍵** 

   指定主要快取屬性名稱的名稱。快取屬性名稱在工作流程中必須是唯一的。每個動作在 中最多可以有五個項目`FileCaching`。

    **路徑** 

   指定快取的關聯路徑。

    **還原金鑰 - 選用** 

   找不到主要快取屬性時，指定要用作備用的還原金鑰。還原金鑰名稱在工作流程中必須是唯一的。每個快取在 中最多可以有五個項目`RestoreKeys`。

1. （選用） 選擇**驗證**以在遞交之前驗證工作流程的 YAML 程式碼。

1. 選擇**遞交**，輸入遞交訊息，然後再次選擇**遞交**。

------
#### [ YAML ]

**使用 YAML 編輯器新增快取**

1. 在 https：//[https://codecatalyst.aws/](https://codecatalyst.aws/) 開啟 CodeCatalyst 主控台。

1. 選擇您的專案。

1. 在導覽窗格中，選擇 **CI/CD**，然後選擇**工作流程**。

1. 選擇工作流程的名稱。您可以依定義工作流程的來源儲存庫或分支名稱進行篩選，或依工作流程名稱或狀態進行篩選。

1. 選擇**編輯**。

1. 選擇 **YAML**。

1. 在工作流程動作中，新增類似下列的程式碼：

   ```
   action-name:
     Configuration:
       Steps: ...
     Caching:
       FileCaching:
         key-name:
           Path: file-path
           # # Specify any additional fallback caches
           # RestoreKeys:
           #  - restore-key
   ```

1. （選用） 選擇**驗證**以在遞交之前驗證工作流程的 YAML 程式碼。

1. 選擇**遞交**，輸入遞交訊息，然後再次選擇**遞交**。

------

## 檔案快取限制條件
<a name="workflows-caching.constraints"></a>

以下是 屬性名稱 和 的限制`RestoreKeys`條件：
+ 名稱在工作流程中必須是唯一的。
+ 名稱僅限於英數字元 (A-Z、a-z、0-9)、連字號 (-) 和底線 (\$1)。
+ 名稱最多可有 180 個字元。
+ 每個動作在 中最多可以有五個快取`FileCaching`。
+ 每個快取在 中最多可以有五個項目`RestoreKeys`。

以下是路徑的限制：
+ 不允許星號 (\$1)。
+ 路徑最多可有 255 個字元。