AWS/ECS
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
-AWSのコンテナオーケストレーション
*CLI [#ee1dbc66]
-タスク一覧取得
aws ecs list-tasks --cluster XXXX
-タスク詳細
aws ecs describe-tasks
*FARGATE SPOT [#k0ca383a]
-安いので動作検証&開発用途はこれでよし!
-SPOT殺されそうになったら、CLIで変更
aws ecs update-service --cluster ${CLUSTER} --service ${...
*VPC endpoint [#z0f87410]
https://dev.classmethod.jp/articles/vpc-endpoints-for-ecs...
-S3以外は課金発生なのでNG!
*デプロイ戦略 [#d603182d]
-タグのLatest運用はやめましょう!
*用語集 [#wa2e3062]
**ECS独自 [#c0bc6927]
-タスク定義はいくら作っても無料(生成されないので!)
-Fargateにおけるクラスターは単なるサービスと結びつける枠...
-ServiceでタスクをいくつとかALBと組み合わせたりすると課金...
|Fargate|EC2の管理不要|
|タスク定義|タスクの情報。作成しても課金なしなので作るこ...
|タスク|コンテナ1つに対応する。タスク定義とタスクはクラ...
|サービス|タスクが幾つ必要かとかALBと紐づけるとか。|
|クラスタ|EC2の塊、Fargateだと意識することはない。|
**Docker [#f53c5d76]
|CMD|Docker起動時に実施するCMD。起動時に指定するものと同...
|ENTRYPOINT|Docker起動時に実施するコマンドではCMDと一緒だ...
*Task role/ Task Execution Role [#o4efefa4]
-Task RoleはECSに対するIAMロールでEC2のIAMのようにECSから...
-Task Exection Roleはタスクを実行するためのRole。ECR読み...
というかそんな説明で納得できるわけがない。「アプリのコー...
*aws-cli ecs編 [#k173107f]
|aws ecs list-task-definitions|タスク定義の一覧|
|aws ecs describe-task-definition --task-definition test-...
**Blue/Greenの時のために整形 [#t051a8f8]
aws ecs describe-task-definition --task-definition test-...
https://dev.classmethod.jp/articles/describe-task-definit...
*firelens [#aa006800]
-ログドライバをCloudWatch Logs以外に選択できるようになっ...
-ログドライバはECS固有ではなくて、Dockerにある概念。
-Dockerの制約で16kb超えるログは分割される
**ポイント [#x04a0057]
-ログを早出する側はfirelensを指定するだけ
-firelens側ではNameでcloudwatchやforwardを指定する。
https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/usergu...
-terraform
https://qiita.com/neruneruo/items/b3fb35ad5064c045a15b
**Fluentdへ [#h8fc2f9e]
-Optionの設定にFluentdに関係ないものを入れてはいけない。4...
-PortもStringなど特殊なので以下のまま使うこと
-送信先がない場合は、firelensコンテナログにその旨が出る
"options": {
"exclude-pattern": "^.*(hoge|open).*$",
"Port": "24224",
"Host": "HOST",
"Name": "forward"
}
**直接Cloudwatchlogsへ [#eb70c121]
指定のロググループ名でストリーム名は「$prefix/コンテナ名...
https://github.com/aws-samples/amazon-ecs-firelens-exampl...
https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/usergu...
+試しに最小構成のnginx/firelensで実施。
+CloudWatchLogsにロググループ作成権限が必要で、初回は起動...
+起動失敗しても繰り返し上がってくるのでポリシー更新後成功
-firelens側の設定
"options": {
"awslogs-group": "firelens-container",
"awslogs-region": "ap-northeast-1",
"awslogs-create-group": "true",
"awslogs-stream-prefix": "firelens"
}
以下のロググループとストリーム名で出力される。これはFluen...
log-group/firelens-container/log-events/firelensXXXXX
-nginx側の設定。CloudWatchに流すにはNameにcloudwatchと設...
"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-flu...
**参考 Docker標準のログドライバ [#cc65c477]
|json-file|標準 Docker logsで見れる|
|syslog|Syslogに転送|
|journald||
|fluentd||
*CMDとENTRYPOINT [#n847003c]
**ENTRYPOINT [#c5e6089f]
固定で与えるものなので、docker run -it xxx 'コマンド'が実...
|/bin/bash -c|docker run it xxx 'ls'|ls |
|/usr/bin/git |docker run it xxx 'log'|git log|
**CMD [#l4b913ea]
Docker runで何も指定しなかったときの実行コマンド。またはe...
|EntryPoint設定値|CMD設定値|docker runコマンド|実際のコマ...
|なし|ls |docker run -it xxx |ls |
|/bin/bash -c|ls |docker run -it xxx |ls |
*Sidecar [#x1eac69d]
https://y-ohgi.com/2019-aws-handson/datadog/ecs/
https://registry.terraform.io/providers/hashicorp/aws/lat...
*トラブルシューティング [#n23f2328]
**ECRがPullできない。 [#efeeefad]
-LatestのECRをPushしたところ古いバージョンを参照していたT...
-Private Subnetに配置するとインターネットに出られない状況...
-[ is not authorized to perform: ecr:GetAuthorizationToke...
https://docs.aws.amazon.com/ja_jp/AmazonECR/latest/usergu...
***失敗した原因 [#ie9fce6a]
-terraform targetで必要なもののみapplyしていたが、IAMが足...
-それでもエラーにはならず、起動に失敗するのでLogGroupある...
-pull失敗はIAMのエラーであったのでprivateで駄目かどうかは...
-ecs service削除が全く終わらず。手動でstate消して進めたと...
***ECS新しいVPCで起動しない問題 [#u3f2ccae]
-iam_roleが不完全だったので、ちゃんとPolicyがあタッチされ...
ResourceInitializationError: unable to pull secrets or r...
***ALB接続後にTask_definitionを変更できない問題 The conta...
-ALBにコンテナ名が記録されるのでtask defを変更しないほう...
***Service削除に時間がかかる [#g17f05fc]
Drainingに時間がかかるので、コンソール上見えてなくても5...
*Tips [#ad365403]
起動したPublic IPの確認。タスクから詳細(タスク定義ではな...
*ローカルでECSタスク定義実行 [#e9968eff]
-タスク定義はdocker-compose.ymlに相当するが、独自仕様のた...
https://dev.classmethod.jp/articles/ecs-local/
-デプロイ
https://dev.classmethod.jp/articles/aws-devday-2019-farga...
*Secret Managerとの連携 [#z47d52ef]
https://dev.classmethod.jp/articles/try-to-protect-aws-fa...
終了行:
-AWSのコンテナオーケストレーション
*CLI [#ee1dbc66]
-タスク一覧取得
aws ecs list-tasks --cluster XXXX
-タスク詳細
aws ecs describe-tasks
*FARGATE SPOT [#k0ca383a]
-安いので動作検証&開発用途はこれでよし!
-SPOT殺されそうになったら、CLIで変更
aws ecs update-service --cluster ${CLUSTER} --service ${...
*VPC endpoint [#z0f87410]
https://dev.classmethod.jp/articles/vpc-endpoints-for-ecs...
-S3以外は課金発生なのでNG!
*デプロイ戦略 [#d603182d]
-タグのLatest運用はやめましょう!
*用語集 [#wa2e3062]
**ECS独自 [#c0bc6927]
-タスク定義はいくら作っても無料(生成されないので!)
-Fargateにおけるクラスターは単なるサービスと結びつける枠...
-ServiceでタスクをいくつとかALBと組み合わせたりすると課金...
|Fargate|EC2の管理不要|
|タスク定義|タスクの情報。作成しても課金なしなので作るこ...
|タスク|コンテナ1つに対応する。タスク定義とタスクはクラ...
|サービス|タスクが幾つ必要かとかALBと紐づけるとか。|
|クラスタ|EC2の塊、Fargateだと意識することはない。|
**Docker [#f53c5d76]
|CMD|Docker起動時に実施するCMD。起動時に指定するものと同...
|ENTRYPOINT|Docker起動時に実施するコマンドではCMDと一緒だ...
*Task role/ Task Execution Role [#o4efefa4]
-Task RoleはECSに対するIAMロールでEC2のIAMのようにECSから...
-Task Exection Roleはタスクを実行するためのRole。ECR読み...
というかそんな説明で納得できるわけがない。「アプリのコー...
*aws-cli ecs編 [#k173107f]
|aws ecs list-task-definitions|タスク定義の一覧|
|aws ecs describe-task-definition --task-definition test-...
**Blue/Greenの時のために整形 [#t051a8f8]
aws ecs describe-task-definition --task-definition test-...
https://dev.classmethod.jp/articles/describe-task-definit...
*firelens [#aa006800]
-ログドライバをCloudWatch Logs以外に選択できるようになっ...
-ログドライバはECS固有ではなくて、Dockerにある概念。
-Dockerの制約で16kb超えるログは分割される
**ポイント [#x04a0057]
-ログを早出する側はfirelensを指定するだけ
-firelens側ではNameでcloudwatchやforwardを指定する。
https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/usergu...
-terraform
https://qiita.com/neruneruo/items/b3fb35ad5064c045a15b
**Fluentdへ [#h8fc2f9e]
-Optionの設定にFluentdに関係ないものを入れてはいけない。4...
-PortもStringなど特殊なので以下のまま使うこと
-送信先がない場合は、firelensコンテナログにその旨が出る
"options": {
"exclude-pattern": "^.*(hoge|open).*$",
"Port": "24224",
"Host": "HOST",
"Name": "forward"
}
**直接Cloudwatchlogsへ [#eb70c121]
指定のロググループ名でストリーム名は「$prefix/コンテナ名...
https://github.com/aws-samples/amazon-ecs-firelens-exampl...
https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/usergu...
+試しに最小構成のnginx/firelensで実施。
+CloudWatchLogsにロググループ作成権限が必要で、初回は起動...
+起動失敗しても繰り返し上がってくるのでポリシー更新後成功
-firelens側の設定
"options": {
"awslogs-group": "firelens-container",
"awslogs-region": "ap-northeast-1",
"awslogs-create-group": "true",
"awslogs-stream-prefix": "firelens"
}
以下のロググループとストリーム名で出力される。これはFluen...
log-group/firelens-container/log-events/firelensXXXXX
-nginx側の設定。CloudWatchに流すにはNameにcloudwatchと設...
"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-flu...
**参考 Docker標準のログドライバ [#cc65c477]
|json-file|標準 Docker logsで見れる|
|syslog|Syslogに転送|
|journald||
|fluentd||
*CMDとENTRYPOINT [#n847003c]
**ENTRYPOINT [#c5e6089f]
固定で与えるものなので、docker run -it xxx 'コマンド'が実...
|/bin/bash -c|docker run it xxx 'ls'|ls |
|/usr/bin/git |docker run it xxx 'log'|git log|
**CMD [#l4b913ea]
Docker runで何も指定しなかったときの実行コマンド。またはe...
|EntryPoint設定値|CMD設定値|docker runコマンド|実際のコマ...
|なし|ls |docker run -it xxx |ls |
|/bin/bash -c|ls |docker run -it xxx |ls |
*Sidecar [#x1eac69d]
https://y-ohgi.com/2019-aws-handson/datadog/ecs/
https://registry.terraform.io/providers/hashicorp/aws/lat...
*トラブルシューティング [#n23f2328]
**ECRがPullできない。 [#efeeefad]
-LatestのECRをPushしたところ古いバージョンを参照していたT...
-Private Subnetに配置するとインターネットに出られない状況...
-[ is not authorized to perform: ecr:GetAuthorizationToke...
https://docs.aws.amazon.com/ja_jp/AmazonECR/latest/usergu...
***失敗した原因 [#ie9fce6a]
-terraform targetで必要なもののみapplyしていたが、IAMが足...
-それでもエラーにはならず、起動に失敗するのでLogGroupある...
-pull失敗はIAMのエラーであったのでprivateで駄目かどうかは...
-ecs service削除が全く終わらず。手動でstate消して進めたと...
***ECS新しいVPCで起動しない問題 [#u3f2ccae]
-iam_roleが不完全だったので、ちゃんとPolicyがあタッチされ...
ResourceInitializationError: unable to pull secrets or r...
***ALB接続後にTask_definitionを変更できない問題 The conta...
-ALBにコンテナ名が記録されるのでtask defを変更しないほう...
***Service削除に時間がかかる [#g17f05fc]
Drainingに時間がかかるので、コンソール上見えてなくても5...
*Tips [#ad365403]
起動したPublic IPの確認。タスクから詳細(タスク定義ではな...
*ローカルでECSタスク定義実行 [#e9968eff]
-タスク定義はdocker-compose.ymlに相当するが、独自仕様のた...
https://dev.classmethod.jp/articles/ecs-local/
-デプロイ
https://dev.classmethod.jp/articles/aws-devday-2019-farga...
*Secret Managerとの連携 [#z47d52ef]
https://dev.classmethod.jp/articles/try-to-protect-aws-fa...
ページ名: