

# AWS Glue Python シェルジョブからの移行
<a name="pyshell-migration"></a>

 AWS は、小規模から中規模の ETL ジョブ用の Python スクリプトを実行し、SQL クエリをトリガーする簡単な方法をお客様に提供するために、2018 年に AWS Glue Python シェルジョブをリリースしました。ただし、PythonShell で現在実行されているワークロードに対応するための、より最新で柔軟なオプションが登場しました。このトピックでは、利用可能な新しい機能を活用するために、ワークロードを AWS Glue Python シェルジョブからこれらの代替オプションのいずれかに移行する方法について説明します。

## ワークロードの AWS Glue Spark ジョブへの移行
<a name="pyshell-migration-to-glue-spark-jobs"></a>

 [AWS Glue Spark ジョブと PySpark ジョブ](https://docs.aws.amazon.com/glue/latest/dg/spark_and_pyspark.html)を使用すると、ワークロードを分散して実行できます。AWS Glue Python Shell ジョブと AWS Glue Spark ジョブはどちらも同じプラットフォームで実行されるため、移行が容易で、AWS Glueワークフロー、AWS Glueトリガー、AWS Glueの Amazon EventBridge 統合、\\ PIP ベースのパッケージインストールなど、Python Shell ジョブで使用している既存の AWS Glue 機能を引き続き使用できます。

 ただし、AWS Glue Spark ジョブは Spark ワークロードを実行するように設計されており、ワーカーの最小数は 2 です。スクリプトを変更せずに Python Shell ジョブから移行する場合、実際に使用されるワーカーは 1 つだけで、他のワーカーはアイドル状態のままになります。これによりコストが増加します。

 効率化するには、Spark の機能を活用し、ワークロードを複数のワーカーに分散するように Python ジョブ スクリプトを書き直します。Python スクリプトが Pandas ベースの場合、Spark 上の新しい Pandas API を使用して簡単に移行できます。詳細については、「[AWS Big Data Blog: AWS Glue 4.0 for Apache Spark」をご覧ください](https://aws.amazon.com/blogs/big-data/dive-deep-into-aws-glue-4-0-for-apache-spark/)。

## AWS Lambda へのワークロードの移行
<a name="pyshell-migration-to-aws-lambda"></a>

 AWS Lambda はサーバーのプロビジョニングや管理をする必要がなく、コードを実行できるサーバーレスコンピューティングサービスです。AWS Lambda は起動時間を短縮し、コンピューティング容量の柔軟なオプションを提供するため、これらの利点を活用できます。追加の Python ライブラリを管理するために、 AWS Glue Python シェルジョブは PIP ベースのインストールを使用します。ただし、AWS Lambda では、zip アーカイブ、コンテナイメージ、または Lambda レイヤーのいずれかのオプションを選択する必要があります。

 一方、 AWS Lambda の最大タイムアウトは 900 秒 (15 分) です。既存の AWS Glue Python Shell ジョブワークロードのジョブ期間がそれ以上の場合、またはワークロードのパターンが急激でジョブ期間が長くなる可能性がある場合は、AWS Lambda の代わりに他のオプションを検討することをお勧めします。

## Amazon ECS/Fargate へのワークロードの移行
<a name="pyshell-migration-to-ecs-aws-fargate"></a>

 Amazon Elastic Container Service (Amazon ECS) は、コンテナ化されたアプリケーションのデプロイ、管理、スケーリングを簡素化するフルマネージドサービスです。 AWS Fargate は、Amazon ECS および Amazon Elastic Kubernetes Service (Amazon EKS) で実行されるコンテナ化されたワークロード用のサーバーレスコンピューティングエンジンです。Amazon ECS と Fargate には最大タイムアウトがないため、長時間実行されるジョブに適しています。コンテナイメージを完全に制御できるため、Python スクリプトと追加の Python ライブラリをコンテナに取り込み、使用できます。ただし、このアプローチを使用するには、Python スクリプトをコンテナ化する必要があります。

## Apache Airflow Python Operator の Amazon Managed Workflows へのワークロードの移行
<a name="pyshell-migration-to-amazon-mwaa-python-operator"></a>

 Amazon Managed Workflows for Apache Airflow (MWAA) は、Apache Airflow 向けのマネージドオーケストレーションサービスです。これにより、クラウド内のエンドツーエンドのデータパイプラインを大規模にセットアップして運用することが容易になります。MWAA 環境がすでにある場合は、AWS Glue Python シェルジョブの代わりに Python 演算子を使用するのが簡単です。Python 演算子は、Airflow ワークフロー内で Python コードを実行する演算子です。ただし、既存の MWAA 環境がない場合は、他のオプションを検討することをお勧めします。

## Amazon SageMaker AI AI トレーニングジョブへのワークロードの移行
<a name="pyshell-migration-to-amazon-sagemaker-ai"></a>

 Amazon SageMaker AI Training は、Amazon SageMaker AI が提供するフルマネージド機械学習 (ML) サービスであり、さまざまな ML モデルを大規模かつ効率的にトレーニングするのに役立ちます。Amazon SageMaker AI AIジョブの中核は、ML ワークロードのコンテナ化と AWS コンピューティングリソースを管理する機能です。最大タイムアウトがないサーバーレス環境を優先する場合、Amazon SageMaker AI AI トレーニングジョブが適している可能性があります。ただし、スタートアップレイテンシーは AWS Glue Python シェルジョブよりも長くなる傾向があります。レイテンシーの影響を受けやすいジョブの場合は、他のオプションを検討することをお勧めします。