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