Backend Service
以下は 'Backend Service'
Manifest で利用できるすべてのプロパティのリストです。Copilot Service の概念説明のページも合わせてご覧ください。
api service のサンプル Manifest
name: api
type: Backend Service
image:
build: ./api/Dockerfile
port: 8080
healthcheck:
command: ["CMD-SHELL", "curl -f http://localhost:8080 || exit 1"]
interval: 10s
retries: 2
timeout: 5s
start_period: 0s
network:
connect: true
cpu: 256
memory: 512
count: 2
exec: true
env_file: ./api/.env
environments:
test:
deployment:
rolling: "recreate"
count: 1
# Service は、次の場所でアクセス可能です。
# http://api.${COPILOT_ENVIRONMENT_NAME}.${COPILOT_APPLICATION_NAME}.internal
# これは VPC 内のみの内部ロードバランサーの内側にあります。
name: api
type: Backend Service
image:
build: ./api/Dockerfile
port: 8080
http:
path: '/'
healthcheck:
path: '/_healthcheck'
success_codes: '200,301'
healthy_threshold: 3
interval: 15s
timeout: 10s
grace_period: 30s
deregistration_delay: 50s
network:
vpc:
placement: 'private'
count:
range: 1-10
cpu_percentage: 70
requests: 10
response_time: 2s
secrets:
GITHUB_WEBHOOK_SECRET: GH_WEBHOOK_SECRET
DB_PASSWORD:
secretsmanager: 'mysql:password::'
# プライベート証明書がインポートされている Environment であれば、
# HTTPS のエンドポイントを Service に割り当てることができます。
# https://aws.github.io/copilot-cli/docs/manifest/environment#http-private-certificates を参照してください。
name: api
type: Backend Service
image:
build: ./api/Dockerfile
port: 8080
http:
path: '/'
alias: 'v1.api.example.com'
hosted_zone: AN0THE9H05TED20NEID # v1.api.example.com のレコードをホストゾーンに挿入します。
count: 1
# https://aws.github.io/copilot-cli/docs/developing/publish-subscribe/ を参照してください。
name: warehouse
type: Backend Service
image:
build: ./warehouse/Dockerfile
port: 80
publish:
topics:
- name: 'inventory'
- name: 'orders'
fifo: true
variables:
DDB_TABLE_NAME: 'inventory'
count:
range: 3-5
cpu_percentage: 70
memory_percentage: 80
# http://localhost:8000/copilot-cli/docs/developing/storage.ja.md#ファイルシステム を参照してください。
name: sync
type: Backend Serivce
image:
build: Dockerfile
variables:
S3_BUCKET_NAME: my-userdata-bucket
storage:
volumes:
userdata:
path: /etc/mount1
efs:
id: fs-1234567
name: 'backend'
type: 'Backend Service'
image:
build: './backend/Dockerfile'
port: 8080
http:
path: '/'
target_port: 8083 # Traffic on "/" is forwarded to the main container, on port 8083.
additional_rules:
- path: 'customerdb'
target_port: 8081 # Traffic on "/customerdb" is forwarded to the main container, on port 8081.
- path: 'admin'
target_port: 8082 # Traffic on "/admin" is forwarded to the sidecar "envoy", on port 8082.
target_container: envoy
sidecars:
envoy:
port: 80
image: aws_account_id.dkr.ecr.us-west-2.amazonaws.com/envoy-proxy-with-selfsigned-certs:v1
name
String
Service 名。
type
String
Service のアーキテクチャ。Backend Services はインターネット側からはアクセスできませんが、サービスディスカバリの利用により他の Service からはアクセスできます。
http
Map
http セクションは Service と内部 Application Load Balancer の連携に関するパラメーターを含みます。
http.path
String
このパスに対するリクエストが Service に転送されます。各 Load Balanced Web Service は、ユニークなパスでリッスンする必要があります。
http.alb
String Added in v1.33.0
インポートする既存の内部 ALB の ARN または名前。リスナールールがリスナーに追加されます。Copilot は証明書の様な DNS 関連リソースを管理しません。
http.healthcheck
String or Map
文字列を指定した場合、Copilot は、ターゲットグループからのヘルスチェックリクエストを処理するためにコンテナが公開しているパスと解釈します。デフォルトは "/" です。
http:
healthcheck: '/'
http:
healthcheck:
path: '/'
port: 8080
success_codes: '200'
healthy_threshold: 3
unhealthy_threshold: 2
interval: 15s
timeout: 10s
grace_period: 60s
http.healthcheck.path
String
ヘルスチェックリクエスト送信先。
http.healthcheck.port
Integer
ヘルスチェックリクエストを送信するポート。デフォルト値は、image.port
です。http.target_container
で公開ポートが設定されている場合、公開しているポートが設定されます。
ポートが 443
で公開されている場合、 ヘルスチェックは自動で HTTPS に設定されます。
http.healthcheck.success_codes
String
healthy なターゲットがヘルスチェックに対して返す HTTP ステータスコードを指定します。200 から 499 の範囲で指定可能です。また、"200,202" のように複数の値を指定することや "200-299" のような値の範囲指定も可能です。デフォルト値は 200 です。
http.healthcheck.healthy_threshold
Integer
unhealthy なターゲットを healthy とみなすために必要な、連続したヘルスチェックの成功回数を指定します。デフォルト値は 5 で、設定可能な範囲は、2 〜 10 です。
http.healthcheck.unhealthy_threshold
Integer
ターゲットが unhealthy であると判断するまでに必要な、連続したヘルスチェックの失敗回数を指定します。デフォルト値は 2 で、設定可能な範囲は、2 〜 10 です。
http.healthcheck.interval
Duration
個々のターゲットへのヘルスチェックを行う際の、おおよその間隔を秒単位で指定します。デフォルト値は 30 秒で、設定可能な範囲は、5 〜 300 です。
http.healthcheck.timeout
Duration
ターゲットからの応答がない場合、ヘルスチェックが失敗したとみなすまでの時間を秒単位で指定します。デフォルト値は 5 秒で、設定可能な範囲は、5 〜 300 です。
http.healthcheck.grace_period
Duration
コンテナ起動時にターゲットグループのヘルスチェックが失敗した場合の、それを無視する時間を指定します。デフォルトは 60 秒です。これは、healthy であることを担保しながら着信を待機するまでに時間がかかるコンテナのデプロイ時の問題を修正したり、迅速な起動が保証されているコンテナのデプロイを高速化したりするのに役立ちます。
http.deregistration_delay
Duration
登録解除時にターゲットがクライアントとの接続を閉じるのを待つ時間を指定します。デフォルトでは 60 秒です。この値を大きくするとターゲットが安全に接続を閉じるための時間を確保できますが、新バージョンのデプロイに必要となる時間が長くなります。範囲は 0 〜 3600 です。
http.target_container
String
サイドカーコンテナを指定することで、Service のメインコンテナの代わりにサイドカーでロードバランサーからのリクエストを受け取れます。
ターゲットコンテナのポートが 443
に設定されている場合、プロトコルは HTTP
に設定され、ロードバランサーは
Fargate タスクと TLS 接続します。ターゲットコンテナにインストールされた証明書が利用されます。
http.stickiness
Boolean
スティッキーセッションの有効化、あるいは無効化を指定します。
http.allowed_source_ips
Array of Strings
Service へのアクセスを許可する CIDR IP アドレスのリストを指定します。
http:
allowed_source_ips: ["192.0.2.0/24", "198.51.100.10/32"]
http.alias
String or Array of Strings or Array of Maps
Service の HTTPS ドメインエイリアス。
# String version.
http:
alias: example.com
# Alternatively, as an array of strings.
http:
alias: ["example.com", "v1.example.com"]
# Alternatively, as an array of maps.
http:
alias:
- name: example.com
hosted_zone: Z0873220N255IR3MTNR4
- name: v1.example.com
hosted_zone: AN0THE9H05TED20NEID
hosted_zone
String既存のプライベートホストゾーンの ID。内部ロードバランサーの作成後に、 Copilot がエイリアスレコードを挿入し、エイリアス名を LB の DNS 名にマッピングします。
alias
と共に使用します。
http:
alias: example.com
hosted_zone: Z0873220N255IR3MTNR4
# Also see http.alias array of maps example, above.
version
StringHTTP(S) プロトコルのバージョン。
'grpc'
、 'http1'
、または 'http2'
を指定します。省略した場合は、'http1'
が利用されます。
gRPC を利用する場合は、Application にドメインが関連付けられていなければなりません。
http.additional_rules
Array of Maps
複数の ALB リスナールール設定します。
http.additional_rules.path
String
指定したパスに対するリクエストが、Service に転送されます。各リスナールールはユニークなパスで
公開している必要があります。
http.additional_rules.healthcheck
String or Map
文字列を指定した場合、Copilot は、ターゲットグループからのヘルスチェックリクエストを処理するためにコンテナが公開しているパスと解釈します。デフォルトは "/" です。
http:
additional_rules:
- healthcheck: '/'
http:
additional_rules:
- healthcheck:
path: '/'
port: 8080
success_codes: '200'
healthy_threshold: 3
unhealthy_threshold: 2
interval: 15s
timeout: 10s
http.additional_rules.healthcheck.path
String
ヘルスチェックリクエスト送信先。
http.additional_rules.healthcheck.port
Integer
ヘルスチェックリクエストを送信するポート。デフォルト値は、image.port
です。http.target_container
で公開ポートが設定されている場合、公開しているポートが設定されます。
ポートが 443
で公開されている場合、 ヘルスチェックは自動で HTTPS に設定されます。
http.additional_rules.healthcheck.success_codes
String
healthy なターゲットがヘルスチェックに対して返す HTTP ステータスコードを指定します。200 から 499 の範囲で指定可能です。また、"200,202" のように複数の値を指定することや "200-299" のような値の範囲指定も可能です。デフォルト値は 200 です。
http.additional_rules.healthcheck.healthy_threshold
Integer
unhealthy なターゲットを healthy とみなすために必要な、連続したヘルスチェックの成功回数を指定します。デフォルト値は 5 で、設定可能な範囲は、2-10 です。
http.additional_rules.healthcheck.unhealthy_threshold
Integer
ターゲットが unhealthy であると判断するまでに必要な、連続したヘルスチェックの失敗回数を指定します。デフォルト値は 2 で、設定可能な範囲は、2-10 です。
http.additional_rules.healthcheck.interval
Duration
個々のターゲットへのヘルスチェックを行う際の、おおよその間隔を秒単位で指定します。デフォルト値は 30 秒で、設定可能な範囲は、5秒-300秒 です。
http.additional_rules.healthcheck.timeout
Duration
ターゲットからの応答がない場合、ヘルスチェックが失敗したとみなすまでの時間を秒単位で指定します。デフォルト値は 5 秒で、設定可能な範囲は、5秒-300秒 です。
http.additional_rules.deregistration_delay
Duration
登録解除時に、ターゲットがコネクションをドレイニングするのを待つ時間です。デフォルト値は 60 秒です。大きな値に設定すると、安全にコネクションをドレイニングするのに長い時間を使える様になりますが、新しいデプロイに必要な時間が増加します。設定可能な範囲は、0 秒 - 3600 秒です。
http.additional_rules.target_container
String
メインのサービスコンテナの代わりにリクエストがルーティングされるサイドカーコンテナ。
ターゲットコンテナのポートが 443 に設定されている場合、 ロードバランサーがターゲットコンテナにインストールされた証明書を使用して、Fargate タスクとの TLS 接続するために、プロトコルは HTTPS
に設定されます。
http.additional_rules.target_port
String
トラフィックを受信するコンテナポート。 メインコンテナの image.port
やサイドカーコンテナの sidecar.port
と異なるコンテナポートの場合、このフィールドを指定します。
http.additional_rules.stickiness
Boolean
スティッキーセッションの有効化、あるいは無効化を指定します。
http.additional_rules.allowed_source_ips
Array of Strings
Service へアクセスを許可する CIDR IP アドレスです。
http:
additional_rules:
- allowed_source_ips: ["192.0.2.0/24", "198.51.100.10/32"]
http.additional_rules.alias
String or Array of Strings or Array of Maps
Service の HTTPS ドメインエイリアスです。
# String version.
http:
additional_rules:
- alias: example.com
# Alternatively, as an array of strings.
http:
additional_rules:
- alias: ["example.com", "v1.example.com"]
# Alternatively, as an array of maps.
http:
additional_rules:
- alias:
- name: example.com
hosted_zone: Z0873220N255IR3MTNR4
- name: v1.example.com
hosted_zone: AN0THE9H05TED20NEID
hosted_zone
String
既存のホステッドゾーンの ID。 http.alias
および http.additional_rules.alias
と共にのみ使用できます。証明書をインポートした Environment がある場合、ロードバランサーの作成後に、Copilot が A レコードを挿入するホストゾーンを指定できます。
http:
additional_rules:
- alias: example.com
hosted_zone: Z0873220N255IR3MTNR4
# Also see http.alias array of maps example, above.
redirect_to_https
BooleanApplication Load Balancer で HTTP から HTTPS に自動的にリダイレクトします。デフォルトは
true
です。
http.additional_rules.version
String
HTTP(S) のプロトコルバージョン。'grpc'
、 'http1'
、または 'http2'
のどれかです。省略した場合、'http1'
が推定されます。
gRPC を使用する場合、ドメインがアプリケーションと関連付けられている必要があることに注意してください。
image
Map
image セクションは、Docker ビルドに関する設定や、既にあるコンテナイメージに対する参照についてのパラメータを含みます。
image.build
String or Map
オプションの引数で指定した Dockerfile からコンテナをビルドします。後述の image.location
フィールドとは排他的な使用となります。
このフィールドに 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.location
と image.build
の同時利用はできません。
location
フィールドの制約を含む指定方法は Amazon ECS タスク定義の image
パラメータのそれに従います。
Warning
Windows コンテナイメージを指定する場合、Manifest に platform: windows/amd64
を指定する必要があります。
ARM アーキテクチャベースのコンテナイメージを指定する場合、Manifest に platform: linux/arm64
を指定する必要があります。
image.credentials
String
任意項目です。プライベートリポジトリの認証情報の ARN。credentials
フィールドは、Amazon ECS タスク定義の credentialsParameter
と同じです。
image.labels
Map
コンテナに付与したい Docker ラベルを key/value の Map で指定できます。これは任意設定項目です。
image.depends_on
Map
任意項目。コンテナに追加する Container Dependencies の任意の key/value の Map。Map の key はコンテナ名で、value は依存関係を表す値 (依存条件) として start
、healthy
、complete
、success
のいずれかを指定できます。なお、必須コンテナに complete
や success
の依存条件を指定することはできません。
設定例:
image:
build: ./Dockerfile
depends_on:
nginx: start
startup: success
nginx
サイドカーが起動し、startup
コンテナが正常に完了してから起動します。
image.port
Integer
公開するポート番号。Dockerfile 内に EXPOSE
インストラクションが記述されている場合、Copilot はそれをパースした値をここに挿入します。
ポートを 443
に設定し、 内部ロードバランサーが http
で有効化されている場合、プロトコルは HTTPS
に設定され、ロードバランサーは Fargate タスクと TLS 接続します。ターゲットコンテナにインストールされた証明書が利用されます。
image.healthcheck
Map
コンテナヘルスチェックの設定。この設定はオプションです。
image.healthcheck.command
Array of Strings
コンテナが healthy であると判断するためのコマンド。
このフィールドに設定する文字列配列の最初のアイテムには、コマンド引数を直接実行するための CMD
、あるいはコンテナのデフォルトシェルでコマンドを実行する CMD-SHELL
が利用できます。
image.healthcheck.interval
Duration
各ヘルスチェックの実行間の秒単位の間隔です。デフォルト値は10秒です。
image.healthcheck.retries
Integer
コンテナが unhealthy と見なされるまでに、失敗したヘルスチェックを再試行する回数です。デフォルト値は2です。
image.healthcheck.timeout
Duration
ヘルスチェックの実行開始から失敗とみなすまでに待機する秒単位の期間です。デフォルト値は5秒です。
image.healthcheck.start_period
Duration
ヘルスチェックの実行と失敗がリトライ回数としてカウントされ始める前に、コンテナに対して起動処理を済ませる猶予期間の長さです。秒単位で指定し、デフォルトは0秒です。
cpu
Integer
タスクに割り当てる CPU ユニット数。指定可能な値については Amazon ECS ドキュメントをご覧ください。
memory
Integer
タスクに割り当てるメモリ量(MiB)。指定可能な値については Amazon ECS ドキュメントをご覧ください。
platform
String or Map
docker build --platform
で渡すオペレーティングシステムとアーキテクチャ。([os]/[arch]
の形式で指定)
例えば linux/arm64
や windows/x86_64
などが指定できます。デフォルトは linux/x86_64
です。
異なる osfamily
や architecture
を明示的に指定することもできます。
例えば、Windows では以下の設定はデフォルトで WINDOWS_SERVER_2019_CORE
が利用されますが
platform: windows/x86_64
Map を使って WINDOWS_SERVER_2019_FULL
を明示的に指定できます。
platform:
osfamily: windows_server_2019_full
architecture: x86_64
platform:
osfamily: windows_server_2019_core
architecture: x86_64
platform:
osfamily: windows_server_2022_core
architecture: x86_64
platform:
osfamily: windows_server_2022_full
architecture: x86_64
count
Integer or Map
Service が保つべきタスクの数。
次の様に指定すると、
count: 5
count.spot
Integer
spot
サブフィールドに数値を指定することで、Service の実行に Fargate Spot キャパシティを利用できます。
count:
spot: 5
Info
ARM アーキテクチャで動作するコンテナでは、Fargate Spot はサポートされていません。
あるいは、Map を指定してオートスケーリングの設定も可能です。
count:
range: 1-10
cooldown:
in: 30s
cpu_percentage: 70
memory_percentage:
value: 80
cooldown:
out: 45s
requests: 10000
response_time: 2s
count.range
String or Map
メトリクスに指定した値に基づいて、Service が保つべきタスク数の最小と最大を範囲指定できます。
count:
range: n-m
MinCapacity
に n
が、MaxCapacity
に m
が設定されます。
あるいは次の例に挙げるように range
フィールド以下に min
と max
を指定し、加えて spot_from
フィールドを利用することで、一定数以上のタスクを実行する場合に Fargate Spot キャパシティを利用する設定が可能です。
count:
range:
min: 1
max: 10
spot_from: 3
上記の例では Application Auto Scaling は 1-10 の範囲で設定されますが、最初の2タスクはオンデマンド Fargate キャパシティに配置されます。Service が3つ以上のタスクを実行するようにスケールした場合、3つ目以降のタスクは最大タスク数に達するまで Fargate Spot に配置されます。
count.range.min
Integer
Service がオートスケーリングを利用する場合の最小タスク数。
count.range.max
Integer
Service がオートスケーリングを利用する場合の最大タスク数。
count.range.spot_from
Integer
Service の何個目のタスクから Fargate Spot キャパシティプロバイダーを利用するか。
count.cooldown
Map
指定されたすべてのオートスケーリングフィールドのデフォルトクールダウンとして使用されるクールダウンスケーリングフィールド。
count.cooldown.in
Duration
Service をスケールアップするためのオートスケーリングクールダウン時間。
count.cooldown.out
Duration
Service をスケールダウンさせるためのオートスケーリングクールダウン時間。
cpu_percentage
、memory_percentage
、requests
および response_time
のオプションは、オートスケーリングに関する count
フィールドにて、フィールド値としてあるいはフィールド値とクールダウン設定に関する詳細情報を含むマップとして定義することができます。
value: 50
cooldown:
in: 30s
out: 60s
count.cpu_percentage
Integer
Service が保つべき平均 CPU 使用率を指定し、それによってスケールアップ・ダウンします。
count.memory_percentage
Integer
Service が保つべき平均メモリ使用率を指定し、それによってスケールアップ・ダウンします。
count.requests
Integer
タスクで処理されるリクエスト数に応じて、スケールアップ・ダウンします。
count.response_time
Duration
Service の平均レスポンス時間に応じて、スケールアップ・ダウンします。
exec
Boolean
コンテナ内部でのインタラクティブなコマンド実行機能を有効化します。デフォルト値は false
です。$ copilot svc exec
コマンドの利用には、この値に true
を指定しておく必要があります。
deployment
Map
deployment セクションには、デプロイ中に実行されるタスクの数や、タスクの停止と開始の順序を制御するためのパラメータが含まれています。
deployment.rolling
String
ローリングデプロイ戦略。有効な値は以下の通りです。
"default"
: 古いタスクを停止する前に、更新されたタスク定義で必要な数だけ新しいタスクを作成します。内部的には、minimumHealthyPercent
を 100 に、maximumPercent
を 200 に設定することになります。"recreate"
: 実行中のタスクをすべて停止し、新しいタスクを起動します。内部的には、minimumHealthyPercent
を 0 に、maximumPercent
を 100 に設定します。
deployment.rollback_alarms
文字列またはマップの配列
Info
デプロイの開始時にアラームが「In alarm」状態にある場合、Amazon ECS はそのデプロイの間、アラームを監視しません。詳細については、こちらのドキュメントをお読みください。
文字列のリストとして、デプロイのロールバックを引き起こす可能性のある、Service に関連付ける既存の CloudWatch アラームの名前を指定します。
deployment:
rollback_alarms: ["MyAlarm-ELB-4xx", "MyAlarm-ELB-5xx"]
deployment:
rollback_alarms:
cpu_utilization: 70 // Percentage value at or above which alarm is triggered.
memory_utilization: 50 // Percentage value at or above which alarm is triggered.
entrypoint
String or Array of Strings
コンテナイメージのデフォルトエントリポイントをオーバーライドします。
# 文字列による指定。
entrypoint: "/bin/entrypoint --p1 --p2"
# あるいは文字列配列による指定も可能。
entrypoint: ["/bin/entrypoint", "--p1", "--p2"]
command
String or Array of Strings
コンテナイメージのデフォルトコマンドをオーバーライドします。
# 文字列による指定。
command: ps au
# あるいは文字列配列による指定も可能。
command: ["ps", "au"]
network
Map
network
セクションは VPC 内の AWS リソースに接続するための設定です。
network.connect
Bool or Map
Service に対し Service Connect を有効にします。Service 間のトラフィックを負荷分散し、より弾力的にします。デフォルトは false
です。
Map として利用すると、Service で利用するエイリアスを指定出来ます。エイリアスは Environment 内でユニークである必要があります。
network.connect.alias
String
Service Connect 経由で公開する Service のカスタム DNS 名です。デフォルトは Service 名です。
network.vpc
Map
タスクを配置するサブネットとアタッチされるセキュリティグループの設定です。
network.vpc.placement
String or Map
String として利用する場合、public
あるいは private
のどちらかを指定します。デフォルトではタスクはパブリックサブネットに配置されます。
Info
Copilot が生成した VPC を利用して private
サブネットにタスクを配置する場合、Copilot は Environment にインターネット接続用の NAT ゲートウェイを作成します。(価格はこちら。)あるいは copilot env init
コマンドで既存の VPC をインポートして利用することや、分離されたワークロード用に VPC エンドポイントが構成された VPC を構成ができます。詳細は、custom environment resourcesを確認してください。
Map として利用する場合、 Copilot が ECS タスクを起動するサブネットを指定します。例:
network:
vpc:
placement:
subnets: ["SubnetID1", "SubnetID2"]
network.vpc.placement.subnets
Array of Strings or Map
String のリストとする場合、Copilot が ECS タスクを起動するサブネット ID を指定します。
Map の場合、サブネットをフィルタリングするための名前と値のペアを指定します。フィルタは AND
で結合され、各フィルタの値は OR
で結合されることに注意してください。例えば、タグセット org: bi
と type: public
を持つサブネットと、タグセット org: bi
と type: private
を持つサブネットの両方は、以下の方法でマッチングされることになります。
network:
vpc:
placement:
subnets:
from_tags:
org: bi
type:
- public
- private
network.vpc.placement.subnetsfrom_tags
Map of String and String or Array of Strings
Copilot が ECS タスクを起動するサブネットをフィルタリングするためのタグセット。
network.vpc.security_groups
Array of Strings or Map
タスクに関連する追加のセキュリティグループ ID。
network:
vpc:
security_groups: [sg-0001, sg-0002]
Map
形式で以下のように指定します。
network:
vpc:
security_groups:
deny_default: true
groups: [sg-0001, sg-0002]
network.vpc.security_groups.from_cfn
String
CloudFormation スタックエクスポートの名称。
network.vpc.security_groups.deny_default
Boolean
Environment 内のすべての Service からの侵入を許可するデフォルトのセキュリティグループを無効化します。
network.vpc.security_groups.groups
Array of Strings
タスクに関連する追加のセキュリティグループ ID。
network.vpc.security_groups.groupsfrom_cfn
String
CloudFormation スタックエクスポートの名称。
variables
Map
Copilot は Service 名などを常に環境変数としてタスクに対して渡します。本フィールドではそれら以外に追加で渡したい環境変数をキーバーリューのペアで指定します。
variables.from_cfn
String
CloudFormation スタックエクスポートの名称。
env_file
String
ワークスペースのルートから、メインコンテナに引き渡す環境変数を含むファイルへのパスを指定します。環境変数ファイルの詳細については、環境変数ファイルの指定に関する考慮事項を参照してください。
secrets
Map
AWS Systems Manager (SSM) パラメータストアまたは AWS Secrets Managerから環境変数として、Service に安全に渡される秘密値を表すキー・値ペアを指定します。
secrets.from_cfn
String
CloudFormation スタックエクスポートの名称。
storage
Map
storage
セクションでは、コンテナやサイドカーでマウントしたい EFS ボリュームを指定できます。これにより、リージョン内のアベイラビリティゾーンにまたがって永続化ストレージへのアクセスが必要となるデータ処理や CMS のようなワークロードの実行が可能となります。詳細はストレージページもご覧ください。また、タスクレベルのエフェメラルストレージの拡張を設定もできます。
storage.ephemeral
Int
タスクに割り当てたいエフェメラルストレージのサイズを GiB で指定します。デフォルトかつ最小値は 20 GiB で、最大値は 200 GiB です。20 GiB を超えるサイズを指定した場合、サイズに応じた追加の料金が発生します。
タスクのメインコンテナとサイドカーでファイルシステムを共有したい場合、例えば次のように空ボリュームを使う方法が検討できます。
storage:
ephemeral: 100
volumes:
scratch:
path: /var/data
read_only: false
sidecars:
mySidecar:
image: public.ecr.aws/my-image:latest
mount_points:
- source_volume: scratch
path: /var/data
read_only: false
storage.readonly_fs
Boolean
コンテナのルートファイルシステムに読み取り専用でアクセス出来る様にするには、true を指定します。
storage.volumes
Map
マウントしたい EFS ボリュームの名前や設定を指定します。volumes
フィールドでは次のように Map を利用して指定します。
volumes:
<volume name>:
path: "/etc/mountpath"
efs:
...
storage.volumes.<volume>
Map
ボリュームの設定を指定します。
storage.volumes.<volume>
.path
String
必須設定項目です。ボリュームをマウントするコンテナ内のパスを指定します。指定する値は242文字未満かつ a-zA-Z0-9.-_/
の文字種である必要があります。
storage.volumes.<volume>
.read_only
Boolean
任意設定項目で、デフォルト値は true
です。ボリュームを読み取り専用とするかどうかを指定します。false
に設定した場合、コンテナにファイルシステムへの elasticfilesystem:ClientWrite
権限が付与され、それによりボリュームへ書き込めるようになります。
storage.volumes.<volume>
.efs
Boolean or Map
詳細な EFS 設定を指定します。Boolean 値による指定、あるいは uid
と gid
サブフィールドのみを指定した場合に、EFS ファイルシステムと Service 専用の EFS アクセスポイントが作成されます。
// Boolean 値を指定する場合
efs: true
// POSIX uid/gid を指定する場合
efs:
uid: 10000
gid: 110000
storage.volumes.<volume>
.efs.id
String
必須設定項目です。マウントする EFS ファイルシステムの ID を指定します。
storage.volumes.<volume>
.efs.id.from_cfn
String v1.30.0 にて追加
CloudFormation スタック出力値のエクスポートの名前を指定します。
storage.volumes.<volume>
.efs.root_dir
String
任意設定項目で、デフォルト値は /
です。EFS ファイルシステム内のどのパスをマウントするボリュームのルートとするのかを指定します。指定する値は 255 文字未満かつ a-zA-Z0-9.-_/
の文字種である必要があります。EFS アクセスポイントを利用する場合、本設定値に空もしくは /
を指定し、かつ auth.iam
の設定値が true
となっている必要があります。
storage.volumes.<volume>
.efs.uid
Uint32
任意設定項目で、gid
とともに指定する必要があります。また、root_dir
、auth
、id
とともに指定することはできません. Copilot 管理の EFS ファイルシステムに対する EFS アクセスポイントを作成する際の POSIX UID として利用されます。
storage.volumes.<volume>
.efs.gid
Uint32
任意設定項目で、uid
とともに指定する必要があります。また、root_dir
、auth
、id
とともに指定することはできません. Copilot 管理の EFS ファイルシステムに対する EFS アクセスポイントを作成する際の POSIX GID として利用されます。
storage.volumes.<volume>
.efs.auth
Map
EFS に関連する認可設定を指定します。
storage.volumes.<volume>
.efs.auth.iam
Boolean
任意設定項目で、デフォルトは true
です。EFS リソースへのアクセスに IAM による認可を利用するかどうかを指定します。
storage.volumes.<volume>
.efs.auth.access_point_id
String
任意設定項目で、デフォルトは ""
です。利用する EFS アクセスポイントの ID を指定します。EFS アクセスポイントを利用する場合、root_dir
の設定値に空もしくは /
を指定しており、かつ本設定値が true
となっている必要があります。
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 トピックの重複排除を有効化できます。
logging
Map
logging セクションには、ログ設定を含みます。このセクションでは、コンテナの FireLens ログドライバ用のパラメータを設定できます。(設定例はこちら)
logging.retention
Integer
任意項目。 ログイベントを保持する日数。設定可能な値については、こちらを確認してください。省略した場合、デフォルトの 30 が設定されます。
logging.image
Map
任意項目。使用する Fluent Bit のイメージ。デフォルト値は public.ecr.aws/aws-observability/aws-for-fluent-bit:stable
。
logging.destination
Map
任意項目。FireLens ログドライバーにログを送信するときの設定。
logging.enableMetadata
Map
任意項目。ログに ECS メタデータを含めるかどうか。デフォルトは true
。
logging.secretOptions
Map
任意項目。ログの設定に渡す秘密情報です。
logging.configFilePath
Map
任意項目。カスタムの Fluent Bit イメージ内の設定ファイルのフルパス。
logging.env_file
String
ロギングサイドカーコンテナに設定する環境変数を含むファイルのワークスペースのルートからのパス。環境変数ファイルに関する詳細については、環境変数ファイルの指定に関する考慮事項を確認してください。
observability
Map
observability
セクションは、Service の現在の状態を測定する方法を設定することができます。現在のところ、トレース設定のみサポートされています。
詳細については、observability のページを参照してください。
observability.tracing
String
トレースに使用するベンダー。現在、awsxray
のみサポートしています。
taskdef_overrides
Array of Rules
taskdef_overrides
セクションでは、ECS のタスク定義のオーバーライドルールを適用できます (例はこちら)。
taskdef_overrides.path
String
必須設定項目です。オーバーライドするタスク定義のフィールドのパス。
taskdef_overrides.value
Any
必須設定項目です。オーバーライドするタスク定義のフィールドの値。
environments
Map
environments
セクションでは、Manifest 内の任意の設定値を Environment ごとにオーバーライドできます。上部記載の Manifest 例では count
パラメータをオーバーライドすることで 'prod' Environment で実行されるタスク数を 2 に設定し、'staging' Environment で実行される Fargate Spot capacity によるタスク数を 2 に設定します。