2020/12に書こうと思って温めていたけど、生ぬるくなってしまった・・・が、せっかくなので書いておく。
概要
お仕事でFargate上で動かすアプリを開発中に、一時的にローカルに巨大なファイルを置く必要が生じました。
デフォルトのタスクストレージは20GBで、これでは不足します。
この時点(2020/11下旬)で既にFargateではEFSを利用可能となっていました。
さっさとやっつけてしまえそう。
CDKでは・・・
アプリはCDKで構成しており、当然EFSマウントもCDKで実施したいのですが、どうやら雲行きが怪しく。
CDK及びCloudformationではまだ、インフラコードからFargateとEFSの連携ができないため、手で作成する必要があります。
ええぇ。手動はイヤや。
この記事でもCDKの"正規の"機能として対応されていないから、ということで、カスタムリソースでカスタムタスク定義を登録するようになっています。
上記ブログ著者のGist
カスタムリソースもやりたくない。
CDKは開発が活発なので、ちょっと待てば対応されるだろうと期待し、一旦このタスクは保留とし、時々CDKの更新情報を眺めることにしました。
#待ってないでコントリビュートしろ!
解決
2日おきぐらいに更新情報をチェックしていたのですが、バージョンは上がっていくけど、該当しそうな更新は見当たらない。
これは、やはりカスタムリソースしか残されてないのだろうか・・・
ところが、ある日APIリファレンスを眺めていた時(2020/12中旬)に、ふと気づいてしまいました。
「あ、これやん」
CDK v1.76の時点で、[前掲のGist]だとcustomTaskDefinitionJson
として用意しているカスタムタスク定義を、普通にecs.FargateTaskDefinition
で作成できました。
const taskDefinition = new ecs.FargateTaskDefinition(this, 'TaskDefinition', {
cpu: 2048,
family: fargateService.taskDefinition.family,
memory: 8192,
volumes: [volumeConfig]
})
多分、volumes
にefsVolumeConfiguration
があることに気づいていなかっただけ、もしくは、更新を見逃していたか、ってとこだと思われ。
#前者が濃厚
デプロイして無事にマウントを確認できたので、オッケーです。