login認証コマンド文字列をそのまま実行。これでECRにpushできるようになる。<REPOSITORY_URI>ECRに登録されたことを確認AWSのコンソールを見てもいいが、コマンドでもわかる。セクションがあり、ここで名前などを設定している。基本的に何も変えなくてもいけるはずだが、問題がある場合は変更する。タスク・スケジュールのyamlは修正必要。yamlファイルが4つあるが、ここまで分ける必要はないかもしれない。ネットワーク(network.yaml)VPC、サブネット、セキュリティグループを作成。ゲートウェイやルートテーブルなどなども作成した。あれこれ設定しているが、たぶんこれが必要最小限のはず...。CIDRとかは適当に設定しているので問題があれば変える。ロール(roles.yaml)IAM関連はCloudFormationでなく、コンソールで管理すれば十分な気もする。今回はECSタスクを実行するロールなどの作成で試行錯誤していたらカオスになったのでCloudFormationで管理するようにした。ECSクラスタとLambda(cluster.yaml)ここで作成するLambdaは、ECSタスクを実行するだけのもの。本当はCloudWatchのイベントでECSタスクを実行したいのだが、現在はまだCloudFormationでその設定ができないようなので、間にLambdaを挟んでいる。ECSタスクとスケジュール(task.template.yamlをtasks/mytask.yamlとしてコピーして修正)Parametersセクションを必ず修正する。ECRのイメージ、cronパターン、放送局と録音時間、S3バケットなどを指定する。このyamlファイル1つがcronの1行に対応するイメージ。番組をいくつも録音したいときはその数だけyamlファイルを作る。CPUやメモリは現在最小限にしているが、番組によっては足りないかも。放送局IDはここ参照。ECSTaskSchedulerPatterncronパターンを書く。癖があるのでドキュメント参照。日本時間での記述には対応していない(めんどくせえ)。ECSTaskNameタスク名を書く。なんでもいいが、わかりやすく短い名前にした方がいい。ImageNameECRで登録したイメージ名。S3BucketNameあらかじめ作成したS3バケット名を書く。CLIで実行する場合を書く。コンソール画面からそのままやっても問題ない。いずれにせよ作成する順番はこの通りにすること(ネットワークとロールは入れ替え可能)。ネットワークとロールが作成完了したあとでないとECSクラスタなどを作成できない。以下ではスタック名は適当につけている。file://./cf/network.yamlロールIAM関連なので、コンソール画面で作成するときにはチェックボックスに確認のチェックをする作業がある。CLIでもそれに対応するオプションをつける。file://./cf/tasks/mytask.yaml確認ECSタスクまで作成成功すれば録音できるようになっているはず。指定した時間にECSでタスクが実行され、録音終了すればS3に保存される。ログはCloudWatchで見れる。課題とかLambdaを使わずに済ませたいこれはAWSが対応してくれることを待つしかないようだ。日本時間でcronを書きたいこれもAWSが対応するのを待つしかない(たぶんされない)。現在はUTCで書くしかない。CloudFormationスタック間の情報受け渡し今回はスタックで作成したリソース(たとえばサブネットやロール)をパラメータストアに入れることで、他のスタックから参照できるようにしている。これだとスタックを作り直すと、それに依存するスタックも作り直さないといけない(パラメータストア内の値は、作り直す前のものなので)。ネットワークやロールのスタックを作り直すと、クラスタやタスクのスタックも作り直さないといけない。何かうまい方法があればいいのだが...。あとProjectNameなどを複数のスタックでそれぞれ定義し直しているのも気持ち悪い。CloudFormationスタック分割のベストプラクティスがわからない今回は練習の意味もあり、わりと細かく分割した。本来ならどのくらい粒度で分割するのがいいかよくわからない。ECSタスクは1つ1つ別のスタックにしたが、タスクはすべて1つのスタックにまとめてしまうというのもありだと思う。ECRdockerイメージをECRにpushする方法。CloudFormationCloudFormationテンプレートのサンプル。CloudFormationCloudFormationテンプレートの基本的な枠組みについて。CloudFormationParametersセクションの書き方。CloudFormationResourcesセクションの書き方。CloudFormationリソース一覧。ECSリソースやCloudWatchリソース、IAMリソースなどなど、リソースを書くときはここから探す。CloudFormationテンプレートで使える組み込み関数。使って、サブネットのAvailabilityZoneを設定する例がある。これならAvailabilityZoneを直に指定しなくていい。CLIでCloudFormationを操作する方法。DevelopersIO似たようなことをやってるので参考にした。Qiita似たようなことをやってるので参考にした。Qiitastack間で値を共有する方法。Storeを使う」でやった。CLIでCloudFormationのIAM関連の操作をするとエラーになる。Overflow同上。EventsCloudWatchイベントでのcronの書き方。ServiceECSをスケジュール機能で動かす。DevelopersIOFargateをスケジュール機能で動かす。(コンソール画面での方法。)これをCloudFormationでできればいいのだが、できないよう。OverflowCloudFormationでは、Fargateをスケジュール機能で動かすことができないので、Lambdaと連携して動かそうという話。CloudVPC全般。Cloudインターネットアクセスを有効にする方法。NEologdを使って分かち書きする。インストールがやや面倒。Dockerを使って、手軽に分かち書きするツールを作った。NEologdで分かち書きするディレクトリ構造を保つWord2Vecで全テキストを1つにまとめてしまうときは問題ないが、Doc2Vecとかするときには1ファイルごとに分かち書きしたい。そのときディレクトリ構造を変えられると面倒なので、同じになるようにする。inputに分かち書きしたいファイルをディレクトリごと入れたら、その構造を保ったままoutputに結果が出る。上のツリー構造の通りファイルを入れる。中身はすべて同じで、NEologdにある例と同じにした。donemount/input/1/11/c.txt8月3日に放送された「中居正広の金曜日のスマイルたちへ」(TBS系)で、1日たった5分でぽっこりおなかを解消するというダイエット方法を紹介。