「天気の子」観た

何だかんだ楽しんで観たとは思うけど、「自分の身の周りに存在するもの」がちょこちょこ出てきて現実に引き戻されてしまうのが辛かった。ローソンとか。たまに出てくるくらいなら良いけど、自分の感覚では多すぎた。

 

そういえば「君の名は。」観た後に新開誠作品ちゃんと観るかって考えてたけど結局観てない。今回も同じように観るかって考えてるけど、結局また観ない気がするな...

「DNSがよくわかる教科書」を読んだ

最近DNSを触ったり、同僚の作業のレビューをする機会が増えてきたものの、自分の知識が曖昧な部分も結構あったので読んだ。

DNSがよくわかる教科書

DNSがよくわかる教科書

DNS自体は知っているものの、僕がDNSの設定を触ったのは10年以上前で、そのときもbindの設定を見よう見まねで書いて・・・みたいな感じだったので、基礎から勉強しないとなというのと、同僚から良い本だとお勧めされたのがそもそもの始まり。「よくわかる教科書」と書いてあるだけあって、DNSの基礎から権威サーバーの設定方法・digの使い方・DNSへの代表的な攻撃、権威サーバーの移転等の実践的な内容までカバーされていて、「なんとなく知っているけど、いざ触ろうとするとよくわからない」みたいな人にはいい本だと思う。

最近だとクラウドのマネージドサービスを使うことも増えているので、自分でbindとかunbound(これは最近知った)の設定書くこともしかしたらほとんど無いのではない気もするけど、基礎的な知識に関しては今でも十分使えると思う。この本ですべてがカバーできているわけではないが、アプリケーションを触りつつこういうのも触らないといけない、という状況になった場合には読んでみると良いと思う。サッと読めるし。

子供が生まれた

日付的にはもう昨日なのだけど、子供が生まれた。

子供はあれよあれよという間に生まれた。実は予定日は来週で、今日も普通に仕事をしていたところ会社の昼休み終わったくらいに妻から「陣痛が始まったぽいので病院に行く」という連絡がきて、全く考えてなかったので動揺してしまった。一緒に行ったほうがいいかなと聞くと「病院行ってみてもらってから連絡する」と言われたので、少し落ち着かないなと思いつつ普通に仕事を続けていたのだけど、20分後くらいに「もう生まれるらしいから来てほしい」という電話がかかってきて慌てて会社を出てタクシーに乗って病院に向かう。

タクシーの中ではまあまあ気持ちに余裕があったけど、病院に着いて分娩室に入ったらすでに頭だけ出ていて、それを見た瞬間からボロボロと泣いてしまった。自分でもまさか泣くと思っていなかったけど、びっくりするぐらい泣いてしまって、助産師さん達に「お父さんが一番泣いてる」と言われてしまう。分娩室に入った直後くらいに生まれてきてくれたので間に合ってよかった。最初に連絡もらってからここまでで1時間経ってない。とにかく考えていたよりもすばやく生まれてきてくれたのであまり心の準備ができなかった。

生まれてきた赤ちゃんが自分と血がつながっている、というのは正直実感がないのだけど、生まれてきた子が元気に育つように支えていきたい。

AWS Step Functionsを利用してAWS BatchやFargateのタスクを起動する

この記事は、はてなエンジニア Advent Calendarの22日目の記事です。

qiita.com

最近は仕事で AWS Batch に触れることが多くなってきました。また、ちょっとしたスクリプトならFargate のほうが便利かもしれないということを同僚に教えてもらい、Fargateを利用してcronで実行している処理を置き換えられないか、ということを個人的に検討しています。今日はそこで得たちょっとした便利情報をご紹介しようと思います。

Step Functionsを試す

AWS BatchにしてもFargateにしても、成功/失敗のハンドリングが少し難しいという課題があると考えていました。AWS Batchは24時間後にはジョブの実行結果がコンソール上から消えてしまいます。Fargateも、タスク終了後短期間でタスク一覧から消えてしまい、どこかに通知していない限りは「ジョブ/タスクが成功したかどうか」すら分からなくなってしまいます。そんな折、AWS Step Functions(以下SFn) が最近AWS Batch/Fargate に対応したというのを見たのでそれを利用してみることにしました。それぞれのステートマシン定義は以下の通りです

AWS Batch

  {
    "Comment": "AWS Batchを起動する",
    "StartAt": "Submit Batch Job",
    "States": {
        "Submit Batch Job": {
            "Type": "Task",
            "Resource": "arn:aws:states:::batch:submitJob.sync",
            "Parameters": {
                "JobName": "sample-job",
                "JobDefinition": "<JOB_DEFINITION_ARN>",
                "JobQueue": "<JOB_QUEUE_ARN>"
            },
            "End": true
        }
    }
}

JobDefinitionに実行したいジョブのジョブ定義のARNを、JobQueueにジョブ定義を実行するジョブキューのARNを設定します。また、Resourceのリソースネームに.syncをつけることで、タスクが完了するまで待機するようになります

Fargate

{
    "Comment": "Run Fargate Task Statemacine",
    "StartAt": "Run Fargate Task",
    "TimeoutSeconds": 3600,
    "States": {
        "Run Fargate Task": {
            "Type": "Task",
            "Resource": "arn:aws:states:::ecs:runTask.sync",
            "Parameters": {
                "LaunchType": "FARGATE",
                "Cluster": "<CLUSTER_ARN>",
                "TaskDefinition": "<TASKDEFINITION_ARN>",
                "NetworkConfiguration": {
                    "AwsvpcConfiguration": {
                        "Subnets": [
                            "subnet-id"
                        ],
                        "AssignPublicIp": "ENABLED"
                    }
                }
            },
            "End": true
        }
    }
}

ClusterにECSクラスターのARNを、TaskDefinitionにタスク定義のARNを設定します。また、Fargateの場合実行時にAwsvpcConfigurationの設定が必須です。こちらもBatch同様、Resourceのリソースネームに.syncをつけることで、タスクが完了するまで待機するようになります。

気に入っているところ

  • バッチジョブやFargateタスクの成否のハンドリングがしやすくなった
  • バッチジョブやFargateタスクの実行についても、ステートマシンを起動するだけで実行できる
    • AWS BatchやFargateの実行」を「SFnの実行」に統一できる
  • SFnの実行履歴が1000件まで保存できる
  • BatchやFargateタスクの実行結果は割と短い期間で消えてしまうが、SFnを通すことで、実行結果だけあとで知りたいというようなときに実行履歴を見ることで事足りる場合もある

SFnのステートマシンはCloudWatch Eventsから時刻指定で起動することも可能なので、それを利用してcronのような使い方もできます(AWS Batchのジョブ/Fargateタスクともに CloudWatch Eventsから直接実行することも可能です)。実際に、一部バッチ処理をそのようにして定時実行するようにしています。実行の成否がコンソール上にまとまっているためとても便利です。SFnなので、タスクの実行後に成功通知をLambdaを使ってSlackに通知するということも当然可能です。

ということで、AWS BatchやFargateでバッチ処理を実行するような場合にちょっと便利になるようなTipsのご紹介でした。他にもいろいろ方法はあるかと思いますが、手軽に導入できるので気に入っています。タスクが少し扱いやすくなるので、AWS BatchやFargateでバッチ処理を実行しているような方は一度試してみてはいかがでしょうか?

世間のクリスマス感も高まってきましたね。はてなエンジニア Advent Calendar も残すところ3日となりましたが、引き続きよろしくおねがいします!