

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

# 教學課程：將 Studio 筆記本部署為具有持久狀態的 Managed Service for Apache Flink 應用程式
<a name="example-notebook-deploy"></a>

下列教學課程示範如何將 Studio 筆記本部署為具有持久狀態的 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>

按照[教學課程：在 Managed Service for Apache Flink 中建立 Studio 筆記本](example-notebook.md)建立新的 Studio 筆記本，使用 Kinesis Data Streams 或 Amazon MSK。命名 Studio 筆記本 `ExampleTestDeploy`。

## 使用 部署具有持久狀態的應用程式 AWS 管理主控台
<a name="example-notebook-deploy-console"></a>

1. 在主控台中的**應用程式程式碼位置 - *選用***下，新增您希望將封裝程式碼存放到的 S3 儲存貯體位置。這可讓步驟直接從筆記本部署和執行應用程式。

1. 將必要的許可新增至應用程式角色，以啟用您要用來讀取和寫入 Amazon S3 儲存貯體以及啟動 Managed Service for Apache Flink 應用程式的角色：
   + AmazonS3FullAccess
   + Amazonmanaged-flinkFullAccess
   + 視情況存取您的來源、目的地和 VPC。如需詳細資訊，請參閱[檢閱 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. 啟動此功能後，您將在筆記本中每條筆記的右上角看到一個新的下拉式選單，其中包含筆記本的名稱。您可以執行下列動作：
   + 在 AWS 管理主控台中檢視 Studio 筆記本設定。
   + 建立 Zeppelin 筆記，並將其匯出至 Amazon S3。此時，請為您的應用程式提供名稱，然後選擇**建置和匯出**。匯出完成後，您會收到通知。
   + 如有需要，您可以在 Amazon S3 中的可執行檔上檢視和執行任何其他測試。
   + 建置完成後，您將能夠將程式碼部署為具有持久狀態和自動調度資源的 Kinesis 串流應用程式。
   + 使用下拉式選單並選擇**將 Zeppelin 筆記部署為 Kinesis 串流應用程式**。檢閱應用程式名稱，然後選擇**透過 AWS 主控台部署**。
   + 這將引導您前往建立 Managed Service for 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
```