

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Managed Service for Apache Flink での Java の例
<a name="examples-new-java"></a>

次の例では、Java で記述したアプリケーションを作成する方法について説明します。



**注記**  
ほとんどの例は、ローカル、開発マシン、選択した IDE、Amazon Managed Service for Apache Flink の両方で実行されるように設計されています。これらは、アプリケーションパラメータを渡すために使用できるメカニズムと、両方の環境でアプリケーションを変更せずに実行するために依存関係を正しく設定する方法を示しています。

## カスタムの TypeInfo を定義するシリアル化パフォーマンスの向上
<a name="improving-serialization-performance-java"></a>

この例は、レコードまたは状態オブジェクトでカスタム TypeInfo を定義して、シリアル化が効率の低い Kryo シリアル化にフォールバックしないようにする方法を示します。これは、オブジェクトに `List` または `Map` が含まれている場合などに必要です。詳細については、Apache Flink ドキュメントの「[Data Types & Serialization](https://nightlies.apache.org/flink/flink-docs-release-1.20/docs/dev/datastream/fault-tolerance/serialization/types_serialization/#data-types--serialization)」を参照してください。この例では、オブジェクトのシリアル化が効率の低い Kryo シリアル化にフォールバックするかどうかをテストする方法も示しています。

コード例: [CustomTypeInfo](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/java/Serialization/CustomTypeInfo)

## DataStream API の使用を開始する
<a name="getting-started-datastream-java"></a>

この例は、`DataStream` API を使用して Kinesis データストリームから読み取り、別の Kinesis データストリームに書き込むシンプルなアプリケーションを示しています。この例では、正しい依存関係でファイルをセットアップし、uber-JAR をビルドして設定パラメータを解析する方法を示しています。これにより、アプリケーションをローカル、IDE、Amazon Managed Service for Apache Flink の両方で実行できます。

コード例: [GettingStarted](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/java/GettingStarted)

## Table API と SQL の使用を開始する
<a name="getting-started-table-java"></a>

この例は、`Table` API と SQL を使用したシンプルなアプリケーションを示しています。同じ Java アプリケーションで `DataStream` API を `Table` API または SQL と統合する方法を示します。また、`DataGen` コネクタを使用して、外部データジェネレーターを必要とせずに、Flink アプリケーション自体の中でランダムなテストデータを生成する方法も示します。

完全な例: [GettingStartedTable](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/java/GettingStartedTable)

## S3Sink を使用する (DataStream API)
<a name="s3-sink-java"></a>

この例は、`DataStream` API の `FileSink` を使用して S3 バケットに JSON ファイルを書き込む方法を示します。

コード例: [S3Sink](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/java/S3Sink)

## Kinesis ソース、標準または EFO コンシューマー、シンクを使用する (DataStream API)
<a name="kinesis-EFO-sink-java"></a>

この例は、標準コンシューマーまたは EFO のいずれかを使用して Kinesis データストリームから消費するソースを設定する方法と、Kinesis データストリームへのシンクを設定する方法を示します。

コード例: [KinesisConnectors](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/java/KinesisConnectors)

## Amazon Data Firehose シンクを使用する (DataStream API)
<a name="firehose-sink-java"></a>

この例は、Amazon Data Firehose (旧称 Kinesis Data Firehose) にデータを送信する方法を示します。

コード例: [KinesisFirehoseSink](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/java/KinesisFirehoseSink)

## Prometheus シンクコネクタを使用する
<a name="prometheus-sink-java"></a>

この例は、[Prometheus シンクコネクタ](https://nightlies.apache.org/flink/flink-docs-release-1.20/docs/connectors/datastream/prometheus/)を使用して時系列データを Prometheus に書き込む方法を示します。

コード例: [PrometheusSink](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/java/PrometheusSink)

## ウィンドウイング集約を使用する (DataStream API)
<a name="windowing-aggregations-java"></a>

この例は、`DataStream` API の 4 タイプのウィンドウイング集約を示しています。

1. 処理時間に基づくスライディングウィンドウ

1. イベント時間に基づくスライディングウィンドウ

1. 処理時間に基づくタンブリングウィンドウ

1. イベント時間に基づくタンブリングウィンドウ

コード例: [Windowing](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/java/Windowing) 

## カスタムメトリクスを使用する
<a name="custom-metrics-java"></a>

この例は、Flink アプリケーションにカスタムメトリクスを追加して CloudWatch メトリクスに送信する方法を示します。

コード例: [CustomMetrics](https://github.com/dzikosc/amazon-managed-service-for-apache-flink-examples/tree/main/java/CustomMetrics)

## Kafka 設定プロバイダーを使用して、ランタイム中に mTLS のカスタムキーストアとトラストストアを取得する
<a name="kafka-keystore-mTLS"></a>

この例は、Kafka 設定プロバイダーを使用して、Kafka コネクタの mTLS 認証用の証明書を持つカスタムキーストアとトラストストアを設定する方法を示します。この手法により、Amazon S3 から必要なカスタム証明書をロードし、アプリケーションの起動 AWS Secrets Manager 時に からシークレットをロードできます。

コード例: [Kafka-mTLS-Keystore-ConfigProviders](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/java/KafkaConfigProviders/Kafka-mTLS-Keystore-ConfigProviders)

## Kafka 設定プロバイダーを使用して、ランタイム中に SASL/SCRAM 認証のシークレットを取得する
<a name="kafka-secrets"></a>

この例では、Kafka 設定プロバイダーを使用して Amazon S3 から認証情報を取得し AWS Secrets Manager 、信頼ストアをダウンロードして、Kafka コネクタで SASL/SCRAM 認証を設定する方法を示します。 Amazon S3 この手法により、Amazon S3 から必要なカスタム証明書をロードし、アプリケーションの起動 AWS Secrets Manager 時に からシークレットをロードできます。

コード例: [Kafka-SASL\$1SSL-ConfigProviders](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/java/KafkaConfigProviders/Kafka-SASL_SSL-ConfigProviders)

## Table API/SQL で Kafka 設定プロバイダーを使用して、ランタイム中に mTLS のカスタムキーストアとトラストストアを取得する
<a name="kafka-custom-keystore"></a>

この例は、Table API/SQL で Kafka 設定プロバイダーを使用して、Kafka コネクタの mTLS 認証用の証明書を持つカスタムキーストアとトラストストアを設定する方法を示します。この手法により、Amazon S3 から必要なカスタム証明書をロードし、アプリケーションの起動 AWS Secrets Manager 時に からシークレットをロードできます。

コード例: [Kafka-mTLS-Keystore-Sql-ConfigProviders](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/java/KafkaConfigProviders/Kafka-mTLS-Keystore-Sql-ConfigProviders)

## サイド出力を使用してストリームを分割する
<a name="side-output"></a>

この例は、Apache Flink の[サイド出力](https://nightlies.apache.org/flink/flink-docs-master/docs/dev/datastream/side_output/)を活用して、指定された属性でストリームを分割する方法を示します。このパターンは、ストリーミングアプリケーションでデッドレターキュー (DLQ) の概念を実装しようとする場合に特に役立ちます。

コード例: [SideOutputs](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/java/SideOutputs)

## 非同期 I/O を使用して外部エンドポイントを呼び出す
<a name="async-i-o"></a>

この例は、[Apache Flink 非同期 I/O](https://nightlies.apache.org/flink/flink-docs-release-1.20/docs/dev/datastream/operators/asyncio/) を使用して外部エンドポイントをノンブロッキング方式で呼び出し、復元可能なエラーを再試行する方法を示します。

コード例: [AsyncIO](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/java/AsyncIO)