この記事は PMOB Advent Calendar 11日目の記事です.
ECSの練習ということで,『Docker/Kubernetes 実践コンテナ開発入門』の4章 「Swarmによる実践的なアプリケーション構築」の構成を参考にECSに載せてみるということをやってみた.
続きを読むこの記事は PMOB Advent Calendar 11日目の記事です.
ECSの練習ということで,『Docker/Kubernetes 実践コンテナ開発入門』の4章 「Swarmによる実践的なアプリケーション構築」の構成を参考にECSに載せてみるということをやってみた.
続きを読むこの記事は PMOB Advent Calendar 5日目の記事です.
ホントはSlack botの話を書くつもりだったけれど,改善したいところが見つかって準備のために後に回すことにした.
そのかわりというと変だけど,ちょうど JapanContainerDays に参加していたのでそのレポートを公開することにする.
続きを読むイベントの運営やら旅行やらポケモンやらやっていたら全然書いていなかった
それとは別に非公開ブログにSlackの会話を貼り付けるみたいなこともやっていたせいでここの更新が止まっていた感じがしなかった
普段PCで書いていて,スマホで書けないという問題点から先延ばしにしがち
最近iPad Proもキーボードとペン含めで買ったので下書きやメモなんかを簡単に残して更新頻度上げられるといいなぁ
ここ数ヶ月,Twitterをあまり見ていない.
忙しくなったというのもあるし,UserStreamの終了やTweetDeckが以前より重くなったのもあるのだけれど,それだけではない.
いつ見ても他人を批判する話で溢れていることに気がついた.
批判をすることでとにかく「自分は(他人とは違って)優れている」という一種のマウントを毎日目にする.
対象の人をミュートなりすれば良いと言われるかもしれないけれど,とにかく数が多く話題も毎日変わるのでTwitter自体を見ない方が早いなと思っている.
人との繋がりがあるのでやめるわけではないけれど,以前よりだいぶ見る時間は少なくなった.
それに,Twitterは短文や修正が効かないことから議論に向かないプラットフォームだと思う.
言いっ放しで終わることから,せめて自分だけでも他人を批判するようなことは言わず,明るい話題を提供していきたい.
そういうことで,この記事は明るい話題ではないのでTwitterには投稿しないことにする予定.
それと,Twitterをやっていないからといって元気ではないというわけではないのでそこは安心して欲しい.連絡もTwitterが一番早いと思う.
DBのスナップショットを手で作成するときや,CloudFormationでインスタンスを作成するときに,EBSにタグを付け忘れることがある.
そんなときのために,アタッチされているインスタンスに対して自動でタグを付けられるスクリプトを書いた.
import boto3 import os def handler(event, context): synced_tag_keys = os.environ['SYNCED_TAG_KEYS'].split(',') client = boto3.client('ec2') ebs_messages = '' instance_tags_dict = get_instance_tags(client) response = client.describe_volumes() for volume in response['Volumes']: volume_id = volume['VolumeId'] # アタッチされていないEBSボリュームは無視 if not volume_id in instance_tags_dict: continue # ボリュームIDからインスタンスのTagsを取得 instance_tags = instance_tags_dict[volume_id] # ボリュームIDからボリュームのTagsを取得 volume_tags = tags_array_to_dict(volume.get('Tags')) # 同期させたタグを通知するため覚える tags_to_notify = {} for synced_tag in synced_tag_keys: instance_tag_value = instance_tags.get(synced_tag) # 指定したタグがインスタンスに存在しない場合 if instance_tag_value is None: continue # ボリュームにタグがない場合もしくはインスタンスのタグと違う場合,インスタンスのタグに合わせる if volume_tags.get(synced_tag) != instance_tag_value: create_tags(client, volume_id, synced_tag, instance_tag_value) tags_to_notify[synced_tag] = instance_tag_value if tags_to_notify != {}: ebs_messages += volume_id + '(' + str(instance_tags.get('Name')) + '): ' + str(tags_to_notify) + '\n' message = '(' + context.function_name + ') ' + '同期するタグ: ' + str(synced_tag_keys) + '\n' if ebs_messages != '': message += '以下にあるボリュームのタグを同期しました\n' + ebs_messages else: message += 'タグの同期が必要なボリュームはありません' print(message) # volumeIdとTagsの辞書を紐づけた辞書を返す def get_instance_tags(client): response = client.describe_instances() instance_tags = {} for res in response['Reservations']: for instance in res['Instances']: for mapping in instance['BlockDeviceMappings']: volume_id = mapping['Ebs']['VolumeId'] tags_dict = tags_array_to_dict(instance.get('Tags')) instance_tags[volume_id] = tags_dict return instance_tags def tags_array_to_dict(tags_array): if tags_array is None: return {} tags_dict = {} for tag in tags_array: tags_dict[tag['Key']] = tag['Value'] return tags_dict def create_tags(client, volume_id, tag_key, tag_value): client.create_tags( Resources=[ volume_id, ], Tags=[{ 'Key': tag_key, 'Value': tag_value, }] )
EBSボリュームのidからアタッチされているインスタンスを検索して,環境変数SYNCED_TAG_KEYS
で指定したタグを同期させる.
Lambdaでの実行を想定しているので,CloudWatch などで定期実行すれば,自動的に同期することができる.
VTuberの紹介記事を書くために,動画を貼り付けまくっていたらとにかく重くて自分でも開きたくないページになってしまった.
どれだけ動画を埋め込んだのか正確には数えていないけれど,60個以上は埋め込まれていたと思う.
というわけで埋め込みではなくタイトルリンクに全て直してみた.
文章の見通しも良くなったと思う.
埋め込みをやるとサムネイルが表示される上にその場で再生できるのは便利だけれど,とにかく重くなる上に見通しも悪くなるので多く貼り付けるのはやめることにする.
そんな動画埋め込みをタイトルリンクに変更した記事はこちらから.