教程:作为具有持久状态的应用程序进行部署 - Managed Service for Apache Flink
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Amazon Managed Service for Apache Flink 之前称为 Amazon Kinesis Data Analytics for Apache Flink。

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

教程:作为具有持久状态的应用程序进行部署

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

设置

使用 Kinesis Data Streams 或 Amazon MSK 按照创建 Studio 笔记本教程操作创建新的 Studio 笔记本。为 Studio 笔记本命名ExampleTestDeploy

使用Amazon Web Services Management Console部署具有持久状态的应用程序

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

  2. 向应用程序角色添加所需的权限,以启用您用于读取和写入 Amazon S3 存储桶的角色,以及启动Managed Service for Apache Flink应用程序:

    • AmazonS3FullAccess

    • Amazonmanaged-flinkFullAccess

    • 访问您的来源、目标和 VPC(如果适用)。有关更多信息,请参阅Studio 笔记本的 IAM 权限

  3. 使用下面的示例代码:

    %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
  4. 启动此功能后,您将在笔记本中每张笔记的右上角看到一个新的下拉列表,上面写着笔记本的名称。您可执行以下操作:

    • 在中查看 Studio 笔记本的设置Amazon Web Services Management Console。

    • 制作您的 Zeppelin Note 并将其导出到 Amazon S3。此时,请为您的应用程序提供一个名称,然后选择 “生成并导出”。导出完成后,您将收到通知。

    • 如果需要,您可以在 Amazon S3 中查看和运行对可执行文件的任何其他测试。

    • 构建完成后,您将能够将代码部署为具有持久状态和自动扩展功能的 Kinesis 流媒体应用程序。

    • 使用下拉列表并选择将 Zeppelin Note 部署为 Kinesis 流式应用程序。查看应用程序名称并选择通过Amazon控制台部署

    • 这将引导您进入创建 Managed Service for Apache Flink 应用程序的Amazon Web Services Management Console页面。请注意,应用程序名称、并行度、代码位置、默认 Glue DB、VPC(如果适用)和 IAM 角色已预先填充。验证 IAM 角色是否具有访问您的源和目标所需的权限。默认情况下,快照处于启用状态,以实现持久的应用程序状态管理。

    • 选择创建应用程序

    • 您可以选择配置和修改任何设置,然后选择运行以启动您的流媒体应用程序。

使用Amazon CLI部署具有持久状态的应用程序

要使用部署应用程序Amazon CLI,您必须更新Amazon CLI以使用与 Beta 2 信息一起提供的服务模型。有关如何使用更新的服务模型的信息,请参阅设置

以下示例代码将创建一个新的 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