Amazon ECS サービスで複数のロードバランサーを関連付ける

ECSにて実際にコンテナが動作するのはECSタスクという単位ですが、長期的にタスクを運用する場合にはECSサービスを利用することが推奨されています。
サービスでは必要とするタスク数を指定することで常に指定した数にタスクの実行数を保つことができる為保守面でかなり便利です。
そして、オプションとしてロードバランサーを設定することもできサービス管理下で動作しているタスクにトラフィックを分散させることが可能です。

現在マネジメントコンソールからでは、1つのターゲットグループしか指定することができませんがCLIやCloudFormation(以下Cfn)を使用すれば1つのサービスに対して複数(最大5つまでできるようです)のターゲットグループを指定することが可能です。

複数のターゲットグループを関連付けることで何が嬉しいかというと、ドキュメントに記載の例の通りで

  • 外部トラフィックと内部トラフィックで経路は分けたいが1つのコンテナで処理したい
  • 同じコンテナで複数ポートで異なるアプリケーションを提供している

などのケースで1つのサービスだけで実現できることです。

参考サイトではCFnを使って設定しているので今回はCLIを用いて設定します。

サービスを作成する際にload-balancersを複数指定するだけです。

aws ecs create-service \
--cluster {cluster_name} \
--service-name {service_name} \
--task-definition {task_defintion_arn} \
--load-balancers '[{"targetGroupArn": "TARGET1_ARN", "containerName": "CONTAINER1", "containerPort": 80}, {"targetGroupArn": "TARGET2_ARN", "containerName": "CONTAINER2", "containerPort": 8080}]' \
--network-configuration '{"awsvpcConfiguration": {"subnets": ["SUBNET1_ID", "SUBNET2_ID", "SUBNET3_ID"], "securityGroups": ["SECURITY_GROUP1_ID"]}}' \
--desired-count {task_count} \
--launch-type FARGATE \
--platform-version LATEST \
--enable-execute-command \
--scheduling-strategy REPLICA

昔作ったAWS CodePipelineでGitHub接続エラー

CodePipelineのSourceステージでGitHubと接続する場合には現在「GitHub(バージョン1)」と「GitHub(バージョン2)」が存在する。
バージョン1の方は既に推奨されていない為今から接続する際はバージョン2を選択すると良い。

過去に作成したCodePipelineでバージョン1で認証していたところをバージョン2に変更しようとしたら接続エラーになった。

Additional Information: Unable to use Connection: arn:aws:codestar-connections(略). The provided role does not have sufficient permissions.

ドキュメントによると2019年12月18日より前に作ったCodePipelineの場合サービスロールにパーミッションを追加が必要あることが記載されていた。

If your CodePipeline service role was created before December 18, 2019, you might need to update its permissions to use codestar-connections:UseConnection for AWS CodeStar connections.

GitHub connections - AWS CodePipeline

CodePipeline作成時に指定するサービスロール(デフォルトだとAWSCodePipelineServiceRole-{region}-{Name})の許可ポリシーに追加してあげれば良い。

{
    "Effect": "Allow",
    "Action": [
        "codestar-connections:UseConnection"
    ],
    "Resource": "resource_ARN"
},
Identity and access management for AWS CodePipeline - AWS CodePipeline

映画「トップガン」見た

今週のハンガリー🇭🇺GPが終わるとF1も夏休みに入り土日に少し時間の余裕ができる。
この機会にこれまで追いかけて来れなかったコンテンツを追いかけることにした。
要するに夏休みの宿題。

媒体に問わずおすすめコンテンツを教えてもらった中で最初に見たのは映画「トップガン」。

もちろん初見で作品に対する知識はトム・クルーズが主演ということと戦闘機がテーマというくらい。

最新作「トップガン・マーヴェリック」が公開中だが、最新作を楽しむ為には「トップガン」の履修が必要とのこと。
「トップガン・マーヴェリック」の評判を目にすると好評のものが多かったし、なにより皆のトム・クルーズへの解像度の高い反応に驚いていた。

「トップガン」は現在プライム・ビデオで配信中。

感想など

トム・クルーズ演じるマーヴェリック。
結果は出すがルールは守らない。成績はクーガー、アイスマンに首位を譲り2位。
この2位というのがすごいいい味出している感じ。
グースとのコンビはとても好きだったのでグースの死については非常に悲しい。

父の死の真相がかなり重要な伏線だと思っていたら割とあっさり明かされる。

チャーリーとの恋愛については、言ってしまえば教師と生徒の恋愛なんで
戦闘機が主テーマのこの作品でそんなことするなんて思ってなかった。
チャーリーが惚れるまでのところもちょっと行間読まないと納得できないけど
細かいことはいいんだよ。という感じがする。

この作品憎たらしいやつが全然いない。有望株だったアイスマンも最後に寝返りやがって...

物語はマーヴェリックがトップガンの教官を目指すことを告げるところで幕を閉じる。

ここからはこの作品外の話になるが、
「トップガン・マーヴェリック」は36年振りの続編でトム・クルーズが続編制作権を持っていて
トム・クルーズが納得できる続編出せるタイミングで出した続編。

トム・クルーズがスターダムにのし上がったこの作品の制作権を
ずっと譲らなかったその事実だけでもうエモい。

そして教官になったマーヴェリックを主役にした物語。こんなの絶対面白いに決まってる!

ご時世を鑑みて今すぐ映画館に行って見ようとは思わないけどいずれは絶対「トップガン・マーヴェリック」見る!

その他

視聴したのは吹替版だったが吹替版が不評なことについてはある程度は同意するが見るのをやめようとまでは思わなかった。
ただ、明らかに浮いているのは事実だと思う。