Scheduled Job

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

レポートを作成する cron ジョブのサンプル Manifest
# Your job name will be used in naming your resources like log groups, ECS Tasks, etc.
name: report-generator
type: Scheduled Job

on:
  schedule: @daily
cpu: 256
memory: 512
retries: 3
timeout: 1h

image:
  # Path to your service's Dockerfile.
  build: ./Dockerfile

variables:
  LOG_LEVEL: info
secrets:
  GITHUB_TOKEN: GITHUB_TOKEN

# You can override any of the values defined above by environment.
environments:
  prod:
    cpu: 2048               # Larger CPU value for prod environment 
    memory: 4096

name String
Job 名。

type String
Job のアーキテクチャタイプ。 現在、Copilot は定期的にもしくは固定したスケジュールでトリガされるタスクである "Scheduled Job" タイプのみをサポートしています。

on Map
Job をトリガするイベントの設定。

on.schedule String
定期的に Job をトリガする頻度を指定できます。 サポートする頻度は:

  • "@yearly"
  • "@monthly"
  • "@weekly"
  • "@daily"
  • "@hourly"
  • "@every {duration}" (例: "1m", "5m")
  • "rate({duration})" CloudWatch のrate 式 の形式

特定の時間に Job をトリガしたい場合、cron でスケジュールを指定できます。

image Map
image セクションは Docker の build に関するパラメータを持ちます。

image.build String or Map
String 型を設定した場合、Copilot はそれを Dockerfile へのパスと解釈します。指定したディレクトリがビルドコンテキストとなります。下記の Manifest を指定した場合:

image:
  build: path/to/dockerfile
このコマンドを実行した場合と同じ結果になります。
$ docker build --file path/to/dockerfile path/to

Map 型も指定できます:

image:
  build:
    dockerfile: path/to/dockerfile
    context: context/dir
    target: build-stage
    cache_from:
      - image:tag
    args:
      key: value

この場合、Copilot は指定したコンテキストディレクトリを使用します。また、args で指定した key-value のペアで --build-arg を上書きします。これは下記の docker コマンドの実行と同等です。

$ docker build --file path/to/dockerfile --target build-stage --cache-from image:tag --build-arg key=value context/dir.

フィールドは省略できます。その場合、Copilot は可能な限り意図を汲み取ろうと試みます。例えば、context を指定しても、dockerfileを指定しなかった場合、Copilot はコンテキストディレクトリで Docker を実行し、”Dockerfile”という名前のファイルを Dockerfile とみなします。逆に、dockerfileを指定し、contextを指定しなかった場合、Copilot は dockerfile が配置されたディレクトリで Docker を実行したいのだと推測します。

全てのパスはワークスペースをルートとした相対パスで記述できます。

image.location String
Dockerfile からコンテナイメージをビルドする代わりに、既存のコンテナイメージ名の指定も可能です。image.locationimage.build の同時利用はできません。 location フィールドの制約を含む指定方法は Amazon ECS タスク定義の image パラメータのそれに従います。

image.labelsMap
コンテナに付与したい Docker ラベルを key/value の Map で指定できます。これは任意設定項目です。

image.depends_on Map
任意項目。コンテナに追加する Container Dependencies の任意の key/value の Map。Map の key はコンテナ名で、value は依存関係を表す値 (依存条件) として starthealthycompletesuccess のいずれかを指定できます。なお、必須コンテナに completesuccess の依存条件を指定することはできません。

Note

サイドカーのコンテナヘルスチェックは、現在 Copilot ではサポートされていません。つまり、healthy はサイドカーの有効な依存条件ではありません。

設定例:

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] の形式で指定)

retries Integer
Job が失敗するまでにリトライする回数。

timeout Duration
Job の実行時間。この時間を超えた場合、Job は停止されて失敗となります。単位には h, m, sが利用できます。

network Map
network セクションは VPC 内の AWS リソースに接続するためのパラメータを持ちます。

network.vpc Map
タスクにアタッチするサブネットとセキュリティグループ。

network.vpc.placement String
'public''private'のいずれかである必要があります。デフォルトではタスクはパブリックサブネットで起動します。

Info

Copilot が作成した VPC の 'private' サブネットを利用してタスクを実行する場合、Copilot は Environment に NAT ゲートウェイを追加します。あるいは Copilot 外で作成した VPC を copilot env init コマンドにてインポートしている場合は、その VPC に NAT ゲートウェイがあり、プライベートサブネットからインターネットへの接続性があることを確認してください。

network.vpc.security_groups Array of Strings
タスクに関連づける追加のセキュリティグループのリスト。Copilot は常にセキュリティグループを含んでおり、環境内のコンテナは互いに通信できるようになっています。

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
ボリュームの設定を指定します。

volume.path String
必須項目。コンテナ内でボリュームをマウントしたい場所を指定します。利用できる文字は a-zA-Z0-9.-_/ のみで、 242 文字未満である必要があります。

volume.read_only Bool
任意項目。デフォルトでは true です。ボリュームが読み込み専用か否かを定義します。 false の場合、コンテナにファイルシステムへの elasticfilesystem:ClientWrite 権限が付与され、ボリュームは書き込み可能になります。

volume.efs Map
より詳細な EFS の設定。

volume.efs.id String
必須項目。マウントするファイルシステムの ID 。

volume.efs.root_dir String
任意項目。デフォルトは / です。ボリュームのルートとして使用する EFS ファイルシステム内の場所を指定します。利用できる文字は a-zA-Z0-9.-_/ のみで、 255 文字未満である必要があります。アクセスポイントを利用する場合、root_dir は空か / であり、auth.iamtrue である必要があります。

volume.efs.auth Map
EFS の高度な認可の設定を指定します。

volume.efs.auth.iam Bool
任意項目。デフォルトは true です。volume の EFS への接続の可否の判定に IAM を利用するかしないかを設定します。

volume.efs.auth.access_point_id String
任意項目。デフォルトでは "" が設定されます。接続する EFS アクセスポイントの ID です。アクセスポイントを利用する場合、root_dir は空か / であり、auth.iamtrue である必要があります。

logging Map
logging セクションには、コンテナの FireLens ログドライバ用のログ設定パラメータが含まれます。(設定例はこちら)

logging.image Map
任意項目。使用する Fluent Bit のイメージ。デフォルト値は amazon/aws-for-fluent-bit:latest

logging.destination Map
任意項目。Firelens ログドライバーにログを送信するときの設定。

logging.enableMetadata Map
任意項目。ログに ECS メタデータを含むかどうか。デフォルトは true

logging.secretOptions Map
任意項目。ログの設定に渡す秘密情報です。

logging.configFilePath Map
任意項目。カスタムの Fluent Bit イメージ内の設定ファイルのフルパス。

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 セクションは Environment の設定を Manifest で指定した値によって上書きできるようにします。 上記の例の Manifest では、 CPU のパラメータを上書きしているので production のコンテナはよりパフォーマンスが高くなります。