# 内部 Application Load Balancers デフォルトでは、 Load Balanced Web Service 用に作成された Environment 内の ALB は [インターネットからアクセス可能](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-internet-facing-load-balancers.html)です。プライベート IP アドレスのみを利用する[内部ロードバランサー](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-internal-load-balancers.html)を作るためには、Environment と Workload に幾つかの設定が必要です。 ## Environment 内部ロードバランサーは Environment レベルのリソースであり、他の許可された Service 間で共有されます。ロードバランサーの HTTPS を有効にするには、既存の証明書の ARN をインポートするように [Environment Manifest](../manifest/environment.ja.md#http-private) を変更します。 ロードバランサーに証明書が適用されていない場合、Copilot はロードバランサーを `http://{env name}.{app name}.internal` エンドポイントに関連付け、個々の Service は `http://{service name}.{env name}.{app name}.internal` で到達可能な状態にします。 ```go // To reach the "api" service behind the internal load balancer endpoint := fmt.Sprintf("http://api.%s.%s.internal", os.Getenv("COPILOT_ENVIRONMENT_NAME"), os.Getenv("COPILOT_APPLICATION_NAME")) resp, err := http.Get(endpoint) ``` ## Service 内部ロードバランサーの背後に設置できる唯一の Service タイプは [Backend Service](../concepts/services.ja.md#backend-service) です。Service をデプロイした Environment で ALB を作成する様に Copilot に指示をする為に、`http` フィールドを Backend Service ワークロードの Manifest に追加してください。 ```yaml # in copilot/{service name}/manifest.yml http: path: '/' network: vpc: placement: private ``` ## 高度な設定 ### サブネット配置 内部 ALB を配置するプライベートサブネットを正確に指定できます。 `copilot env init` を実行する時に、[`--internal-alb-subnets`](../commands/env-init.ja.md#what-are-the-flags) フラグを利用し、ALB を配置したいサブネットの ID を指定します。 ### エイリアス、ヘルスチェックなど Backend Service で利用する `http` フィールドには、 Load Balanced Web Services の `http` フィールドで利用する全てのサブフィールドと機能があります。 ``` yaml http: path: '/' healthcheck: path: '/_healthcheck' port: 8080 success_codes: '200,301' healthy_threshold: 3 unhealthy_threshold: 2 interval: 15s timeout: 10s grace_period: 45s deregistration_delay: 5s stickiness: false allowed_source_ips: ["10.24.34.0/23"] alias: example.com ``` `alias` では、1. 既存のプライベートホストゾーンを持ち込むか、2. デプロイ後に Copilot とは別に独自のエイリアスレコードを追加できます。1 つのエイリアスを追加する場合: ```yaml http: alias: example.com hosted_zone: HostedZoneID1 ``` または、ホストゾーンを共有する複数のエイリアスの場合: ```yaml http: alias: ["example.com", "www.example.com"] hosted_zone: HostedZoneID1 ``` または、複数のエイリアスがあり、そのうちの幾つかは、トップレベルのホストゾーンを使う場合: ```yaml http: hosted_zone: HostedZoneID1 alias: - name: example.com - name: www.example.com - name: something-different.com hosted_zone: HostedZoneID2 ```