フォーム読み込み中
Alibaba Cloud Function Compute 製品は主流のプログラミング言語のランタイム環境を内蔵しています。各言語のランタイム環境はさらに複数バージョンが存在しますが、 Function Compute は全バージョンではなく、安定しているバージョンのいくつかを提供しています。例えば Python のランタイム環境の場合、現在はバージョン 2.7、3.6 及び 3.9 の中から指定可能です。提供バージョンで良ければ、別途用意する必要がありません。
しかし、利用したいランタイム環境のバージョンは Function Compute が提供していない場合や、カスタムランタイム環境を Function Compute で利用したいという要望もよく聞きます。その場合、Custom Container Function を利用することで実現可能です。Custom Container Function はカスタムイメージで実行する Function Compute を作成する方法です。今までの Custom Container Function は WebServer モードしか提供してないため、WebServer の構築が必要でしたが、最近非 WebServer モードがリリースされ、WebServer の構築が省けるようになりました。WebServer モードと非 WebServer モードの違いは下記ドキュメントもご参考ください。
https://www.alibabacloud.com/help/en/function-compute/latest/custom-container-overview
早速 Custom Container Function の非 WebServer モードで、標準で提供されていない Python3.8 ランタイムを使って利用するやり方を検証してみたので、詳細を紹介していきたいと思います。
今回の検証では、GitHub、Alibaba Cloud Container Registry と Function Compute を組み合わせて利用します。最初に、GitHub でカスタムランタイム環境を定義するソースコードを作成します。次に、そのソースコードを利用して Alibaba Cloud Container Registry でイメージをビルドします。最後に、Custom Container Function でそのイメージをデプロイし、出力を確認します。
カスタムランタイム環境を定義するソースコードは下記2つで構成されます。
・Dockerfile
・test.py
Dockerfile はイメージの環境構成を示し、今回は Function Compute に提供していない Python3.8 を指定しています。test.py は今回の実行対象で、Python ランタイムのバージョンを出力します。出力結果により、Custom Container Function の動作状況、及びカスタムランタイムが Python3.8 になっているかどうかを確認可能です。
Alibaba Cloud Container Registry はイメージをビルド・管理できますが、イメージをビルドするためのソースコードを保管できなく、外部プラットフォームを利用する必要があります。今回の検証は GitHub を利用します。
1-1.「GitHub.com」にログインします。アカウントを持ってない場合は、新規登録が必要です。
1-2. 「New」をクリックして、新しいリポジトリを作成します。
1-3.「Repository Name:python3.8」を入力し、「Create repository」をクリックします。
1-4.「Create a new file」をクリックし、新規ファイルを作成します。
1-5.「File Name:Dockerfile」を入力し、下記内容をファイルに保存します。
FROM python:3.8 COPY test.py test.py CMD python test.py |
1-6.手順1-4、1-5を繰り返して、下記内容で「File Name:test.py」も作成します。
#! /usr/bin/env python import os os.system("python --version") |
Custom Container Function は外部レジストリをサポートしておらず、AlibabaCloud Container Registry に保存するイメージのみ指定可能なため、AlibabaCloud Container Registry を作成します。
2-1.Container Registry パーソナルエディションを有効化します。有効化手順は、下記ブログ記事もご参照ください。
https://www.softbank.jp/biz/blog/cloud-technology/articles/202212/acr/
2-2. 「Bind account」をクリックして、手順1-1で利用する「GitHubアカウント」をContainer Registyにバインドします。
2-3.「Create Namespace」をクリックし、任意の Namespace を入力後に、「Confirm」をクリックします。
2-4.「Create Repository」をクリックし、下記情報を入力後に、「Next」をクリックします。
Namespace:2-3で作成したNamespace
Repository Name:任意入力
Repository Type:Public
Summary:任意入力
2-5.手順2-2 でバインドした GitHub のリポジトリを選択し、「Create Repository」をクリックします。
2-6.「Add Build Rule」をクリックし、下記情報を入力後に、「Confirm」をクリックします。
Type:Branch
Code Branch/Tag:main
Build Context Directory:/
Dockerfile Filename:Dockerfile
Tags:任意入力
2-7.「Build」をクリックし、GitHub からソースコードを自動的に取得してイメージをビルドします。
2-8.イメージのサイズによりビルドに時間かかる場合があります。ビルド完了後に、「image」メニューから確認できます。
イメージを用意できましたので、Custom Container Function にデプロイします。
3-1.「Create Service」をクリックし、下記情報を入力後に、「OK」をクリックします。
Name:任意入力
Logging:Enable
3-2.「Create Function」をクリックします。
3-3.「Basic Settings」に下記情報を入力します。
Select a method to create the function:Use Container Image
Function Name:任意入力
Web Server Mode:No
Request Type:Event Requests
3-4.「Image Configurations」に下記情報を入力し、「Create」をクリックします。
Image Selection Mode:Use ARC Images
Container Image:手順2-8でビルドしたイメージ
3-5.Function Compute を作成完了後に「Test Fucntion」をクリックします。
3-6.Container Repository から Function Compute にイメージの初回ダウンロードが行われ、約1分〜5分かかります。
3-7.ダウンロード完了後に実行が開始され、下記出力結果を確認します。
・Python 3.8.12
3-8.出力結果から test.py が正常に実行されたこと、及びカスタムランタイムが Python3.8 であることを確認できます。
今回は、Custom Container Function の新機能非 WebServer モードを利用した、カスタムランタイムのデプロイ検証をやってみました。Custom Container Function を利用することでカスタムランタイムを指定可能になり、さらに新機能である非 WebServer モードの嬉しい点は、WebServer 構成でないイメージも利用可能になりました。もし Function Compute で提供してないランタイム環境を利用したい場合、ぜひ本記事を参考にしてみてください。
条件に該当するページがございません