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

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 1.11 以降では、go.mod というファイルでモジュール要件を指定することもできます。詳細については、Go ブログの Migrating to Go Modules を参照してください。

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

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

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

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

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

Go 環境の設定

Go プラットフォーム設定では、Amazon EC2 インスタンスの動作をうまくチューニングできます。Elastic Beanstalk コンソールを使用して、Elastic Beanstalk 環境の Amazon EC2 インスタンス設定を編集できます。

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

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

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

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

    注記

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

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

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

ログオプション

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

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

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

静的ファイル

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

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

環境プロパティ

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

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

endpoint := os.Getenv("API_ENDPOINT")

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

Go 設定の名前空間

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

Go プラットフォームは、プラットフォーム固有の名前空間を定義しません。aws:elasticbeanstalk:environment:proxy:staticfiles 名前空間を使用して、静的ファイルを配信するようにプロキシを設定できます。詳細と例については、「静的ファイルの提供」を参照してください。

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

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

メモ
  • このトピックの情報は、Amazon Linux AMI (AL1) に基づくプラットフォームブランチにのみ適用されます。Amazon Linux 2 プラットフォームのブランチでは、以前の Amazon Linux AMI (AL1) プラットフォームバージョンと互換性がなく、別の構成設定が必要です。

  • 2022 年 7 月 18 日、Elastic Beanstalk では Amazon Linux AMI (AL1) に基づくプラットフォームブランチのステータスがすべてリタイアされます。現在および完全にサポートされている Amazon Linux 2 プラットフォームブランチへの移行の詳細については、「Elastic Beanstalk Linux アプリケーションを Amazon Linux 2 に移行する」を参照してください。

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

注記

このトピックの情報は、Amazon Linux AMI (AL1) に基づくプラットフォームブランチにのみ適用されます。Amazon Linux 2 プラットフォームのブランチでは、以前の Amazon Linux AMI (AL1) プラットフォームバージョンと互換性がなく、別の構成設定が必要です。

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

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

例 .ebextensions/go-settings.config

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

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