はじめに
※2023年10月3日の話です
AWS Copilotは手動でAWSのサービスを連携させる必要がなくAWSのサービスを連携させることができます.
manifestファイルに使いたいリソースについて書いておいてcopilot svc deploy
とかってコマンド叩くと全部組んでくれます.
平易な言葉で書こうと思いましたが,違ったらごめんなさい.雑魚なので許してください.
そんなこんなで使っていたのですが,CPUとmemoryの設定が公式ドキュメント通りにしてもうまく行かなかったので調査してみました.
※これが自分の環境だけなのか,他の全ての環境に当てはまるのかはわかりません.
追記
自分が利用していたのが,Request-Driven Web Service
だったのですが,公式ドキュメントにCPUとmemoryの選択肢が載っていました.さすがAmazonさん.
やったこと
manifestファイルのCPUとmemoryの値を変更させながらデプロイして,デプロイがうまくいくかどうか試しました.
結果はこの通りです.
※CPU=8192以上は個人的に使わないなと思ったのでテストしていません.
CPU | memory | 結果 |
---|---|---|
256 | 512, 1024 | OK |
512 | 512 | NG |
1024 | OK | |
2048, 3072 | NG | |
1024 | 1024 | NG |
2048, 3072, 4096 | OK | |
6144 | NG | |
2048 | 2048, 3072 | NG |
4096, 6144 | OK | |
8192, 10240 | NG | |
4096 | 8192, 10240, 12288 | OK |
14336, 16384 | NG |
CPU対memory=1:2~4という比率でデプロイできました.
法則性だけで言えば,CPUの2倍のmemory量に設定すれば動く,くらいですかね.
ちなみに,14336, 16384はそもそも書き方が違う,というエラーが返ってきました.
エラー文を記録しておけばよかった.
そもそものmemory選択肢としては512 / 1024 / 2048 / 3072 / 4096 / 6144 / 8192 / 10240 / 12288
しかないようです.
チンパンプレーで存在しないmemory=5120
に設定したときに吐き出されたエラー文がそう言っていました.
Resource handler returned message: "1 validation error detected: Value
'5120' at 'instanceConfiguration.memory' failed to satisfy constraint
: Member must satisfy regular expression pattern: 512|1024|2048|3072|4
096|6144|8192|10240|12288
おわりに
Copilotの制約なのか,manifestファイルの他の設定値の制約なのか,アプリの内容の制約なのか,2023年10月3日の仕様なのかは謎のままです.
詰まっている人がいれば何か参考になりますように.