Go は静的にコンパイルされる言語であり、Function Compute 内でコードを直接編集することはできません。アプリケーションをローカルでコンパイルし、.zip ファイルにパッケージ化する必要があります。このトピックでは、アプリケーションを Function Compute とともに .zip ファイルにパッケージ化し、Function Compute にアップロードする方法について説明します。
前提条件
Go 開発環境をインストールします。Function Compute は Go 1.x をサポートしています。Go 1.8 以降のバージョンを使用してください。
Linux または macOS でのコンパイルとパッケージ化
Go 用の FC SDK をダウンロードします。
go get github.com/aliyun/fc-runtime-go-sdk/fcmain.goなどのコードファイルを作成します。そのディレクトリで、次のコマンドを実行してバイナリファイルをビルドします。GOOS=linux go build main.go説明main.goはファイル名の例です。実際のファイル名に置き換えてください。ビルド後、ソースファイルと同じ名前のバイナリファイルが現在のディレクトリに生成されます。
GOOS=linux環境変数を設定します。これにより、コンパイルされたバイナリが Linux ベースの Function Compute ランタイムと互換性を持つようになります。このステップは、Linux 以外のオペレーティングシステムでコンパイルする場合に非常に重要です。補足事項:
Linux では、
CGO_ENABLED=0を設定して静的リンクバイナリを作成します。これにより、バイナリファイルにlibcライブラリなどの外部依存関係がなくなり、ビルド環境と Go ランタイム間の互換性の問題を防ぐことができます。例:GOOS=linux CGO_ENABLED=0 go build main.goM1 チップを搭載した Mac などの ARM ベースのマシンでコンパイルする場合は、
GOARCH=amd64を設定して、FC で使用される x86-64 アーキテクチャ用にクロスコンパイルします。例:GOOS=linux GOARCH=amd64 go build main.go
前のステップで生成されたバイナリファイルを zip 圧縮します。
zip fc-golang-demo.zip main
Windows でのコンパイルとパッケージ化
main.goなどのコードファイルを作成し、次の手順に従ってバイナリファイルをビルドします。Win+R キーを押して、[ファイル名を指定して実行] ダイアログボックスを開きます。
cmd と入力して Enter キーを押し、コマンドプロンプトを開きます。次に、次のコマンドを実行します。
set GOOS=linux set GOARCH=amd64 go build -o main main.go説明main.goはファイル名の例です。実際のファイル名に置き換えてください。ビルド後、ソースファイルと同じ名前のバイナリファイルが現在のディレクトリに生成されます。
build-fc-zip ツールを使用して、前のステップで生成されたバイナリファイルをパッケージ化します。
go install コマンドで build-fc-zip ツールをインストールします。
set GOOS=windows set GOARCH=amd64 go install github.com/aliyun/fc-runtime-go-sdk/cmd/build-fc-zip@latestgo install コマンドは通常、ツールを %USERPROFILE%\go\bin ディレクトリにインストールします。
プロジェクトのルートディレクトリで、次のコマンドを実行してコードをパッケージ化します。
%USERPROFILE%\go\bin\build-fc-zip.exe -output main.zip main
関数の作成とハンドラの設定
イベントトリガー関数を作成します。ランタイム環境 で [Go 1] を選択します。
コードパッケージをアップロードし、関数のハンドラを設定します。詳細については、「イベント関数の作成」をご参照ください。
Go はコンパイル型言語です。ローカルでコードをコンパイルし、実行可能バイナリファイルを ZIP パッケージとしてアップロードする必要があります。Function Compute コンソールのハンドラー構成では、Go FC 関数のハンドラーを直接
[filename]に設定する必要があります。このファイル名は、コンパイル済みバイナリファイルの名前です。関数が呼び出されると、Function Compute プラットフォームはこのバイナリファイルを直接実行します。バイナリファイルが .zip パッケージのルートディレクトリにある場合、FC の ハンドラー を
mainに設定します。
バイナリファイルが bin/ などのサブディレクトリにある場合、ハンドラー を
bin/mainなどの相対パスに設定します。