

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

# 使用 API 建立用於時間序列預測的 AutoML 任務
<a name="autopilot-create-experiment-timeseries-forecasting"></a>

機器學習的預測是指根據歷史資料與模式預測未來結果或趨勢的過程。透過分析過去的時間序列資料並識別基礎模式，機器學習演算法可以做出預測，並為未來行為提供有價值的洞察。在預測中，目標是開發能夠隨時間精確擷取輸入變數與目標變數之間關係的模型。這涉及檢查各種因素，例如趨勢、季節性及資料的其他相關模式。然後，收集的資訊會用來訓練機器學習模型。經過訓練的模型能夠透過取得新的輸入資料並應用學習到的模式與關係來產生預測。它可以為各種使用案例提供預測，例如銷售預測、股票市場趨勢、天氣預報、需求預測等等。

下列指示說明如何使用 SageMaker [API Reference](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-reference.html) 建立 Amazon SageMaker Autopilot 任務，做為時間序列預測問題類型的試驗。

**注意**  
文字和影像分類、時間序列預測以及大型語言模型的微調等任務，僅能透過 [AutoML REST API](autopilot-reference.md) 第 2 版獨家取得。如果您選擇的語言是 Python，您可以直接參考 [適用於 Python (Boto3) 的 AWS SDK](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker/client/create_auto_ml_job_v2.html) 或 Amazon SageMaker Python SDK 的 [AutoMLV2 物件](https://sagemaker.readthedocs.io/en/stable/api/training/automlv2.html#sagemaker.automl.automlv2.AutoMLV2)。  
偏好使用者介面便利性的使用者，可以使用 [Amazon SageMaker Canvas](https://docs.aws.amazon.com/sagemaker/latest/dg/canvas-getting-started.html) 存取預先訓練的模型、生成式 AI 基礎模型，或建立針對特定文字、影像分類、預測需求或生成式 AI 量身打造的自訂模型。

您可以透過以 Amazon SageMaker Autopilot 或 AWS CLI支援的任何語言呼叫 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html) API，以程式設計方式建立 Autopilot 時間序列預測實驗。

有關此 API 作業如何以您選擇的語言轉換為函式的詳細資訊，請參閱 `CreateAutoMLJobV2` 的[另請參閱](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#API_CreateAutoMLJobV2_SeeAlso)一節並選擇 SDK。例如，對於 Python 使用者，請參閱 適用於 Python (Boto3) 的 AWS SDK中 `[create\_auto\_ml\_job\_v2](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_auto_ml_job_v2)` 的完整請求語法。

Autopilot 會使用您的目標時間序列來訓練多個模型候選模型，然後為指定的目標指標選擇最佳預測模型。當您的候選模型經過訓練後，您可以在 `[BestCandidate](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CandidateProperties.html#sagemaker-Type-CandidateProperties-CandidateMetrics)` 的 `[DescribeAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJobV2.html)` 反應中找到最佳候選指標。

下列各節會針對用於時間序列預測的 `CreateAutoMLJobV2` API，定義必要與選擇性的輸入請求參數。

**注意**  
請參閱筆記本 [Amazon SageMaker Autopilot 進行時間序列預測](https://github.com/aws/amazon-sagemaker-examples/blob/main/autopilot/autopilot_time_series.ipynb)，以取得實用的實作時間序列預測範例。在此筆記本，您可以使用 Amazon SageMaker Autopilot 訓練時間序列模型並使用經過訓練的模型產生預測。筆記本提供如何在 Amazon S3 擷取現成的表格歷史資料集的指示。

## 先決條件
<a name="autopilot-timeseries-forecasting-prerequisites"></a>

使用 Autopilot 在 SageMaker AI 建立時間序列預測實驗之前，請務必：
+ 準備您的時間序列資料集。資料集準備包括從各種來源收集相關資料，對其進行清理清理和過濾以消除雜訊與不一致性，並將其組織成結構化格式。請參閱 [時間序列資料集格式與遺失值填入方法](timeseries-forecasting-data-format.md) 以深入了解 Autopilot 的時間序列格式要求。或者，您可以使用您選擇的國家/地區的公共假日行事曆來補充資料集，以擷取相關的模式。如需假日行事曆的詳細資訊，請參閱[國定假日行事曆](autopilot-timeseries-forecasting-holiday-calendars.md)。
**注意**  
建議您為要預測的每個未來 1 個資料點提供至少 3-5 個歷史資料點。例如，若要根據每日資料預測 7 天 (1 週期間)，請訓練您的模型至少 21-35 天的歷史資料。請務必提供足夠的資料來擷取季節性和週期性模式。
+ 將您的時間序列資料放入 Amazon S3 儲存貯體。
+ 授予對 Amazon S3 儲存貯體的完整存取權，該儲存貯體包含用於執行實驗的 SageMaker AI 執行角色的輸入資料。完成此操作後，您可以透過 Autopilot API 請求使用此執行角色的 ARN。
  + 如需有關擷取 SageMaker AI 執行角色的資訊，請參閱[取得您的執行角色](sagemaker-roles.md#sagemaker-roles-get-execution-role)。
  + 如需授予 SageMaker AI 執行角色存取 Amazon S3 中一或多個特定儲存貯體的相關資訊，請參閱[建立執行角色](sagemaker-roles.md#sagemaker-roles-create-execution-role)中的*新增額外的 Amazon S3 權限給 SageMaker AI 執行角色*。

## 必要參數
<a name="timeseries-forecasting-api-required-params"></a>

當呼叫 `[CreateAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html)` 建立用於時間序列預測的 Autopilot 實驗時，您必須提供下列值：
+ 用於指定任務的名稱的 `[AutoMLJobName](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#API_CreateAutoMLJobV2_RequestSyntax)`。名稱應為 `string` 類型，最小長度為 1 個位元，最大長度為 32 位元。
+ `[AutoMLJobInputDataConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#sagemaker-CreateAutoMLJobV2-request-AutoMLJobInputDataConfig)` 中至少有一個 `[AutoMLJobChannel](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLJobChannel.html)`，其中您指定包含您的資料的 Amazon S3 儲存貯體的名稱。或者，您可以指定內容 (CSV 或 Parquet 檔案) 和壓縮 (GZip) 類型。
+ 類型為 `[TimeSeriesForecastingJobConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TimeSeriesForecastingJobConfig.html)` 的 `[AutoMLProblemTypeConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#sagemaker-CreateAutoMLJobV2-request-AutoMLProblemTypeConfig)`，用於設定時間序列預測作業的設置。尤其是，您必須指定：
  + 預測的**頻率**，指的是預測所需的精細程度 (每小時、每日、每月等等)。

    有效間隔為整數，後跟 `Y` (年)、`M` (月)、`W` (週)、`D` (天)、`H` (小時) 與 `min` (分鐘)。例如，`1D` 表示每天，`15min` 表示每隔 15 分鐘。頻率的值不得與下一個較大頻率重疊使用。例如，您必須使用的頻率 `1H` 而不是 `60min`。

    每個頻率的有效值如下：
    + 分鐘–1-59
    + 小時–1-23
    + 天–1-6
    + 週–1-4
    + 月–1-11
    + 年–1
  + 預測中預測的**總時程**，指的是模型預測的時間步長數。預測期間也稱為預測長度。預測總時程上限是資料集中 500 個時間步長或 1/4 的較小者。
  + [TimeSeriesConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TimeSeriesConfig.html)，您可以在其中定義資料集的結構描述，藉由指定下欄位項目，將欄位標題對應至預測：
    + `TargetAttributeName`：包含要預測之目標欄位歷史資料的欄位。
    + `TimestampAttributeName`：包含記錄指定項目的目標值的時間點的欄位。
    + `ItemIdentifierAttributeName`：包含您要預測其目標值之項目識別碼的資料欄位。

  下列是這些請求參數的範例。在此範例中，您要設定 20 天內特定項目的預期需求數量或需求程度的每日預測。

  ```
  "AutoMLProblemTypeConfig": { 
          "ForecastFrequency": "D",
          "ForecastHorizon": 20,
          "TimeSeriesConfig": {
              "TargetAttributeName": "demand",
              "TimestampAttributeName": "timestamp",
              "ItemIdentifierAttributeName": "item_id"
          },
  ```
+ `[OutputDataConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLOutputDataConfig.html)` 指定用於存放 AutoML 任務成品的 Amazon S3 輸出路徑。
+ `[RoleArn](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJob.html#sagemaker-CreateAutoMLJob-request-RoleArn)` 指定用於存取您的資料的角色的 ARN。您可以透過已授予資料存取權限的執行角色的 ARN。

所有其他參數都是選用參數。例如，您可以設定特定的預測分位數、為資料集中缺少的值選擇填入方法，或定義如何彙總不符合預測頻率的資料。若要了解如何設定這些其他參數，請參閱[選用的參數](#timeseries-forecasting-api-optional-params)。

## 選用的參數
<a name="timeseries-forecasting-api-optional-params"></a>

下列各節提供了一些可傳遞給時間序列預測 AutoML 任務的可選參數的詳細資訊。

### 如何指定演算法
<a name="timeseries-forecasting-algorithms-selection"></a>

預設情況下，您的 Autopilot 任務會在資料集上訓練預先定義的演算法清單。不過，您可以提供預設演算法選取的子集。

對於時間序列預測，您必須選擇 `[TimeSeriesForecastingJobConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TimeSeriesForecastingJobConfig.html)` 作為 `[AutoMLProblemTypeConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#sagemaker-CreateAutoMLJobV2-request-AutoMLProblemTypeConfig)` 的類型。

然後，您可以在 [CandidateGenerationConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CandidateGenerationConfig.html) 的 `AlgorithmsConfig` 屬性指定選定的 `AutoMLAlgorithms` 陣列。

以下是在其 `AutoMLAlgorithms` 欄位中僅列出三個演算法 `AlgorithmsConfig` ("cnn-qr"、"prophet"、"arima") 的屬性範例。

```
{
   "[AutoMLProblemTypeConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#sagemaker-CreateAutoMLJobV2-request-AutoMLProblemTypeConfig)": {
        "[TimeSeriesForecastingJobConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TimeSeriesForecastingJobConfig.html)": {
          "[CandidateGenerationConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CandidateGenerationConfig.html)": {
            "[AlgorithmsConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CandidateGenerationConfig.html#sagemaker-Type-CandidateGenerationConfig-AlgorithmsConfig)":[
               {"[AutoMLAlgorithms](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLAlgorithmConfig.html)":["cnn-qr", "prophet", "arima"]}
            ]
         },
       },
     },
  }
```

如需時間序列預測的可用演算法清單，請參閱 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLAlgorithmConfig.html#sagemaker-Type-AutoMLAlgorithmConfig-AutoMLAlgorithms](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLAlgorithmConfig.html#sagemaker-Type-AutoMLAlgorithmConfig-AutoMLAlgorithms)。如需每個演算法的詳細資訊，請參閱[演算法支援時間序列預測](timeseries-forecasting-algorithms.md)。

### 如何指定自訂分位數
<a name="timeseries-forecasting-custom-quantiles"></a>

Autopilot 使用您的目標時間序列訓練 6 個候選模型，然後使用堆疊整合方法組合這些模型，為指定的目標指標建立最佳預測模型。每個 Autopilot 預測模型都會透過在 P1 和 P99 之間的分位數產生預測來產生機率預測。這些分位數用於解釋預測的不確定性。依預設，會針對 0.1 (`p10`)、0.5 (`p50`) 與 0.9 (`p90`) 產生預測。您可以選擇指定自己的分位數。

在 Autopilot 中，您可以在 [TimeSeriesForecastingJobConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TimeSeriesForecastingJobConfig.html) 的 `ForecastQuantiles` 屬性指定最多 5 個從 0.01 (`p1`) 到 0.99 (`p99`) 的預測分位數，增量為 0.01 或更高。

在下列範例中，您將針對特定項目在 20 天內的預期數量或需求程度設定每日第 10、25、50、75 及第 90 個百分位數預測。

```
"AutoMLProblemTypeConfig": { 
        "ForecastFrequency": "D",
        "ForecastHorizon": 20,
        "ForecastQuantiles": ["p10", "p25", "p50", "p75", "p90"],
        "TimeSeriesConfig": {
            "TargetAttributeName": "demand",
            "TimestampAttributeName": "timestamp",
            "ItemIdentifierAttributeName": "item_id"
        },
```

### 如何彙總不同預測頻率的資料
<a name="timeseries-forecasting-aggregation"></a>

若要建立預測模型 (也稱為實驗中的最佳模型候選模型)，您必須指定預測頻率。預測頻率決定預測中預測的頻率。例如，每月銷售預測。Autopilot 的最佳模型可以針對高於資料記錄頻率的資料頻率產生預測。

在訓練期間，Autopilot 會彙總任何與您指定的預測頻率不符的任何資料。例如，您可能有一些每日資料，但指定每週預測頻率。Autopilot 會根據每日資料所屬的週來調整每日資料。然後，Autopilot 將其合併為每週的單一記錄。

在彙總期間，預設的轉換方法是將資料加總。您可以在建立 AutoML 任務時在 [TimeSeriesForecastingJobConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TimeSeriesForecastingJobConfig.html) 的 `Transformations` 屬性設定彙總。支援的彙總方法為 `sum` (預設)、`avg`、`first`、`min`、`max`。僅目標資料欄支援彙總。

在下列範例中，您將彙總設定為計算個別促銷預測的平均值，以提供最終的彙總預測值。

```
"Transformations": {
            "Aggregation": {
                "promo": "avg"
            }
        }
```

### 如何處理輸入資料集中的遺失值
<a name="timeseries-forecasting-fill-missing-values"></a>

Autopilot 提供了多種填入方法來處理時間序欄資料集的目標與其他數字欄位缺少的值。如需支援的填入方法清單及其可用填入邏輯的資訊，請參閱[處理遺失值](timeseries-forecasting-data-format.md#timeseries-missing-values)。

建立 AutoML 任務時，您可以在 [TimeSeriesForecastingJobConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TimeSeriesForecastingJobConfig.html) 的 `Transformations` 屬性設定填入策略。

設定填入方式，需要提供機碼值組：
+ 機碼是您要為其指定填入方法之欄位的名稱。
+ 與機碼相關聯的值是定義該欄位填入策略的物件。

您可以為單一欄位指定多種填入方法。

若要為填入方法設定特定值，您應該將填入參數設定為所需的填入方法值 (例如 `"backfill" : "value"`)，並在後綴為 “\_value” 的其他參數定義實際填入值。例如，若要設定 `backfill` 為的值 `2`，您必須包含兩個參數：`"backfill": "value"` 與 `"backfill_value":"2"`。

在下欄範例中，您為不完整資料欄 “價格” 指定填入策略，如下所示：項目第一個資料點與最後一個資料點之間的所有遺失值都會設定為 `0`，之後所有遺失值均使用該值填入 `2` 直到資料集的結束日期。

```
"Transformations": {
            "Filling": {
                "price": {
                        "middlefill" : "zero",
                        "backfill" : "value",
                        "backfill_value": "2"
                }
            }
        }
```

### 如何指定目標指標
<a name="timeseries-forecasting-set-objective-metric"></a>

Autopilot 會產生準確度指標來評估候選模型，並協助您選擇要使用哪個模型來產生預測。當您執行時間序列預測實驗時，您可以選擇 AutoML 讓 Autopilot 為您最佳化預測器，也可以手動選擇預測器的演算法。

根據預設，Autopilot 使用 Average Weighted Quantile Loss (平均加權分位數損失)。但是，您可以在建立 AutoML 任務時在 [AutoMLJobObjective](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLJobObjective.html) 的 `MetricName` 屬性設定目標指標。

如需可用演算法的清單，請參閱[演算法支援時間序列預測](timeseries-forecasting-algorithms.md)。

### 如何將國定假日資訊納入您的資料集
<a name="timeseries-forecasting-add-holiday-calendar"></a>

在 Autopilot，您可以將特徵設計的國家假日資訊資料集合到您的時間序列中。Autopilot 為 250 多個國家/地區的假日行事曆提供本地支援。選擇國家/地區後，Autopilot 會在訓練期間，將該國家/地區的假日行事曆套用至您的資料集的每個項目。這可讓模型識別與特定假日相關聯的模式。

您可以在建立 AutoML 任務時，透過將 [HolidayConfigAttributes](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HolidayConfigAttributes.html) 物件傳遞至 [TimeSeriesForecastingJobConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TimeSeriesForecastingJobConfig.html) 的 `HolidayConfig` 屬性，來啟用假日特徵化。`HolidayConfigAttributes` 物件包含兩個字母 `CountryCode` 屬性，該屬性決定用於擴充時間序列資料集的公共國定假日行事曆的國家/地區。

如需支援的行事曆清單及其對應的國家/地區代碼，請參閱[國家/地區代碼](autopilot-timeseries-forecasting-holiday-calendars.md#holiday-country-codes)。

### 如何啟用自動部署
<a name="timeseries-forecasting-auto-model-deployment"></a>

Autopilot 功能可讓您將預測模型自動部署到端點。若要針對 AutoML 任務的最佳模型候選項啟用自動部署，請在 AutoML 任務請求中包含 `[ModelDeployConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#sagemaker-CreateAutoMLJobV2-request-ModelDeployConfig)`。這可讓您將最佳模型部署到 SageMaker AI 端點。以下是可用的自訂組態。
+ 若要讓 Autopilot 產生端點名稱，請將 `[AutoGenerateEndpointName](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelDeployConfig.html#API_ModelDeployConfig_Contents)` 設定為 `True`。
+ 若要為端點提供您自己的名稱，請設定 `[AutoGenerateEndpointName](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelDeployConfig.html#API_ModelDeployConfig_Contents) to False and provide a name of your choice in [EndpointName](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelDeployConfig.html#API_ModelDeployConfig_Contents)`。

### 如何設定 AutoML 在大型資料集的 EMR Serverless 上啟動遠端任務
<a name="autopilot-set-emr-serverless-api-forecasting"></a>

您可以設定 AutoML 任務 V2，以便在需要額外的運算資源來處理大型資料集時，在 Amazon EMR Serverless 上自動啟動遠端任務。透過在需要時無縫轉換為 EMR Serverless，AutoML 任務可以處理原本會超過最初佈建資源的資料集，而無需您進行任何手動介入。EMR Serverless 適用於表格式和時間序列問題類型。我們建議為大於 30 GB 的時間序列資料集設定此選項。

若要允許 AutoML 任務 V2 自動轉換為適用於大型資料集的 EMR Serverless，您需要將包含 `ExecutionRoleARN` 欄位的 `EmrServerlessComputeConfig` 物件提供給 AutoML 任務 V2 輸入請求的 `AutoMLComputeConfig`。

`ExecutionRoleARN` 是 IAM 角色的 ARN，授予 AutoML 任務 V2 執行 EMR Serverless 任務所需的許可。

此角色應具有下列信任關係：

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "emr-serverless.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

------

並授予許可給：
+ 建立、列出和更新 EMR Serverless 應用程式。
+ 在 EMR Serverless 應用程式上啟動、列出、取得或取消任務執行。
+ 標記 EMR Serverless 資源。
+ 將 IAM 角色傳遞至 EMR Serverless 服務以進行執行。

  透過授予 `iam:PassRole` 許可，AutoML 任務 V2 可以暫時擔任該 `EMRServerlessRuntimeRole-*` 角色並將其傳遞給 EMR Serverless 服務。這些是 EMR Serverless 任務執行環境用來存取執行時間所需 AWS 其他服務和資源的 IAM 角色，例如 Amazon S3 用於資料存取、CloudWatch 用於記錄、存取 AWS Glue 資料目錄或根據您的工作負載需求的其他 服務。

  如需此角色許可的詳細資訊，請參閱 [Amazon EMR Serverless 的任務執行時期角色](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/security-iam-runtime-role.html)。

所提供 JSON 文件中定義的 IAM 政策會授予這些許可：

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
           "Sid": "EMRServerlessCreateApplicationOperation",
           "Effect": "Allow",
           "Action": "emr-serverless:CreateApplication",
           "Resource": "arn:aws:emr-serverless:*:*:/*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestTag/sagemaker:is-canvas-resource": "True",
                    "aws:ResourceAccount": "${aws:PrincipalAccount}"
                }
            }
        },
        {
            "Sid": "EMRServerlessListApplicationOperation",
            "Effect": "Allow",
            "Action": "emr-serverless:ListApplications",
            "Resource": "arn:aws:emr-serverless:*:*:/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceAccount": "${aws:PrincipalAccount}"
                }
            }
        },
        {
            "Sid": "EMRServerlessApplicationOperations",
            "Effect": "Allow",
            "Action": [
                "emr-serverless:UpdateApplication",
                "emr-serverless:GetApplication"
            ],
            "Resource": "arn:aws:emr-serverless:*:*:/applications/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/sagemaker:is-canvas-resource": "True",
                    "aws:ResourceAccount": "${aws:PrincipalAccount}"
                }
            }
        },
        {
            "Sid": "EMRServerlessStartJobRunOperation",
            "Effect": "Allow",
            "Action": "emr-serverless:StartJobRun",
            "Resource": "arn:aws:emr-serverless:*:*:/applications/*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestTag/sagemaker:is-canvas-resource": "True",
                    "aws:ResourceAccount": "${aws:PrincipalAccount}"
                }
            }
        },
        {
            "Sid": "EMRServerlessListJobRunOperation",
            "Effect": "Allow",
            "Action": "emr-serverless:ListJobRuns",
            "Resource": "arn:aws:emr-serverless:*:*:/applications/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/sagemaker:is-canvas-resource": "True",
                    "aws:ResourceAccount": "${aws:PrincipalAccount}"
                }
            }
        },
        {
            "Sid": "EMRServerlessJobRunOperations",
            "Effect": "Allow",
            "Action": [
                "emr-serverless:GetJobRun",
                "emr-serverless:CancelJobRun"
            ],
            "Resource": "arn:aws:emr-serverless:*:*:/applications/*/jobruns/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/sagemaker:is-canvas-resource": "True",
                    "aws:ResourceAccount": "${aws:PrincipalAccount}"
                }
            }
        },
        {
            "Sid": "EMRServerlessTagResourceOperation",
            "Effect": "Allow",
            "Action": "emr-serverless:TagResource",
            "Resource": "arn:aws:emr-serverless:*:*:/*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestTag/sagemaker:is-canvas-resource": "True",
                    "aws:ResourceAccount": "${aws:PrincipalAccount}"
                }
            }
        },
        {
            "Sid": "IAMPassOperationForEMRServerless",
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iam::*:role/EMRServerlessRuntimeRole-*",
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "emr-serverless.amazonaws.com",
                    "aws:ResourceAccount": "${aws:PrincipalAccount}"
                }
            }
         }
    ]
}
```

------