Request-Driven Web Service

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

AWS App Runner のサンプル Manifest
# https://web.example.com からアクセス可能な Web サービスをデプロイします。
name: frontend
type: Request-Driven Web Service

http:
  healthcheck: '/_healthcheck'
  alias: web.example.com

image:
  build: ./frontend/Dockerfile
  port: 80
cpu: 1024
memory: 2048

variables:
  LOG_LEVEL: info
tags:
  owner: frontend
observability:
  tracing: awsxray
secrets:
  GITHUB_TOKEN: GITHUB_TOKEN
  DB_SECRET:
    secretsmanager: 'mysql'

environments:
  test:
    variables:
      LOG_LEVEL: debug
# すべての Egress トラフィックは、Environment の VPCを経由してルーティングされます。
name: frontend
type: Request-Driven Web Service

image:
  build: ./frontend/Dockerfile
  port: 8080
cpu: 1024
memory: 2048

network:
  vpc:
    placement: private
# https://aws.github.io/copilot-cli/docs/developing/publish-subscribe/ を参照してください。
name: refunds
type: Request-Driven Web Service

image:
  build: ./refunds/Dockerfile
  port: 8080

http:
  alias: refunds.example.com
cpu: 1024
memory: 2048

publish:
  topics:
    - name: 'refunds'
    - name: 'orders'
      fifo: true

name String
Service の名前。

type String
Service のアーキテクチャタイプ。 Load Balanced Web Service は、AWS App Runner にデプロイされる、インターネットに公開するための Service です。

http Map
http セクションは、マネージドロードバランサの連携に関するパラメーターを含みます。

http.private Bool or Map 受信トラフィックを Envrionment のみに制限します。デフォルトは false です。

http.privateendpoint String App Runner に対する既存の VPC エンドポイントの ID です。

http:
  private:
    endpoint: vpce-12345

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 ドキュメントをご覧ください。

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 名などを常に環境変数としてインスタンスに対して渡します。本フィールドではそれら以外に追加で渡したい環境変数をキー・値のペアで指定します。

secrets Map
AWS Systems Manager (SSM) パラメータストアまたは AWS Secrets Managerから環境変数として、Service に安全に渡される秘密値を表すキー・値ペアを指定します。

secrets.from_cfn String
CloudFormation スタックエクスポートの名称。

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 トピックの設定を保持します。

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

publish.topics.topic.fifo Boolean or Map FIFO (first in, first out) SNS トピック設定。 true と指定した場合、 Copilot は FIFO でトピックを作成します。

publish:
  topics:
    - name: mytopic
      fifo: true

また, SNS FIFO トピックの高度な設定も可能です。

publish:
  topics:
    - name: mytopic
      fifo:
        content_based_deduplication: true

publish.topics.topic.fifo.content_based_deduplication Boolean パブリッシュされたメッセージごとにメッセージ本文が一意であることが保証されている場合、SNS FIFO トピックの重複排除を有効化できます。

tags Map
AWS App Runner リソースとして渡される AWS タグを表すキー・値ペアです。

count String 既存のオートスケーリング設定の名前を指定します。

count: high-availability/3

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