ArcGIS API for Python は、少ないコード数で ArcGIS Online や ArcGIS Enterprise の運用管理やデータ分析が可能となる、使いやすい API です。ただし、利用する環境に関しては ArcGIS Pro を利用してインストールしたり、Python 環境でコマンドを発行してインストールしたりします。
上記のインストールでも ArcGIS API for Python の実行環境は用意できますが、OS を含む Python 実行環境も同時に必要になってきます。 ここでは、クラウド環境上でサーバーレスのサービスを利用して ArcGIS API for Python を実行する環境の構築を行ってみます。
※今回ご紹介する方法は、国内未サポートになりますのでご了承ください。
- GitHub よりサンプルコードをダウンロード
- Terraform の実行環境作成
- Terraform などの実行
GitHub よりサンプルコードをダウンロード
GitHub のサイトより ArcGIS API for Python の AWS Lambda 実行サンプルをダウンロードしてください。GitHub のサイトより [Download ZIP] を押下して Zip 形式でダウンロードするか、GitHub コマンドが利用できる環境があれば以下のコマンドでダウンロードできます。
git clone https://github.com/ejics/arcgis-python-lambda/
Terraform の実行環境作成
Terraform は LaC ツールの一種でインフラ構成をソースコードで管理できるものです。HashiCorp 社が提供しています。インストール方法は HashiCorp 社のサイトを参照してください。Amazon Linux 環境の場合は以下のコマンドを実行してインストールできます。
$ sudo yum install -y yum-utils
$ sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/AmazonLinux/hashicorp.repo
$ sudo yum -y install terraform
また、Python のパッケージ管理システムとして pip もインストールしておきます。
OS が Windows の場合は、Python の公式ウェブサイト https://www.python.org/ にアクセスします。ページ上部にある [Downloads] メニューから [Windows] を選択してください。インストーラーをダウンロードしてインストールできます。Linux 環境の場合は以下のコマンドを実行してください。
$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
$ python get-pip.py
また、AWS CLI もTerraformの実行時に必要ですので AWS のヘルプページを参考にインストールしてください。
Terraform などの実行
ダウンロードしたサンプルコードの「src/arcgis-sample.py」にてお手持ちの ArcGIS 環境とアカウントを設定してみてください。
gis = GIS("https://https://www.arcgis.com", "[username]", "[password]")
次にダウンロードしたサンプルコードのディレクトリに入り以下のコマンドを実行してください。
$ terraform init
$ ./build-lambda.sh
$ terraform apply
AWS 東京リージョンの Lambda 環境に arcgis-python-api-sample 関数が作成されます。Lambda 関数のテストを実行すると AWS Lambda 上で ArcGIS API for Python が実行され、設定した ArcGIS 環境にログインされたことがログより確認できます。
サンプルコードには 2024 年 12 月現在の ArcGIS API for Python のログインに必要な依存ライブラリが定義されています (requiments.txt)。また、src/arcgis-sample.py を拡張して処理を追加していくと依存ライブラリも増えていく可能性があります。ご自身のやりたいことに対してコードなどを拡張してみてください。
このように、AWS Lambda 環境上でも ArcGIS API for Python の実行環境を実現できます。クラウド上のサーバーレスな環境上で ArcGIS API for Python を利用することで、余計なインフラの運用管理を省き、最低限のコード管理に集中することができます。
補足
AWS Lamdba のタイムアウトの上限は 900 秒 (15分) です。それ以上の処理を見込む場合は、今回紹介した方法の利用は避けてください。 また、build-lambda.sh にて ArcGIS API for Python の依存パッケージをダウンロードさせています。すべての依存パッケージをダウンロードしますと AWS Lambda 環境へのアップロードに失敗する可能性がありますので、ここでは最低限の依存パッケージのみをダウンロードさせております。