Elastic Beanstalk Go プラットフォームを使用する - AWS Elastic Beanstalk

Elastic Beanstalk Go プラットフォームを使用する

重要

Amazon Linux 2 プラットフォームのバージョンは、Amazon Linux AMI プラットフォームのバージョン (前の Amazon Linux 2) とは根本的に異なります。これらの異なるプラットフォーム世代は、いくつかの点で互換性がありません。Amazon Linux 2 プラットフォームのバージョンに移行する場合は、「Elastic Beanstalk Linux アプリケーションを Amazon Linux 2 に移行する」の情報を必ずお読みください。

AWS Elastic Beanstalk を使用して、Go ベースのアプリケーションを実行、構築、設定することができます。シンプルな Go アプリケーションは、2 つの方法でデプロイすることができます。

  • アプリケーションのメインパッケージを含む application.go という名前のルートのソースファイルにソースバンドルを提供します。Elastic Beanstalk が次のコマンドを使用してバイナリを構築します。

    go build -o bin/application application.go

    アプリケーションの構築後、Elastic Beanstalk がポート 5000 でアプリケーションを開始します。

  • [application] という名前のバイナリファイルにソースバンドルを提供します。バイナリファイルは、ソースバンドルのルートまたはソースバンドルの bin/ ディレクトリにあります。application バイナリファイルを両方の場所に配置すると、Elastic Beanstalk は bin/ ディレクトリのファイルを使用します。

    Elastic Beanstalk は、ポート 5000 でこのアプリケーションを起動します。

どちらの場合も、Go 1.11 以降では、go.mod というファイルでモジュール要件を指定することもできます。詳細については、Go ブログの Migrating to Go Modules を参照してください。

より複雑な Go アプリケーションは、2 つの方法でデプロイすることができます。

  • アプリケーションのソースファイルを含むソースバンドルを、Buildfile および Procfile とともに設定します。Buildfile にはアプリケーションを構築するためのコマンドが含まれ、Procfile にはアプリケーションを実行するための指示が含まれます。

  • アプリケーションのバイナリファイルを含むソースバンドルを、Procfile とともに設定します。Procfile には、アプリケーションを実行するための指示が含まれます。

Go プラットフォームには、静的アセットを提供し、トラフィックをアプリケーションに転送するためのプロキシサーバーが含まれています。高度なシナリオでは、デフォルトのプロキシ設定を拡張また上書きできます。

注記

静的ファイルを提供するプロキシの設定は、Amazon Linux AMI プラットフォームのバージョン (前の Amazon Linux 2) でのみサポートされます。

Elastic Beanstalk Linux ベースのプラットフォームを拡張するさまざまな方法の詳細については、Elastic Beanstalk Linux プラットフォームの拡張 を参照してください。

Go 環境の設定

Go プラットフォーム設定では、Amazon EC2 インスタンスの動作を微調整できます。Elastic Beanstalk 環境の Amazon EC2 インスタンス設定を編集するには、Elastic Beanstalk コンソールを使用します。

Elastic Beanstalk コンソールを使用して、Amazon S3 へのログローテーションを有効にし、アプリケーションが環境から読むことができる変数を設定します。

Elastic Beanstalk コンソールで Go 環境を設定するには

  1. Elastic Beanstalk コンソールを開き、[リージョン] のリストで AWS リージョンを選択します。

  2. ナビゲーションペインで、[環境] を選択し、リストから環境の名前を選択します。

    注記

    環境が多数ある場合は、検索バーを使用して環境リストをフィルタリングします。

  3. ナビゲーションペインで、[設定] を選択します。

  4. [ソフトウェア] 設定カテゴリで、[編集] を選択します。

ログオプション

[Log Options (ログオプション)] セクションには、2 つの設定があります。

  • [Instance profile] – アプリケーションに関連付けられた Amazon S3 バケットへのアクセス許可が付与されているインスタンスプロファイルを指定します。

  • [Amazon S3 へのログファイルローテーションを有効にする] – アプリケーションの Amazon EC2 インスタンスのログファイルを、アプリケーションに関連付けられている Amazon S3 バケットにコピーするかどうかを指定します。

環境プロパティ

[Environment Properties] セクションでは、アプリケーションを実行している Amazon EC2 インスタンスの環境設定を指定できます。環境プロパティは、キーと値のペアでアプリケーションに渡されます。

Elastic Beanstalk で実行される Go 環境内では、os.Getenv 関数を使用して環境変数にアクセスできます。たとえば、次のコードを使用して変数に API_ENDPOINT という名前のプロパティを読み取ることができます。

endpoint := os.Getenv("API_ENDPOINT")

詳細については、「環境プロパティとその他のソフトウェアの設定」を参照してください。

Amazon Linux AMI (Amazon Linux 2 以前) の Go 環境の設定

次のコンソールソフトウェア設定カテゴリは、Amazon Linux AMI プラットフォームバージョン (Amazon Linux 2 以前) を使用する Elastic Beanstalk Go 環境でのみサポートされます。

パフォーマンスを向上させるには、ウェブアプリケーション内のディレクトリセットの静的ファイル (HTML、画像など) を処理するようにプロキシサーバーを設定できます。プロキシサーバーは、指定されたパスのファイルに対するリクエストを受け取ると、アプリケーションにリクエストをルーティングする代わりにファイルを直接処理します。仮想パスおよびディレクトリマッピングは、[ソフトウェアの変更] 設定ページの [静的ファイル] セクションで設定できます。

Elastic Beanstalk コンソールによる静的ファイルの設定の詳細については、「静的ファイルの提供」を参照してください。

Amazon Linux AMI (Amazon Linux 2 以前) の Go プラットフォーム

Elastic Beanstalk Go 環境で Amazon Linux AMI プラットフォームバージョン (Amazon Linux 2 以前) を使用している場合は、このセクションの追加情報をお読みください。

設定ファイルを使用して、設定オプションを設定し、デプロイの間、他のインスタンス設定タスクを実行できます。設定オプションは、Elastic Beanstalk サービスまたは使用できるプラットフォームで定義し、名前空間に整理できます。

Go プラットフォームは、すべてのプラットフォームでサポートされる名前空間の他に、プラットフォーム固有の設定の名前空間を 1 つサポートします。名前空間 aws:elasticbeanstalk:container:golang:staticfiles により、ウェブアプリケーションのパスを、静的コンテンツを含むアプリケーションソースバンドルのフォルダにマッピングするオプションを定義できます。

たとえば、この設定ファイルは、プロキシサーバーに myimages フォルダのファイルを、/images のパスで提供するように指示します。

例 .ebextensions/go-settings.config

option_settings: aws:elasticbeanstalk:container:golang:staticfiles: /html: statichtml /images: staticimages

Elastic Beanstalk には、環境をカスタマイズするための多数の設定オプションが用意されています。設定ファイルに加えて、コンソール、保存された設定、EB CLI、または AWS CLI を使用して、設定オプションを指定することもできます。詳細については、「設定オプション」を参照してください。