☕️
ecspresso advent calendar 2020 day 18 - appspec
Amazon ECS のデプロイツールである ecspresso の利用法をまとめていく ecspresso Advent calendar 18日目です。
appspec
コマンド
CodeDeploy AppSpec ファイルを生成する AppSpec ファイルは、デプロイを管理するために CodeDeploy によって使用される YAML 形式または JSON 形式ファイルです。
ecspresso appspec
は CodeDeploy AppSpec ファイルを生成し、標準出力に YAML 形式で出力します。
ecspresso deploy
で CodeDeploy によるデプロイを行う場合は、自動的に内部で AppSpec ファイルを生成しその内容で CodeDeploy のデプロイメントを作成するため、appspec
コマンドを使用する必要はありません。
デプロイの事前準備 (タスク定義の登録など) までは ecspresso で行うが、実際の CodeDeploy でのデプロイ実行は ecspresso 以外で開始したい場合には、次のような手順で AppSpec ファイルを利用します。
-
ecspresso register
でタスク定義の登録を行う -
ecspressp appspec
で AppSpec ファイルを生成する - AppSpec ファイルを S3 にアップロードする
- S3 の AppSpec を指定して CodeDeploy でデプロイメントを作成する
appspec
コマンドの実行例
$ ecspresso --config config.yaml appspec
version: "0.0"
Resources:
- TargetService:
Type: AWS::ECS::Service
Properties:
TaskDefinition: arn:aws:ecs:ap-northeast-1:123456789012:task-definition/first-run-task-definition:14
LoadBalancerInfo:
ContainerName: nginx
ContainerPort: 80
PlatformVersion: 1.3.0
NetworkConfiguration:
AwsvpcConfiguration:
AssignPublicIp: ENABLED
SecurityGroups:
- sg-043eab2d606362f03
Subnets:
- subnet-0089ed3e1bdff1fc9
- subnet-0d750adbd139f411d
appspec
コマンドのオプション
usage: ecspresso appspec [<flags>]
output AppSpec YAML for CodeDeploy to STDOUT
Flags:
--help Show context-sensitive help (also try --help-long and
--help-man).
--config=CONFIG config file
--debug enable debug log
--color enalble colored output
--task-definition="latest" use task definition arn in AppSpec (latest, current or Arn)
--task-definition
AppSpec ファイルに出力する TaskDefinition:
を指定します。デフォルトは latest
です。
-
latest
: 現在 ECS に登録されている最新の(リビジョンが一番大きい)タスク定義 -
current
: 現在 ECS サービスが使用しているタスク定義 - タスク定義の Arn: 直接 ARN を指定できます
arn:aws:ecs:{AWS_REGION}:{ACCOUNT_ID}:task-definition/{TASK_DEFINITION_NAME}:{REVISION}
19日目は、定義ファイルで Terraform の tfstate ファイルを読み込んで使用する方法を説明します。
Discussion