Scheduled Job
以下は 'Scheduled Job'
Manifest で利用できるすべてのプロパティのリストです。Job の概念説明のページも合わせてご覧ください。
スケジュールされた Job のサンプル Manifest
name: report-generator
type: Scheduled Job
on:
schedule: "@daily"
cpu: 256
memory: 512
retries: 3
timeout: 1h
image:
build: ./Dockerfile
variables:
LOG_LEVEL: info
env_file: log.env
secrets:
GITHUB_TOKEN: GITHUB_TOKEN
# 上記すべての値は Environment ごとにオーバーライド可能です。
environments:
prod:
cpu: 2048
memory: 4096
name
String
Job 名。
type
String
Job のアーキテクチャタイプ。
現在、Copilot は定期的にもしくは固定したスケジュールでトリガーされるタスクである "Scheduled Job" タイプのみをサポートしています。
on
Map
Job をトリガーするイベントの設定。
on.schedule
String
定期的に Job をトリガーする頻度を指定できます。
サポートする頻度は:
頻度 | 以下と同一 | UTC を用いた可読表記による実行タイミング |
---|---|---|
"@yearly" |
"cron(0 * * * ? *)" |
1 月 1 日の午前 0 時 |
"@monthly" |
"cron(0 0 1 * ? *)" |
毎月 1 日の午前 0 時 |
"@weekly" |
"cron(0 0 ? * 1 *)" |
毎週日曜日の午前 0 時 |
"@daily" |
"cron(0 0 * * ? *)" |
毎日午前 0 時 |
"@hourly" |
"cron(0 * * * ? *)" |
毎時 0 分 |
"@every {duration}"
(例: "1m", "5m")"rate({duration})"
CloudWatch のrate 式 の形式
特定の時間に Job をトリガーしたい場合、cron でスケジュールを指定できます。
"* * * * *"
標準的な cron フォーマットを利用する"cron({fields})"
6 つフィールドからなる CloudWatch のcron 式 を利用する
最後に、schedule
フィールドを none
に設定することで、Job がトリガーされないようにすることができます。
on:
schedule: "none"
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
コンテナが正常に完了してから起動します。
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"]
cpu
Integer
タスクに割り当てる CPU ユニット数。指定可能な値については Amazon ECS ドキュメントをご覧ください。
memory
Integer
タスクに割り当てるメモリ量(MiB)。指定可能な値については Amazon ECS ドキュメントをご覧ください。
platform
String
docker build --platform
で渡すオペレーティングシステムとアーキテクチャ。([os]/[arch]
の形式で指定) 例えば、linux/arm64
や windows/x86_64
といった値です。デフォルトは linux/x86_64
です。
生成された文字列を上書きして、有効な異なる osfamily
や architecture
を明示的に指定してビルドすることができます。例えば Windows ユーザーの場合は、
platform: windows/x86_64
WINDOWS_SERVER_2019_CORE
が利用されますが、 Map を使って以下のように指定できます:
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
retries
Integer
Job が失敗するまでにリトライする回数。
timeout
Duration
Job の実行時間。この時間を超えた場合、Job は停止されて失敗となります。単位には h
, m
, s
が利用できます。
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
Job に環境変数として渡される key-value ペア。Copilot ではデフォルトでいくつかの環境変数が含まれています。
secrets
Map
AWS Systems Manager パラメータストア から環境変数として Job に安全に渡される key-value ペア。
storage
Map
Storage セクションではコンテナとサイドカーからマウントする外部の EFS ボリュームを指定します。これにより、データ処理や CMS のワークロードのために、リージョン内で永続ストレージへアクセスできるようになります。より詳しくは
ストレージ のページを確認してください。
storage.volumes
Map
アタッチする EFS ボリュームの名前と設定を指定します。volumes
フィールドは次の形式の Map として指定されます:
volumes:
<volume name>:
path: "/etc/mountpath"
efs:
...
storage.volumes.<volume>
Map
ボリュームの設定を指定します。
storage.volumes.<volume>
.path
String
必須項目。コンテナ内でボリュームをマウントしたい場所を指定します。利用できる文字は a-zA-Z0-9.-_/
のみで、 242 文字未満である必要があります。
storage.volumes.<volume>
.read_only
Bool
任意項目。デフォルトでは true
です。ボリュームが読み込み専用か否かを定義します。 false の場合、コンテナにファイルシステムへの elasticfilesystem:ClientWrite
権限が付与され、ボリュームは書き込み可能になります。
storage.volumes.<volume>
.efs
Map
より詳細な EFS の設定。
storage.volumes.<volume>
.efs.id
String
必須項目。マウントするファイルシステムの ID 。
storage.volumes.<volume>
.efs.root_dir
String
任意項目。デフォルトは /
です。ボリュームのルートとして使用する EFS ファイルシステム内の場所を指定します。利用できる文字は a-zA-Z0-9.-_/
のみで、 255 文字未満である必要があります。アクセスポイントを利用する場合、root_dir
は空か /
であり、auth.iam
が true
である必要があります。
storage.volumes.<volume>
.efs.auth
Map
EFS の高度な認可の設定を指定します。
storage.volumes.<volume>
.efs.auth.iam
Bool
任意項目。デフォルトは true
です。volume の EFS への接続の可否の判定に IAM を利用するかしないかを設定します。
storage.volumes.<volume>
.efs.auth.access_point_id
String
任意項目。デフォルトでは ""
が設定されます。接続する EFS アクセスポイントの ID です。アクセスポイントを利用する場合、root_dir
は空か /
であり、auth.iam
が true
である必要があります。
logging
Map
logging セクションには、コンテナの FireLens ログドライバ用のログ設定パラメータが含まれます。(設定例はこちら)
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 イメージ内の設定ファイルのフルパス。
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 トピックの重複排除を有効化できます。
environments
Map
environments セクションは Environment の設定を Manifest で指定した値によって上書きできるようにします。
上記の例の Manifest では、 CPU のパラメータを上書きしているので production のコンテナはよりパフォーマンスが高くなります。