

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

# EMR Notebooks 的程式設計命令範例
<a name="emr-managed-notebooks-headless"></a>

## 概觀
<a name="emr-managed-notebooks-headless-overview"></a>

可以從指令碼或命令列中使用執行 API 來執行 EMR 筆記本。當您在 AWS 主控台之外啟動、停止、列出和描述 EMR 筆記本執行時，您可以透過程式設計方式控制 EMR 筆記本。可以將不同的參數值傳遞至具有參數化筆記本儲存格的筆記本。這樣就不需要為每組新參數值建立筆記本複本。如需詳細資訊，請參閱 [Amazon EMR API 動作](https://docs.aws.amazon.com/emr/latest/APIReference/API_Operations.html)。

可以使用 Amazon CloudWatch Events 和 AWS Lambda來排程或批次處理 EMR 筆記本執行。如需詳細資訊，請參閱[搭配使用 AWS Lambda 與 Amazon CloudWatch Events](https://docs.aws.amazon.com/lambda/latest/dg/services-cloudwatchevents.html)。

**注意**  
EMR Notebooks 可在 主控台中做為 EMR Studio Workspaces 使用。主控台中的**建立工作區**按鈕可讓您建立新的筆記本。若要存取或建立工作區，EMR Notebooks 使用者需要其他 IAM 角色許可。如需詳細資訊，請參閱 [主控台中的 Amazon EMR Notebooks 是 Amazon EMR Studio Workspaces](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-managed-notebooks-migration.html) 和 [Amazon EMR 主控台](https://docs.aws.amazon.com/emr/latest/ManagementGuide/whats-new-in-console.html)。

## 程式化執行的角色許可
<a name="emr-managed-notebooks-headless-permissions"></a>

若要搭配使用程式化執行與 EMR Notebooks，必須使用下列政策來設定使用者許可：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowExecutionActions",
      "Effect": "Allow",
      "Action": [
        "elasticmapreduce:StartNotebookExecution",
        "elasticmapreduce:DescribeNotebookExecution",
        "elasticmapreduce:ListNotebookExecutions"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Sid": "AllowPassingServiceRole",
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::123456789012:role/EMR_Notebooks_DefaultRole"
      ]
    }
  ]
}
```

------

當您以程式設計方式在 EMR Notebooks 叢集上執行 EMR Notebooks 時，必須新增下列額外許可：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowRetrievingManagedEndpointCredentials",
      "Effect": "Allow",
      "Action": [
        "emr-containers:GetManagedEndpointSessionCredentials"
      ],
      "Resource": [
        "arn:aws:emr-containers:*:123456789012:/virtualclusters/virtual-cluster-id/endpoints/managed-endpoint-id"
      ],
      "Condition": {
        "StringEquals": {
          "emr-containers:ExecutionRoleArn": [
            "arn:aws:iam::123456789012:role/emr-on-eks-execution-role"
          ]
        }
      }
    },
    {
      "Sid": "AllowDescribingManagedEndpoint",
      "Effect": "Allow",
      "Action": [
        "emr-containers:DescribeManagedEndpoint"
      ],
      "Resource": [
        "arn:aws:emr-containers:*:123456789012:/virtualclusters/virtual-cluster-id/endpoints/managed-endpoint-id"
      ]
    }
  ]
}
```

------

## 程序化執行的限制
<a name="emr-managed-notebooks-headless-limit"></a>
+  AWS 區域 每個帳戶最多支援 100 個並行執行。
+ 如果執行運作超過 30 天，則會終止。
+ Amazon EMR Serverless 互動式應用程式不支援筆記本的程式化執行。

## 程式化 EMR 筆記本執行範例
<a name="emr-managed-notebooks-headless-examples"></a>

下列各節提供數個使用 AWS CLI、Boto3 SDK (Python) 和 Ruby 的程式設計 EMR 筆記本執行範例：
+ [EMR Studio 中的筆記本 CLI 命令範例](emr-managed-notebooks-headless-cli.md)
+ [EMR 筆記本的 Python 範例](emr-managed-notebooks-headless-python.md)
+ [EMR 筆記本的 Ruby 範例](emr-managed-notebooks-headless-ruby.md)

也可使用 Apache Airflow 或 Amazon Managed Workflows for Apache Airflow (MWAA) 等協同運作工具，將參數化筆記本作為排程工作流程的一部分執行。如需詳細資訊，請參閱「AWS 大數據部落格」中的[使用 MWAA 協同運作 EMR Notebooks 上的分析作業](https://aws.amazon.com/blogs/big-data/orchestrating-analytics-jobs-on-amazon-emr-notebooks-using-amazon-mwaa/)。**