

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Elastic Beanstalk Go プラットフォームを使用する
<a name="go-environment"></a>

このトピックでは、Elastic Beanstalk で Go アプリケーションを設定、ビルド、実行する方法について説明します。

AWS Elastic Beanstalk は、Go プログラミング言語のさまざまなバージョンで多数のプラットフォームブランチをサポートしています。完全なリストについては、「AWS Elastic Beanstalk プラットフォーム」ドキュメントの「[Go](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.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 プラットフォームブランチでは、`go.mod` というファイルでモジュール要件を指定することもできます。詳細については、Go ブログの [Migrating to Go Modules](https://blog.golang.org/migrating-to-go-modules) を参照してください。

より複雑な Go アプリケーションは、2 つの方法でアプリケーションをデプロイすることができます。
+ アプリケーションの出典ファイルを含む出典バンドルを、[Buildfile](go-buildfile.md) および [Procfile](go-procfile.md) とともに設定します。Buildfile にはアプリケーションを構築するためのコマンドが含まれ、Procfile にはアプリケーションを実行するための指示が含まれます。
+ アプリケーションのバイナリファイルを含む出典バンドルを、Procfile とともに設定します。Procfile には、アプリケーションを実行するための指示が含まれます。

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

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

## Go 環境の設定
<a name="go-options"></a>

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

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

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

1. [Elastic Beanstalk コンソール](https://console.aws.amazon.com/elasticbeanstalk)を開き、**リージョン**リストで を選択します AWS リージョン。

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

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

1. **[更新、モニタリング、ログ]** の設定カテゴリで、**[編集]** を選択します。

### ログオプション
<a name="go-options-logs"></a>

[Log Options (ログオプション)] セクションには、2 つの設定があります。
+ **インスタンスプロファイル** – アプリケーションに関連付けられた Amazon S3 バケットへのアクセス許可が付与されているインスタンスプロファイルを指定します。
+ **[Enable log file rotation to Amazon S3]** (Amazon S3 へのログファイルのローテーションの有効化) - アプリケーションの Amazon EC2 インスタンスのログファイルを、アプリケーションに関連付けられている Amazon S3 バケットにコピーするかどうかを指定します。

### 静的ファイル
<a name="go-options-staticfiles"></a>

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

設定ファイルまたは、Elastic Beanstalk コンソールを使用した静的ファイルの設定の詳細については、「[静的ファイルの提供](environment-cfg-staticfiles.md)」を参照してください。

### 環境プロパティ
<a name="go-options-properties"></a>

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

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

```
endpoint := os.Getenv("API_ENDPOINT")
```

詳細については、「[環境変数とその他のソフトウェアの設定](environments-cfg-softwaresettings.md)」を参照してください。

## Go 設定の名前空間
<a name="go-namespaces"></a>

[設定ファイル](ebextensions.md)を使用して、設定オプションを設定し、デプロイの間、他のインスタンス設定タスクをパフォーマンスできます。設定オプションは、[プラットフォーム固有](command-options-specific.md)のものでも、Elastic Beanstalk サービス全体の[すべてのプラットフォーム](command-options-general.md)に適用できるものでもかまいません。設定オプションは、名前空間として整理されています。

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

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

## Amazon Linux AMI (Amazon Linux 2 より前の) Go プラットフォーム
<a name="go.alami"></a>

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

**注意事項**  
このトピックの情報は、Amazon Linux AMI (AL1) に基づくプラットフォームブランチにのみ適用されます。AL2023/AL2 プラットフォームブランチでは、以前の Amazon Linux AMI (AL1) プラットフォームバージョンと互換性がなく、*別の構成設定が必要です*。
 [2022 年 7 月 18 日](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-07-18-linux-al1-retire.html)に、Elastic Beanstalk では Amazon Linux AMI (AL1) に基づくプラットフォームブランチのステータスがすべて**廃止**に設定されました。現在および完全にサポートされている Amazon Linux 2023 プラットフォームブランチへの移行の詳細については、「[Elastic Beanstalk Linux アプリケーションを Amazon Linux 2023 または Amazon Linux 2 に移行する](using-features.migration-al.md)」を参照してください。

### Go Configuration ネームスペース — Amazon Linux AMI (AL1)
<a name="go.alami.namespaces"></a>

[設定ファイル](ebextensions.md)を使用して、設定オプションを設定し、デプロイの間、他のインスタンス設定タスクをパフォーマンスできます。設定オプションは、[プラットフォーム固有](command-options-specific.md)のものでも、Elastic Beanstalk サービス全体の[すべてのプラットフォーム](command-options-general.md)に適用できるものでもかまいません。設定オプションは、名前空間として整理されています。

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

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

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

**Example .ebextensions/go-settings.config**  

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

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