https://dev.classmethod.jp/articles/vpc-endpoints-for-ecs-2022/
Fargate | EC2の管理不要 |
タスク定義 | タスクの情報。作成しても課金なしなので作ることをためらうな!だが削除できないという欠点あり |
タスク | コンテナ1つに対応する。タスク定義とタスクはクラスとインスタンスの関係。タスク定義はVersion管理されており、更新すると別のタスクが立ち上がり入れ替わる |
サービス | タスクが幾つ必要かとかALBと紐づけるとか。 |
クラスタ | EC2の塊、Fargateだと意識することはない。 |
CMD | Docker起動時に実施するCMD。起動時に指定するものと同じものが定義できると考えるべし。docker exec -it xxx /bin/bashの/bin/bashの部分だ |
ENTRYPOINT | Docker起動時に実施するコマンドではCMDと一緒だが、上書き不可能だったりもできる。ENTRYPOINTを指定したときは、runの後の記述は起動するプロセスを特定する指示としては機能しない |
というかそんな説明で納得できるわけがない。「アプリのコードでAWSリソースへアクセスする場合、タスクロールに権限をつける」「コンテナの設定でAWSリソースする場合はタスク実行ロールに権限をつける」。SecretManagerにアプリコードでアクセスするならタスクロールで、task definitionでSecretManager使うならタスク実行ロール
aws ecs list-task-definitions | タスク定義の一覧 |
aws ecs describe-task-definition --task-definition test-mysql:2 | タスク定義の詳細。このままではRegisterできない。 |
aws ecs describe-task-definition --task-definition test-mysql:2 | jq '.taskDefinition | del(.status, .compatibilities, .taskDefinitionArn, .requiresAttributes, .revision) '
https://dev.classmethod.jp/articles/describe-task-definition-to-register-task-definition/
https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/userguide/using_firelens.html
https://qiita.com/neruneruo/items/b3fb35ad5064c045a15b
"options": { "exclude-pattern": "^.*(hoge|open).*$", "Port": "24224", "Host": "HOST", "Name": "forward" }
指定のロググループ名でストリーム名は「$prefix/コンテナ名称/乱数」となる
"options": { "awslogs-group": "firelens-container", "awslogs-region": "ap-northeast-1", "awslogs-create-group": "true", "awslogs-stream-prefix": "firelens" }
以下のロググループとストリーム名で出力される。これはFluentBitの起動ログである。ngixのログは出ないので注意
log-group/firelens-container/log-events/firelensXXXXX
"options": { "log_group_name": "firelens-testing-fluent-bit", "auto_create_group": "true", "log_stream_prefix": "from-fluent-bit", "region": "ap-northeast-1", "exclude-pattern": "^.*(hoge|open).*$", "Name": "cloudwatch" }
log-group/firelens-testing-fluent-bit/log-events/from-fluent-bitapp-firelens-XXXXX
json-file | 標準 Docker logsで見れる |
syslog | Syslogに転送 |
journald | |
fluentd |
固定で与えるものなので、docker run -it xxx 'コマンド'が実行時にentrypointに加わる
/bin/bash -c | docker run it xxx 'ls' | ls |
/usr/bin/git | docker run it xxx 'log' | git log |
Docker runで何も指定しなかったときの実行コマンド。またはentrypointでのデフォルト引数。
EntryPoint設定値 | CMD設定値 | docker runコマンド | 実際のコマンド |
なし | ls | docker run -it xxx | ls |
/bin/bash -c | ls | docker run -it xxx | ls |
https://y-ohgi.com/2019-aws-handson/datadog/ecs/ https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ecs_task_definition
https://docs.aws.amazon.com/ja_jp/AmazonECR/latest/userguide/ECR_on_ECS.html
ResourceInitializationError: unable to pull secrets or registry auth: The task cannot pull registry auth from Amazon ECR: There is a connection issue between the task and Amazon ECR. Check your task network configuration. RequestError: send request failed caused by: Post "https://api.ecr.ap-northeast-1.amazonaws.com/": dial tcp 3.112.64.212:443: i/o timeout
Drainingに時間がかかるので、コンソール上見えてなくても5分はまつこと。消えきらないとApplyしても同名サービス削除中で失敗する
起動したPublic IPの確認。タスクから詳細(タスク定義ではない!)
https://dev.classmethod.jp/articles/ecs-local/
https://dev.classmethod.jp/articles/aws-devday-2019-fargate-deploy/