0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【AWS】AWS CLIからECSタスクにパッチを適用する

Last updated at Posted at 2025-04-16

はじめに

4/15に、AWS東京リージョンで障害があったそうですね。
https://news.yahoo.co.jp/articles/7dc0aa344ae5bf2f52ccb5c6140e07ca3367c396

幸い自分がいる案件では、今回の障害による影響はありませんでした。
一応Health Dashboardを確認してみると、以下のような通知が届いていました。
image.png
image.png

なんか英語でやいのやいの書いてありますが…要約すると↓

「Fargate使ってるヤツらー!障害起きたから、4/17の11時(JST)にタスクのメンテナンス実行するぞー。
11時にメンテされるの嫌なヤツらはあらかじめ以下に書いてあるコマンドをAWS CLIから叩いて、タスクを新しく起動しとけよなー。」

的な感じのことが書いてありました。
一応原文には午前2時って書いてありますが、JSTの場合はプラス9時間なので昼間の11時なわけです。思いっきし仕事してる時間ですね。そんな時間にタスクのアップデートが入るのはまあさすがに困ります。

なので、あらかじめCLIからコマンド叩いて、予告された時間より前にアップデートを終わらせておくことにしました。と言っても、AWS CLIは使ったことがなかったので、実際にCLIの導入からパッチ適用までの一連の流れを、備忘録も兼ねて記事にすることにしました。

AWS CLIの導入

AWS初学者の自分のイメージでは、てっきりマネジメントコンソール上にターミナルみたいなのがあって、そこから直接コマンドを打てるものだと思ってましたが、どうやら違うみたいです。

流れとしては、

AWS CLIをインストールする

マネジメントコンソールから、CLIを叩く用のIAMユーザーを作成する

コマンドプロンプトからCLIの設定を行う

Health dashoboardに書いてあったパッチ適用コマンドを叩く

といった感じです。

AWS CLIのインストール

まずはここからAWS CLIをインストールします。
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/getting-started-install.html

これをインストールすることで、コマンドプロンプトからAWS環境に向けてコマンドを叩けるようになります。

CLI叩く用のIAMユーザーを作成

マネジメントコンソールに、ルートユーザーもしくはIAMユーザーを作成できる権限を持つユーザーでログインします。

[IAM]にアクセスし、画面左側のメニューから[ユーザー]を選択します。
image.png

[ユーザーの作成]から、ユーザーの詳細の設定を行います。
image.png

[許可のオプション]は[ポリシーを直接アタッチする]を選択し、許可ポリシーにECS関連のポリシーを選択します。
今回はAmazonECS_FullAccessを選びました。最小権限の原則的にはよくないかもしれませんが…。
image.png

上記設定を終えて[ユーザーの作成]を実施することで、IAMユーザーが作成されます。

次に、IAMのユーザー一覧から作成したユーザーの詳細を開き、アクセスキーIDシークレットアクセスキーを取得します。

[アクセスキーを作成]から、ユースケースは[コマンドラインインターフェース(CLI)]を選択します。
image.png

ここで取得したアクセスキーは、CLIからコマンドを叩くのに必要になるのでどっかにメモしといてください。できればSecret Managerとか使えるとよいです。

コマンドプロンプトでのAWS CLI設定

コマンドプロンプトを開き、以下のコマンドを入力します。

aws configure

コマンド実行後、以下のようなプロンプトが表示されます。
ここで、先ほど取得したアクセスキーIDとシークレットアクセスキーを入力します。
Default region nameにはap-northeast-1(東京リージョン)を、Default output formatにはjsonを入力します。

AWS Access Key ID [None]: <your-access-key-id>
AWS Secret Access Key [None]: <your-secret-access-key>
Default region name [None]: ap-northeast-1
Default output format [None]: json

設定が完了したら、以下コマンドを入力します。
設定されたIAMユーザー情報が表示されたら準備完了です。

aws sts get-caller-identity

ECSパッチ適用コマンドを叩く

Health Dashboardにあったパッチ適用コマンドを叩きましょう。

aws ecs update-service --cluster <cluster-name> --service <service-name> --force-new-deployment

一応補足すると、上記コマンドはECSサービスのデプロイメントタイプが「Rolling Update」の場合に使えるコマンドです。
そうじゃない場合は別のコマンドを叩く必要があります、詳しくは調べてください。

コマンドを叩いて、以下のような実行結果になったら成功です。

{
    "service": {
        "serviceArn": "arn:aws:ecs:ap-northeast-1:○○",
        "serviceName": "○○",
        "clusterArn": "arn:aws:ecs:ap-northeast-1:○○",
        "loadBalancers": [
            {
                "targetGroupArn": "arn:aws:elasticloadbalancing:ap-northeast-1:○○",
                "containerName": "○○",
                "containerPort": <ポート番号>
            }
        ],
        "serviceRegistries": [],
        "status": "ACTIVE",
        "desiredCount": 2,
        "runningCount": 2,
        "pendingCount": 0,
        "capacityProviderStrategy": [
            {
                "capacityProvider": "FARGATE",
                "weight": 1,
                "base": 0
            }
        ],
        "platformVersion": "LATEST",
        "platformFamily": "Linux",
        "taskDefinition": "arn:aws:ecs:ap-northeast-1:○○",
-- More  --

一応、マネジメントコンソール上からもECSサービスを確認し、ちゃんとタスクが実行されているかも確認するとよいでしょう。

おわりに

正直CLIはなんか苦手意識があって毛嫌いしていましたが、冷静に考えればこんな文字列を叩くだけでアップデートできるのは便利かもしれないですね。
上司からも「CLIが使えればAWSの世界が広がる」と言われたので、少しづつ使えるようになっていきたいなと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?