

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# EMR Notebooks 的示例编程命令
<a name="emr-managed-notebooks-headless"></a>

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

您可以通过脚本或命令行执行 APIs 来执行 EMR 笔记本。当您在 AWS 控制台之外启动、停止、列出和描述 EMR 笔记本执行时，您可以通过编程方式控制 EMR 笔记本。您可以将不同的参数值传递给带参数化 Notebook 单元格的 Notebook。这样就不必为每组新参数值创建 Notebook 副本。有关更多信息，请参阅 [Amazon EMR API actions](https://docs.aws.amazon.com/emr/latest/APIReference/API_Operations.html)。

您可以通过Amazon CloudWatch 事件安排或批量执行EMR笔记本和. AWS Lambda有关更多信息，请参阅[AWS Lambda 与 Amazon CloudWatch 活动配合使用](https://docs.aws.amazon.com/lambda/latest/dg/services-cloudwatchevents.html)。

**注意**  
EMR Notebooks 在控制台中作为 Amazon EMR Studio Workspaces 提供。通过控制台中的**创建 Workspace** 按钮，可以创建新的 Notebooks。要访问或创建 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 交互式应用程序不支持以编程方式执行 Notebooks 电脑实例。

## 编程 EMR Notebook 执行示例
<a name="emr-managed-notebooks-headless-examples"></a>

以下各节提供了使用 AWS CLI、Boto3 SDK (Python) 和 Ruby 以编程方式执行 EMR 笔记本的几个示例：
+ [EMR Studio 中的 Notebook CLI 命令示例](emr-managed-notebooks-headless-cli.md)
+ [EMR Notebook 的 Python 示例](emr-managed-notebooks-headless-python.md)
+ [EMR Notebook 的 Ruby 示例](emr-managed-notebooks-headless-ruby.md)

您还可以使用编排工具 [例如 Apache Airflow 或 Amazon Managed Workflows for Apache Airflow（MWAA）]，将参数化 Notebooks 作为计划工作流的一部分运行。有关更多信息，请参阅AWS 大数据博客中的 [Orchestrating analytics jobs on EMR Notebooks using MWAA](https://aws.amazon.com/blogs/big-data/orchestrating-analytics-jobs-on-amazon-emr-notebooks-using-amazon-mwaa/)。**