Request-Driven Web Service

以下は 'Request-Driven Web Service' Manifest で利用できるすべてのプロパティのリストです。Copilot Service の概念説明のページも合わせてご覧ください。

frontend Service のサンプル Manifest
# Service 名はロググループや App Runner サービスなどのリソースの命名に利用されます。
name: frontend
# 実行する Service の「アーキテクチャ」
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

variables:
  LOG_LEVEL: info

tags:
  owner: frontend-team

environments:
  test:
    variables:
      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: '/'
あるいは以下のように Map によるヘルスチェックも指定可能です。
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
この例は、Copilot は Docker ビルドコンテキストに context フィールドの値が示すディレクトリを利用し、args 以下のキーバリューのペアをイメージビルド時の --build-args 引数として渡します。上記例と同等の docker build コマンドは次のようになります:
$ 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 ドキュメントをご覧ください。

platform String
docker build --platform で渡すオペレーティングシステムとアーキテクチャ。([os]/[arch] の形式で指定)

variables Map
Copilot は Service 名などを常に環境変数としてインスタンスに対して渡します。本フィールドではそれら以外に追加で渡したい環境変数をキーバーリューのペアで指定します。

publish Map
publish セクションを使用すると、サービスは 1 つまたは複数の SNS トピックにメッセージをパブリッシュできます。デフォルトでは、作成されたトピックにサブスクライブできる Worker Service はありません。Environment 内の Worker Serivce は、各トピックの allowed_workers フィールドを使って許可リストに登録できます。

publish:
  topics:
    - name: order-events
      allowed_workers: [database-worker, receipts-worker]

上記の例では、この Manifest は、order-events という名前の SNS トピックを定義しています。Copilot の Environment にデプロイされた database-worker または receipts-worker という名前の Worker Service がこのトピックをサブスクライブすることを許可します。

publish.topics Array of topics
topic オブジェクトのリスト。

publish.topics.topic Map
1 つの SNS トピックの名前とパーミッションを保持します。

topic.name String
必須項目。SNS トピックの名前です。大文字、小文字、数字、ハイフン、アンダースコアのみを含む必要があります。

topic.allowed_workers Array of strings
この SNS トピックをサブスクライブすることが許可されている Worker Service の名前を含む配列です。このフィールドが指定されていない場合、どの Worker もこの SNS トピックへのサブスクリプションを作成することはできません。

environments Map
environments セクションでは、Manifest 内の任意の設定値を Environment ごとにオーバーライドできます。上部記載の Manifest 例では test Environment における LOG_LEVEL 環境変数の値をオーバーライドしています。