task run
$ copilot task run
コマンドの概要
copilot task run
はスタンドアロンタスクをデプロイ、実行します。
task run に関連する一般的な手順は次の通りです。
- タスク用の ECR リポジトリとロググループの作成
- コンテナイメージのビルドと ECR へのプッシュ
- タスク定義の作成、または更新
- タスクを実行し、開始されるのを待つ
- タスクが 0 以外の終了コードで終了した場合、その終了コードを転送する
Info
- 同じグループ名のタスクは同じリソースセットを共有します。リソースセットには例えば CloudFormation スタック、ECR リポジトリ、CloudWatch ロググループ、タスク定義などが含まれます。
--env
オプションを利用してタスクを特定の Environment にデプロイする場合、そのタスクはデプロイ先 Environment のパブリックサブネットのみを利用します--default
フラグの利用時に「デフォルトのクラスターが存在しない」旨のエラーが発生した場合、AWS CLI でaws ecs create-cluster
コマンドを実行してから再度copilot run task
コマンドを実行してください。
フラグ
Name Flags
-n, --task-group-name string Optional. The group name of the task.
Tasks with the same group name share the same set of resources.
(default directory name)
Build Flags
--build-context string Path to the Docker build context.
Cannot be specified with --image.
--dockerfile string Path to the Dockerfile.
Cannot be specified with --image. (default "Dockerfile")
-i, --image string The location of an existing Docker image.
Cannot be specified with --dockerfile or --build-context.
--tag string Optional. The container image tag in addition to "latest".
Placement Flags
--app string Optional. Name of the application.
Cannot be specified with --default, --subnets or --security-groups.
--cluster string Optional. The short name or full ARN of the cluster to run the task in.
Cannot be specified with --app, --env or --default.
--default Optional. Run tasks in default cluster and default subnets.
Cannot be specified with --app, --env or --subnets.
--env string Optional. Name of the environment.
Cannot be specified with --default, --subnets or --security-groups.
--security-groups strings Optional. Additional security group IDs for the task to use. Can be specified multiple times.
--subnets strings Optional. The subnet IDs for the task to use. Can be specified multiple times.
Cannot be specified with --app, --env or --default.
Task Configuration Flags
--acknowledge-secrets-access Optional. Skip the confirmation question and grant access to the secrets specified by --secrets flag.
This flag is useful only when 'secrets' flag is specified
--command string Optional. The command that is passed to "docker run" to override the default command.
--count int Optional. The number of tasks to set up. (default 1)
--cpu int Optional. The number of CPU units to reserve for each task. (default 256)
--entrypoint string Optional. The entrypoint that is passed to "docker run" to override the default entrypoint.
--env-file string Optional. A path to an environment variable (.env) file with each line being of the form of VARIABLE=VALUE. Values specified with --env-vars take precedence over --env-file.
--env-vars stringToString Optional. Environment variables specified by key=value separated by commas. (default [])
--execution-role string Optional. The ARN of the role that grants the container agent permission to make AWS API calls.
--memory int Optional. The amount of memory to reserve in MiB for each task. (default 512)
--platform-arch string Optional. Architecture of the task. Must be specified along with 'platform-os'.
--platform-os string Optional. Operating system of the task. Must be specified along with 'platform-arch'.
--resource-tags stringToString Optional. Labels with a key and value separated by commas.
Allows you to categorize resources. (default [])
--secrets stringToString Optional. Secrets to inject into the container. Specified by key=value separated by commas. (default []).
For secrets stored in AWS Parameter Store you can either specify names or ARNs.
For the secrets stored in AWS Secrets Manager you need to specify ARNs.
--task-role string Optional. The ARN of the role for the task to use.
Utility Flags
--follow Optional. Specifies if the logs should be streamed.
--generate-cmd string Optional. Generate a command with a pre-filled value for each flag.
To use it for an ECS service, specify --generate-cmd <cluster name>/<service name>.
Alternatively, if the service or job is created with Copilot, specify --generate-cmd <application>/<environment>/<service or job name>.
Cannot be specified with any other flags.
--acknowledge-secrets-access Optional. Skip the confirmation question and grant access to the secrets specified by --secrets flag.
This flag is useful only when '--secret' flag is specified
実行例
ローカルの Dockerfile を使用してタスクを実行し、タスクの実行後はログストリームを表示します。 コマンド実行後には質問が表示されますので、タスクを実行する Environment を指定します。
$ copilot task run --follow
現在のワークスペース配下の "test" Environment で、"db-migrate" という名前のタスクを実行します。
$ copilot task run -n db-migrate --env test --follow
2GB のメモリ、既存のイメージ、およびカスタムタスクロールを使用して 4 つのタスクを実行します。
$ copilot task run --count 4 --memory 2048 --image=rds-migrate --task-role migrate-role --follow
環境変数を使用してタスクを実行します。
$ copilot task run --env-vars name=myName,user=myUser
指定したサブネットとセキュリティグループを使用して、現在のワークスペース配下でタスクを実行します。
$ copilot task run --subnets subnet-123,subnet-456 --security-groups sg-123,sg-456
コマンドを指定してタスクを実行します。
$ copilot task run --command "python migrate-script.py"
Windows 2019 タスクを最小の CPU とメモリで実行します。
$ copilot task run --platform-os WINDOWS_SERVER_2019_CORE --platform-arch X86_64 --cpu 1024 --memory 2048
Windows 2022 タスクを最小の CPU とメモリで実行します。
$ copilot task run --platform-os WINDOWS_SERVER_2022_CORE --platform-arch X86_64 --cpu 1024 --memory 2048
AWS Secrets Manager のシークレットをコンテナに注入してタスクを実行します。
$ copilot task run --secrets AuroraSecret=arn:aws:secretsmanager:us-east-1:535307839111:secret:AuroraSecret