Request-Driven Web Service
以下は 'Request-Driven Web Service'
Manifest で利用できるすべてのプロパティのリストです。Copilot Service の概念説明のページも合わせてご覧ください。
frontend Service のサンプル Manifest
# Service 名はロググループや App Runner サービスなどのリソースの命名に利用されます。
name: frontend
type: Request-Driven Web Service
http:
healthcheck:
path: '/_healthcheck'
healthy_threshold: 3
unhealthy_threshold: 5
interval: 10s
timeout: 5s
alias: web.example.com
# コンテナと Service の構成
image:
build: ./frontend/Dockerfile
port: 80
cpu: 1024
memory: 2048
network:
vpc:
placement: 'private'
variables:
LOG_LEVEL: info
tags:
owner: frontend-team
environments:
test:
LOG_LEVEL: debug
name
String
Service の名前。
type
String
Service のアーキテクチャタイプ。 Load Balanced Web Service は、AWS App Runner にデプロイされる、インターネットに公開するための Service です。
http
Map
http セクションは、マネージドロードバランサの連携に関するパラメーターを含みます。
http.healthcheck
String or Map
文字列を指定した場合、Copilot は、ターゲットグループからのヘルスチェックリクエストを処理するためにコンテナが公開しているパスと解釈します。デフォルトは "/" です。
http:
healthcheck: '/'
http:
healthcheck:
path: '/'
healthy_threshold: 3
unhealthy_threshold: 2
interval: 15s
timeout: 10s
http.healthcheck.path
String
ヘルスチェック送信先。
http.healthcheck.healthy_threshold
Integer
unhealthy なターゲットを healthy とみなすために必要な、連続したヘルスチェックの成功回数を指定します。デフォルト値は 3 で、設定可能な範囲は、1 〜 20 です。
http.healthcheck.unhealthy_threshold
Integer
ターゲットが unhealthy であると判断するまでに必要な、連続したヘルスチェックの失敗回数を指定します。デフォルト値は 3 で、設定可能な範囲は、1 〜 20 です。
http.healthcheck.interval
Duration
個々のターゲットへのヘルスチェックを行う際の、おおよその間隔を秒単位で指定します。デフォルト値は 5 秒で、設定可能な範囲は、1 〜 20 です。
http.healthcheck.timeout
Duration
ターゲットからの応答がない場合、ヘルスチェックが失敗したとみなすまでの時間を秒単位で指定します。デフォルト値は 2 秒で、設定可能な範囲は、1 〜 20 です。
http.alias
String
Request-Driven Web Service にフレンドリーなドメイン名を割り当てます。詳しくは developing/domain をご覧ください。
image
Map
image セクションは、Docker ビルドに関する設定や公開するポートについてのパラメータを含みます。
image.build
String or Map
このフィールドに String(文字列)を指定した場合、Copilot はそれを Dockerfile の場所を示すパスと解釈します。その際、指定したパスのディレクトリ部が Docker のビルドコンテキストであると仮定します。以下は build フィールドに文字列を指定する例です。
image:
build: path/to/dockerfile
$ docker build --file path/to/dockerfile path/to
build フィールドには Map も利用できます。
image:
build:
dockerfile: path/to/dockerfile
context: context/dir
target: build-stage
cache_from:
- image:tag
args:
key: value
$ docker build --file path/to/dockerfile --target build-stage --cache-from image:tag --build-arg key=value context/dir
.
Copilot はあなたの意図を理解するために最善を尽くしますので、記述する情報の省略も可能です。例えば、context
は指定しているが dockerfile
は未指定の場合、Copilot は Dockerfile が "Dockerfile" という名前で存在すると仮定しつつ、docker コマンドを context
ディレクトリ以下で実行します。逆に dockerfile
は指定しているが context
が未指定の場合は、Copilot はあなたが dockerfile
で指定されたディレクトリをビルドコンテキストディレクトリとして利用したいのだと仮定します。
すべてのパスはワークスペースのルートディレクトリからの相対パスと解釈されます。
image.location
String
Dockerfile からコンテナイメージをビルドする代わりに、既存のコンテナイメージ名の指定も可能です。image.build
との同時利用はできません。
Note
現時点では Amazon ECR Public に格納されたコンテナイメージが利用可能です。
image.port
Integer
公開するポート番号。Dockerfile 内に EXPOSE
インストラクションが記述されている場合、Copilot はそれをパースした値をここに挿入します。
cpu
Integer
Service のインスタンスに割り当てる CPU ユニット数。指定可能な値については AWS App Runner ドキュメントをご覧ください。
memory
Integer
タスクに割り当てるメモリ量(MiB)。指定可能な値については AWS App Runner ドキュメントをご覧ください。
network
Map
network
セクションには、Environment の VPC 内の AWS リソースに Service を接続するためのパラメータが含まれています。Service を VPC に接続することで、サービス検出を使用して Environment 内の他の Service と通信したり、storage init
で Amazon Aurora などの VPC 内のデータベースに接続することができます。
network.vpc
Map
Service からの Egress トラフィックをルーティングする VPC 内のサブネットを指定します。
network.vpc.placement
String
この項目において現在有効なオプションは 'private'
のみです。もし、Service が VPC に接続されないことを期待する場合は、network
セクションを削除してください。
この項目が 'private' の場合、App Runner サービスは VPC のプライベートサブネットを経由して Egress トラフィックをルーティングします。
Copilot で生成された VPC を使用する場合、Copilot はインターネット接続用の NAT Gateway を Environment に自動的に追加します。 (VPC の料金をご覧ください。) また、copilot env init
を実行する際に、NAT ゲートウェイを持つ既存の VPC や、分離されたワークロードのための VPC エンドポイントをインポートすることも可能です。詳しくは、Environment のリソースをカスタマイズするをご覧ください。
observability
Map
observability
セクションは、Service の現在の状態を測定する方法を設定することができます。現在のところ、トレース設定のみサポートされています。
詳細については、observability のページを参照してください。
observability.tracing
String
トレースに使用するベンダー。現在、awsxray
のみサポートしています。
command
String
任意項目。コンテナイメージのデフォルトコマンドをオーバーライドします。
variables
Map
Copilot は Service 名などを常に環境変数としてインスタンスに対して渡します。本フィールドではそれら以外に追加で渡したい環境変数をキー・値のペアで指定します。
publish
Map
publish
セクションを使用すると、サービスは 1 つまたは複数の SNS トピックにメッセージをパブリッシュできます。
publish:
topics:
- name: orderEvents
上記の例では、この Manifest は、Copilot の Environment にデプロイされた他の Worker Service がサブスクライブできる orderEvents
という名前の SNS トピックを定義しています。COPILOT_SNS_TOPIC_ARNS
という名前の環境変数が、JSON 文字列としてワークロードに設定されます。
JavaScriptでは、次のように記述できます。
const {orderEvents} = JSON.parse(process.env.COPILOT_SNS_TOPIC_ARNS)
publish.topics
Array of topics
topic
オブジェクトのリスト。
publish.topics.topic
Map
1 つの SNS トピックの設定を保持します。
topic.name
String
必須項目。SNS トピックの名前です。大文字、小文字、数字、ハイフン、アンダースコアのみを含む必要があります。
tags
Map
AWS App Runner リソースとして渡される AWS タグを表すキー・値ペアです。
environments
Map
environments
セクションでは、Manifest 内の任意の設定値を Environment ごとにオーバーライドできます。上部記載の Manifest 例では test Environment における LOG_LEVEL
環境変数の値をオーバーライドしています。