LoginSignup
3
1

AWS ECS用のデプロイツール ecspressoに入門してみた

Last updated at Posted at 2024-03-08

はじめに

ECS Fargateのデプロイ周りをやってみたので、導入や使い方の手順を備忘録として書きました。今更ながら私はECSを初めて触ったのですが、ECS周りの知識がない方は先にそちらの知識を入れることをおすすめします。

動機

ECS Fargateでサービスを運用していく際に、Terraformでリソース作成、GitHub Actionsでデプロイを行うとすると

  • ECSタスク定義が2重管理になる
  • Terraformで管理する他リソースとコンテナ上のアプリケーションの更新サイクルが異なる

などあり、Terraformの管理とコンテナデプロイを分けたい場合があります。

そこで、ecspressoというツールを使って、コンテナ周りの管理を行います。

導入手順

Macbook Pro M2へインストールする手順になります。

ecspressoのインストール

  • Homebrewでインストール
> brew install kayac/tap/ecspresso
  • asdfでインストール
> asdf plugin add ecspresso
> asdf install ecspresso latest
> asdf global ecspresso latest

AWS Credentialsの設定

ecspressoを使うには、~/.aws/credentials にAWS CLIのプロファイルを作成しておく必要があります。

.aws/credentials
[<プロファイル名>]
aws_access_key_id = <IAMから取得>
aws_secret_access_key = <IAMから取得>
region = <リージョン>

[<プロファイル名>-long-term]
aws_access_key_id = <IAMから取得>
aws_secret_access_key = <IAMから取得>
region = <リージョン>
aws_mfa_device = MFA_DEVICE_ARN(IAMで確認)
> export AWS_PROFILE=<プロファイル名>

使い方

既存のECSクラスタを読み込む

config.yamlに指定した名前でファイルが生成されます。

> ecspresso init --config config.yaml --region ap-northeast-1 --cluster < ECSクラスタ名 > --service < ECSサービス名 >

デプロイ

> ecspresso deploy --config config.yaml

その他TIPS

envfileから値を取得

envmust_envなどのキーを使って環境変数から値を取ってくることができます。

ecs-service-def.json
...
"loadBalancers": [
    {
      "containerName": "{{ must_env `CONTAINER_NAME` }}",
      ...
    }
  ],
...

実行

> ecspresso deploy --envfile <ENVファイル> --config <YAMLファイル>

tfstateから値を取得

設定ファイルにtfstateを置いているURLを追加します。

config.yaml
plugins:
  - name: tfstate
    config:
      url: "s3://hogehoge/test/terraform.tfstate"

以下のように取得。

ecs-service-def.json
...
"networkConfiguration": {
    "awsvpcConfiguration": {
      "assignPublicIp": "DISABLED",
      "securityGroups": [
        "{{ tfstate `AAAA.id` }}",
        "{{ tfstate `BBBB.id` }}",
        "{{ tfstate `CCCC.id` }}"
      ],
      "subnets": [
        "{{ tfstate `XXXX.id` }}",
        "{{ tfstate `YYYY.id` }}",
        "{{ tfstate `ZZZZ.id` }}"
      ]
    }
  },
...

参考

以下のリンクで詳細に書かれています。

3
1
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
3
1