AWS Elastic Beanstalk
開発者ガイド

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

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 アプリケーションは、2 つの方法でデプロイすることができます。

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

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

実行順序

アプリケーションソースバンドルに複数のタイプの構成を含めると、次の順序で実行されます。各手順は、直前の手順が完了するまで開始されません。

  • ステップ 1: 設定ファイルで定義された commandsfiles、および packages

  • ステップ 2: Buildfile コマンド

  • ステップ 3: 設定ファイルの container_commands

  • 手順 4: [Procfile] コマンド(すべてのコマンドは同時に実行されます)

設定ファイルで 、commandsfilespackages、および container_commands を使用する手順の詳細については、「Linux サーバーでのソフトウェアのカスタマイズ」を参照してください。

Go 環境の設定

Elastic Beanstalk Go プラットフォームには、すべてのプラットフォームに用意されている標準オプションに加えて、プラットフォーム固有のオプションがいくつかあります。これらのオプションにより、アプリケーションの前面で実行される nginx プロキシを設定して、静的ファイルを処理することができます。

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

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

  1. Elastic Beanstalk コンソール を開きます。

  2. お客様の環境の管理ページに移動します。

  3. [Configuration] を選択します。

  4. [ソフトウェア] 設定カードで、[変更] を選択します。

ログオプション

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

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

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

静的ファイル

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

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

環境プロパティ

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

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

endpoint := os.Getenv("API_ENDPOINT")

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

Go 設定の名前空間

設定ファイル を使用して、設定オプションを設定し、デプロイの間、他のインスタンス設定タスクを実行できます。 設定オプションは、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 を使用して、設定オプションを指定することもできます。詳細については、「設定オプション」を参照してください。

このページの内容: