

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

# 教程：将 Studio 笔记本部署为具有持久状态的 Managed Service for Apache Flink 应用程序。
<a name="example-notebook-deploy"></a>

以下教程演示了如何将 Studio Notebook 部署为具有持久状态的 Managed Service for Apache Flink 应用程序。

**Topics**
+ [满足先决条件](#example-notebook-durable-setup)
+ [使用部署具有持久状态的应用程序 AWS 管理控制台](#example-notebook-deploy-console)
+ [使用部署具有持久状态的应用程序 AWS CLI](#example-notebook-deploy-cli)

## 满足先决条件
<a name="example-notebook-durable-setup"></a>

使用 Kinesis Data Streams 或 Amazon MSK 按照[教程：在 Managed Service for Apache Flink 中创建 Studio 笔记本](example-notebook.md)操作创建新的 Studio 笔记本。为 Studio 笔记本命名`ExampleTestDeploy`。

## 使用部署具有持久状态的应用程序 AWS 管理控制台
<a name="example-notebook-deploy-console"></a>

1. 在 “**应用程序代码位置”（控制台中为*可选*）**下添加要存储打包代码的 S3 存储桶位置。这样就可以直接从笔记本部署和运行应用程序的步骤。

1. 向应用程序角色添加所需的权限，以启用您用于读取和写入 Amazon S3 存储桶的角色，以及启动Managed Service for Apache Flink应用程序：
   + 亚马逊 3 FullAccess
   + 亚马逊托管-flinkFullAccess
   + 访问您的来源、目的地 VPCs 以及（如果适用）。有关更多信息，请参阅 [审核 Studio 笔记本的 IAM 权限](how-zeppelin-iam.md)。

1. 使用下面的示例代码：

   ```
   %flink.ssql(type=update) 
   CREATE TABLE exampleoutput (
     'ticket' VARCHAR,
     'price' DOUBLE
   )
   WITH (
     'connector' = 'kinesis',
     'stream' = 'ExampleOutputStream',
     'aws.region' = 'us-east-1',
     'scan.stream.initpos' = 'LATEST',
     'format' = 'json'
   );
   
   INSERT INTO exampleoutput SELECT ticker, price FROM exampleinputstream
   ```

1. 启动此功能后，您将在笔记本中每张笔记的右上角看到一个新的下拉列表，上面写着笔记本的名称。您可执行以下操作：
   + 在中查看 Studio 笔记本的设置 AWS 管理控制台。
   + 制作您的 Zeppelin Note 并将其导出到 Amazon S3。此时，请为您的应用程序提供一个名称，然后选择 “**生成并导出**”。导出完成后，您将收到通知。
   + 如果需要，您可以在 Amazon S3 中查看和运行对可执行文件的任何其他测试。
   + 构建完成后，您将能够将代码部署为具有持久状态和自动扩展功能的 Kinesis 流媒体应用程序。
   + 使用下拉列表并选择**将 Zeppelin Note 部署为 Kinesis 流式应用程序**。查看应用程序名称并选择**通过 AWS 控制台部署**。
   + 这将引导您进入为 Apache Flink 应用程序创建托管服务的 AWS 管理控制台 页面。请注意，应用程序名称、并行度、代码位置、默认 Glue DB、VPC（如果适用）和 IAM 角色已预先填充。验证 IAM 角色是否具有访问您的源和目标所需的权限。默认情况下，快照处于启用状态，以实现持久的应用程序状态管理。
   + 选择**创建应用程序**。
   + 您可以选择**配置**和修改任何设置，然后选择**运行**以启动您的流媒体应用程序。

## 使用部署具有持久状态的应用程序 AWS CLI
<a name="example-notebook-deploy-cli"></a>

要使用部署应用程序 AWS CLI，您必须更新 AWS CLI 以使用与 Beta 2 信息一起提供的服务模型。有关如何使用更新的服务模型的信息，请参阅[完成 先决条件满足先决条件](example-notebook.md#example-notebook-setup)。

以下示例代码将创建一个新的 Studio 笔记本：

```
aws kinesisanalyticsv2 create-application \
     --application-name <app-name> \
     --runtime-environment ZEPPELIN-FLINK-3_0 \
     --application-mode INTERACTIVE \
     --service-execution-role <iam-role>
     --application-configuration '{ 
       "ZeppelinApplicationConfiguration": { 
         "CatalogConfiguration": { 
           "GlueDataCatalogConfiguration": { 
             "DatabaseARN": "arn:aws:glue:us-east-1:<account>:database/<glue-database-name>" 
           } 
         } 
       },
       "FlinkApplicationConfiguration": {
         "ParallelismConfiguration": {
           "ConfigurationType": "CUSTOM",
           "Parallelism": 4,
           "ParallelismPerKPU": 4
         }
       },
       "DeployAsApplicationConfiguration": {
            "S3ContentLocation": { 
               "BucketARN": "arn:aws:s3:::<s3bucket>",
               "BasePath": "/something/"
            }
        },
       "VpcConfigurations": [
         {
           "SecurityGroupIds": [
             "<security-group>"
           ],
           "SubnetIds": [
             "<subnet-1>",
             "<subnet-2>"
           ]
         }
       ]
     }' \
     --region us-east-1
```

以下代码示例将启动一个新的 Studio 笔记本：

```
aws kinesisanalyticsv2 start-application \
    --application-name <app-name> \
    --region us-east-1 \
    --no-verify-ssl
```

以下代码返回应用程序的 Apache Zeppelin 笔记本页面的 URL：

```
aws kinesisanalyticsv2 create-application-presigned-url \
    --application-name <app-name> \
    --url-type ZEPPELIN_UI_URL \

    --region us-east-1 \
    --no-verify-ssl
```