投稿者: sumito.tsukada

  • Amazon Rekognition Video について

    あまり馴染みのないサービスの一つ Amazon Rekognition Video について調べた。

    Amazon Rekognition Video は ライブビデオストリーミング をリアルタイムで解析して、顔を検出し、判別することができる。

    ユースケース

    • Amazon Kinesis Video Streams のストリーミングデータの処理
      Rekognition Video に入力し、最大数千万もの顔データと照らし合わせて、超低レイテンシーでの顔認識を行うことができる。
    • バッチ処理
      Amazon Rekognition Video では Amazon S3 に保存した録画データを解析することもできる。

    アクセス方法


    Amazon Rekognition には、Amazon Rekognition API、AWS マネジメントコンソール、および AWS コマンドラインインターフェイス (CLI) を使用してアクセスすることが可能。

    コンソール、API、CLI では、Rekognition API を使用して、ラベル検出、顔分析、顔照合、顔検索を行える。

    利用方法

    AWS Lambda には Rekognition 用の設計図が用意されている。

    それを使うことで s3 や DynamoDB といった AWS データストアでのイベントに基づいて画像分析をすることができる。

    Amazon Rekognition Videoは、Amazon Kinesis Video Streamsを使用してビデオストリームを受信および処理する。

    分析結果の利用方法

    分析結果は、Amazon Rekognition VideoからKinesisデータストリームに出力され、クライアントアプリケーションによって読み取られる。

    Amazon Rekognition Videoは、ストリーミングビデオの分析を開始および管理するために使用できるストリームプロセッサ(CreateStreamProcessor)を提供する。 

    分析結果はKinesis Data Streams Consumerに読み取られる。(Kinesis Data Streams Analyticsではない)

    また、本題とは異なるが、以下のサービスについて補足

    Amazon Kinesis

    リアルタイムのストリーミングデータを簡単に収集、処理、分析できる。

    コスト効率よくストリーミングデータを処理するための重要な機能を提供。

    設定としては、Kinesis Agent を設定してデータを収集し、

    Amazon Kinesis Data Firehoseを使用してエンドツーエンドのデータ配信ストリームを作成する。

    その上で、

    Amazon Kinesis Data Analytics で SQL クエリを使用してリアルタイム分析を実施することができる。

    Amazon Kinesis Data Streams

    Amazon Kinesis Data Streams によって処理されたレコードはダッシュボードに送信されて、さまざまなAWSサービスへのデータ送信に使用できる。

    分析するアクションとして、アプリケーション側にAmazon Kinesis Client Library(KCL)ワーカーを組み込んで行動分析を実施することができる。

    また、Amazon Kinesis Data Streamsアプリケーションは、Amazon Kinesisストリームからデータをデータレコードとして読み取る。

    これらのアプリケーションはAmazon Kinesis Client Library(KCL)を使用することでAmazon EC2インスタンスで実行するデータ分析アプリケーションを作成することができる。

    Amazon Kinesis Data Analytics

    Amazon Kinesis Data Analytics は、ストリーミングデータの分析に利用するサービス。Amazon Kinesis Data Analytics を利用すると、ストリーミングアプリケーションを構築し、管理し、AWS のサービスと統合する作業がシンプルになる。

    Amazon Kinesis Data Analyticsを利用して、ストリーミングアプリケーションを構築し、管理し、AWS のサービスと統合する作業が実施できる。

    SQL クエリを使用してリアルタイム分析を実施することができる。

  • s3のファイルのバージョニングを有効化した際の挙動

    s3 のバージョン管理を有効した場合の振る舞いについて整理する。

    そもそもバージョニングとは、同じバケット内でオブジェクトの複数のバージョンを保持する手段。

    バージョニングを使用して、Amazon S3 バケットに格納されたあらゆるオブジェクトのあらゆるバージョンを、格納、取得、復元することができるようになる。

    バージョニングを使用すれば、アプリケーション障害からも、簡単に復旧でき流。

    S3バージョン管理を有効にすると、既存のファイルはすべて、バージョンIDがNULLになる。

    バージョン管理後に追加されると、そのファイルの バージョンIDは ランダム値が割り振られる。

    公式ドキュメントは以下の通り

    https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/Versioning.html

  • s3内の特定ファイルを特定の国に対して利用できないようにする際に考えること

    以下の2つの要件を満たしたい時がある

    • 特定の国に対して利用できないようにしたい。
    • コンテンツを世界中のユーザーに低レイテンシーで配信したい。

    CloudFront ウェブディストリビューションを活用する。

    https://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/DownloadDistS3AndCustomOrigins.html

    CloudFront ウェブディストリビューションを使うことで配信しているコンテンツに対し特定地域のユーザーによるアクセスを回避することができる。地域制限を使用するには、次の 2 つの方法が考えられる。

    ・CloudFront の地理制限機能の使用
    エッジロケーションによる地理的制限を有効化。

    ディストリビューションに関連するすべてのファイルへのアクセスを制限し、国レベルでアクセスを制限する場合は、この方法を使用する。 

    これをすると、S3 の公開しているバケットの中のファイル全てに制限をかけることができる。特定のファイルにのみ制限をかけることはできない。

    ・サードパーティの位置情報サービスの使用

    上記 CloudFront の地理制限機能を使って要件を満たすことができない場合は、サードパーティのツールを探すことになる。

    なお、Lambda@エッジを利用した制限アルゴリズムを連携するといった機能は現状存在しない。

  • VPC内インスタンスからインターネットに対して特定ドメイン以外のアウトバウンド接続を拒否する際に考えること

    ネットワークACLはURLに基​​づいてリクエストをフィルター処理できない。

    プロキシサーバーを利用して制御することで回避が可能。

    プロキシサーバーはクライアントからの要求をフィルターし、製品の更新に関連する要求のみを許可するため、製品の更新以外のすべての要求のフィルターすることができる。

    プロキシサーバーとは、内部ネットワークのセキュリティを損なわずにネットワークの外部と接続できるようにする、LAN 上のコンピューターを指す。

    プロキシサーバーは内部コンピューターのアイデンティティを保護するために一般的に使用される。

    プロキシサーバーは、内部ユーザーおよびサーバーからの要求の仲介役として機能して、多くの場合はコンテンツをキャッシュして後続の要求を高速化する。

    AWSではVPNまたはAWS Direct Connect接続を使用して既存の企業プロキシサーバーインフラストラクチャを活用したり、内部ELBを備えたSquidプロキシサーバーなどのソフトウェアを使用してAWSでフォワードプロキシファームを構築したりすることが一般的なユースケースになる。

  • 1歳児とバギーラン(ベビーカーラン)を楽しむ

    1歳児とバギーラン(ベビーカーラン)を楽しむ

    独身の時や、結婚当初のまだ子供がいない時期であれば比較的走る時間を確保することはできたが、子供が生まれると走る時間を確保がとにかく難しくなる。

    自分の時間も大事だし、子供との時間も大事。

    どのように両立しようか考えたところ、バギーラン(ベビーカーラン)という結論に辿り着いた。

    バギーラン(ベビーカーラン)とは

    昔ハワイに旅行に行った時、ワイキキビーチをベビーカーを押しながら走るランナーを見た。それも1組、2組ではなく、結構いた。帰国後調べてみたらバギーランという名前が付けられて定着している事を知った。なんでも大会まであるそう。

    日本でやっている人いるの?

    結論から言うとほとんどいない。自分は1年近くやっているが未だ同じようにベビーカーを押して走っている人にすれ違ったことがない。

    自分なりに考えてみると、安全上の理由と、他の人からの目線、必要な情報がインターネットにほとんど公開されていない。

    日本でバギーラン(ベビーカーラン)をやる

    まずはバギーを買う

    バギーに乗せるのは他でもない最愛の我が子である。そのため、安全は絶対だ。

    私は AirGuggy COCO というバギーを愛用しており、普通のベビーカーを持っていない。

    これでバギーランをする際のメリットとして以下があげられる。

    • 子供のベルト(ハーネス)がしっかりしていて、落車する危険性が低いと言う点。
    • 安定感のある3輪タイヤ。このタイヤが多少の段差を吸収してくれるという点。
    • ブレーキがついているという点。

    安全性に加え、大容量の収容スペースもあるので着替えなどもいれることができる。

    持ち物

    • 自分の飲み物
    • 子供用の飲み物、お菓子
    • サイフ
    • 着替え
    • オムツなど

    この程度。途中公園で遊んだりすることもあるので着替え用の Tシャツは多めに持つことが多い。

    子供用のお菓子はあくまでも子供がお腹が空いた際の緊急用として。

    どこを走るか

    絶対に確保したいのが子供の安全性である。そのため公道、歩道で子供を乗せて走るのは絶対に避けたい。

    安全性と利便性を考慮し、たどり着いたのが荒川河川敷だった。

    荒川河川敷でバギーランをする理由として、サイクリング用に舗装された見晴らしの良い道路があるという点がある。東武スカイツリーライン、小菅駅から徒歩1〜2分で河川敷にでることができる。

    海まで走ることもできるが、海まで走ろうとすると比較的上り降りの段差が多く発生する。段差が多いとその分バギーをブレーキかけたりする必要があるのであまりおすすめしない。

    埼玉(川口)方面に走るメリット

    • 比較的段差が少ない。ほとんどないと言っても良い。
    • 1〜2km 間隔で日除けがある。

    赤丸の部分が橋があるポイント。

    日差しが強くて休みたい場合、通り雨に遭った際も休むことができる。

    この場所が非常に頻繁にあるので心強いポイントだ。

    どのペースで走るか。

    一人で走る場合とは違い、子供を押して走るので、ただでさえスピードは落ちるということもあるが、

    そこに安全性を考慮するとなると、いつでも止まれる速さで走る必要がある。

    早歩きと、ランニングの中間的な速さ。1km あたり6分~ 7分程度が子供と会話しながら走るのにちょうど良い。

    どこまで走るか。

    案1:小菅から都市農業公園まで走る

    約7km の距離。

    都市農業公園はサイクリストにも人気のある公園で、軽食も取ることができるし、テラスで休憩することもできる。

    メニューは以下の通り。プチパンは子供でも食べれる。

    なお、都市農業公園から西新井駅までバスも出ている。

    案2:小菅から川口付近まで走る

    約9km 程度。

    9km まで走り、その後2km ほど公道を歩くと戸田の、七福の湯という温泉がある。

    http://www.shichifukunoyu.jp/toda/

    ここをゴールに設定するというのもいいコースになる。

    3歳から有料だが、3歳未満だと無料で入ることができる。

    なお、七福の湯付近で巡回パスが通っており、戸田公園駅まで 100円でバスに乗ることができる。

    バスの時刻表は以下の通り。30分に一度はしっている。待ち時間が発生するようであれば、近くのララガーデンで時間を調整することもできる。

    また、戸田公園駅では新幹線も見れるので子供も楽しめる。

    以上、子供と楽しむバギーラン(ベビーカーラン)まとめ。

    新しいコースを開拓したらアップデートしていこうと思う。

  • マンガでわかる!マッキンゼー式ロジカルシンキングを読んだ

    マンガでわかる!マッキンゼー式ロジカルシンキングを読んだ

    新しく知識を得る際、活字の本とマンガの本があれば迷わずマンガの本から手に取る。この本も例外なくそのアプローチで手にした本。

    プロジェクトリーダーをしていて様々なステークホルダーの方と合意形成を取らなければらない機会があるが、その合意形成に非常に時間がかかっていて、物事が進まないということが何度もあった。

    同僚からロジカルシンキングを学んだほうがいいかもしれないというアドバイスをもらい、本を探していたところ本書に行き届いた。

    ロジカルシンキング(論理的思考)とは

    論理的に物事を考え、深め、既成概念にとらわれず最も適切な方法を考え、具体的に実行する方法、姿勢

    きちんと深掘りをし、より良い案を出すこと。

    ロジカルシンキングを鍛える

    ロジカルシンキングの鍛え方として A4メモ書きについて紹介されている。

    頭に思い浮かぶままにメモをするだけ

    やり方は以下の通り

    1. A4 用紙を横置きにする
    2. 左上にタイトル
    3. 右上に日付 (2021-07-13)
    4. 本文は 4~6 行
    5. 各 20~30字書く

    A4 メモ1ページを 1分で書き、毎日10 ~20 ページ書くのがポイント

    みんなどんな感じで書いているのか Google 画像検索すると色々出てくる。

    https://www.google.com/search?q=a4+%E3%83%A1%E3%83%A2+0%E7%A7%92%E6%80%9D%E8%80%83&sxsrf=ALeKk03pdC18TaAorMFd6xbuDt6DqGeShA:1626230580932&source=lnms&tbm=isch&sa=X&ved=2ahUKEwiImuWAxeHxAhXJZt4KHVKrDXcQ_AUoAXoECAEQAw&biw=1920&bih=969

    以下のようなメリットがある

    • 頭が整理される
    • モヤモヤがなくなる
    • 前向きになる
    • 優先順位が明確になる
    • 言いたいことが自然に浮かんでくるようになる
    • 説明がすらすらできるようになり、納得してもらうことが増える

    A4メモがロジカルシンキングの力をつけるトレーニングになる。

    重要なポイントとして、1分で書くこと。一気に素早く書くと頭の中身が全部書き出される。

    あれこれ悩まず、言葉も選ばずモヤモヤしたものを書き出すのでも良い。

    1件につき1枚に書く。別のタイトルを思いついたら別の紙に書き出す。

    紙はA4用紙である必要がある。

    タイトルは疑問系にすると良い

    • インタビュー前に仮説を持つには?
    • 報告書の作成方法は?

    など。なお、抽象的に書くのではなく、具体的に書く。

    同じタイトルでも気が済むまで何度も書く。

    保管したメモはすぐに見直さず、3ヶ月に1度見直す程度が良い。

    なお、ゼロ秒思考については Youtube大学でも解説されている。

    フレームワーク

    理由は必ず三つ挙げ、それを説明する。

    検討そのものが深くなり、論理的思考が徹底されている。

    理由を三つ挙げることによる習慣化するメリットは以下の3つ

    • 論理的思考が自然に身につく
    • 自分の意見に対して自信を持てる
    • 論理的思考をしている、安心して任せられると周りから思われる

    よく使われるフレームワーク

    • 2 x 2マトリックス
      縦軸・横軸で、整理する上で最も重要だと考える2つの項目を選ぶ

      縦軸と、横軸に何を入れるかがポイントとなる。
      軸の選び方が重要になるが、これは練習するしかないと書いてある。
      整理する上で最も重要だと考える2つの項目をまず考え、いったん記入してから有効性を確認しバランスを取る。
      https://imasarakikenai.com/time-management-matrix/

    ロジカルシンキングで思考を加速する

    大トロの部分

    ものごとを整理し、問題点を正確にとらえ、最も効果的な対応策を考える

    1. 論理的にものごとを考え、深める
      現状分析を行い、会社の強み弱みを抑え、わかりやすく整理。
      その条件下でどうすれば目的を達成できるか徹底的に考えを深めていく。
    2. 既成概念に囚われず最も適切な方法を考える
      1から10まで全部疑う。
      ものごとを普段から疑い、本当はどうあるべきか、本質はどこにあるかを考え続ける。
      ゼロベースで考えて初めて本来の姿、今の自転で最適な方法にたどり着く。
    3. 具体的に実行する方法、姿勢
      クライアント企業の経営幹部を支援して実行。成果を上げるところまでやる。

    ロジックツリーで問題解決を導く

    「現象・問題」、「本質的な原因」、「根本的な解決策」、「具体的施策」を繋げていくもの

    問題把握と、その解決を図る際に使われる。

    いかに頭を混乱させずに、整理しながら検討を進めることができる。

    考えが深くなり、洞察力も生まれ、問題の本質や解決策の要点がはっきりと見えてくる。

    https://www.google.com/search?q=%E3%83%AD%E3%82%B8%E3%83%83%E3%82%AF%E3%83%84%E3%83%AA%E3%83%BC&tbm=isch&ved=2ahUKEwjm4bbkyOHxAhV4zYsBHWUtDeoQ2-cCegQIABAA&oq=%E3%83%AD%E3%82%B8%E3%83%83%E3%82%AF%E3%83%84%E3%83%AA%E3%83%BC&gs_lcp=CgNpbWcQAzICCAAyAggAMgIIADICCAAyAggAMgIIADICCAAyAggAMgIIADICCAA6BAgAEAQ6BwgAELEDEAQ6CAgAELEDELEDULfBLFjYzCxgutIsaABwAHgAgAGqAYgBrwySAQQyLjExmAEAoAEBqgELZ3dzLXdpei1pbWfAAQE&sclient=img&ei=K1PuYKagC_iar7wP5dq00A4&bih=969&biw=1920

    まとめ

    頭が真っ白になる現象は、ロジカル・シンキングが十分にできておらず考えが浅いために起きる。

    ロジカルシンキングは十分にトレーニングすることで強めていくことができる。

    ロジカルシンキングはA4メモでトレーニングする事ができる。

  • Vimでよく使う便利なコマンド

    Vimでよく使う便利なコマンド

    検索文字をハイライトする

    :set hlsearch!

    オートインデント

    :set autoindent

    行番号を表示

    :set nu

  • CloudWatch Logsで任意の文字列を監視してグラフ化する

    CloudWatch Logsで任意の文字列を監視してグラフ化する

    概要

    シェルでラップして見たい値をCloudWatchに飛ばして監視する。

    今回はその仕組みを流用してサーバのプロセス数を監視監視した。

    ディレクトリ作成

    どこでも良い。今回はec2-userの下にcloudwatchディレクトリを作成する

    mkdir /home/ec2-user/cloudwatch
    cd /home/ec2-user/cloudwatch

    シェル作成

    vi CustomMetrix.sh

    #!/bin/sh
    CUR_DIR=/home/ec2-user/cloudwatch
    
    export JAVA_HOME=/usr/lib/jvm/jre
    export AWS_CLOUDWATCH_HOME=/opt/aws/apitools/mon
    export EC2_REGION=ap-northeast-1
    export AWS_CREDENTIAL_FILE=${CUR_DIR}/credential
    InstanceId=`cat /var/tmp/aws-mon/instance-id`
    # 設定ファイル
    PROCESSCONFIG=${CUR_DIR}/process-conf.txt
    
    # Process Check(設定したファイルから読み込む)
    cat ${PROCESSCONFIG} | sed '/^$/d' | grep -v '^#.*' | while read PROCESS
    do
    COUNT=`ps aux | grep ${PROCESS} | grep -v grep | wc -l`
    echo ${PROCESS}:${COUNT}
    /opt/aws/bin/mon-put-data --metric-name ${PROCESS} --namespace "CustomMetrix" --dimensions "InstanceId=${InstanceId}" --value ${COUNT}
    done
    
    # LoadAverage(1分間の測定値を取得)
    /opt/aws/bin/mon-put-data --metric-name "LoadAverage" --namespace "CustomMetrix" --dimensions "InstanceId=${InstanceId}" --value `cat /proc/loadavg | awk '{print $1;}'`

    設定ファイル

    process-conf.txt

    httpd
    crond

    認証情報

    credential

    AWSAccessKeyId=aaaaaaaa
    AWSSecretKey=ccccccccc

    実行

    sh ./CustomMetrix.sh

    httpd:0
    crond:1

    結果

  • GitLab Connection to gitlab.com timed out. (connect timeout=5)’))

    GitLab Connection to gitlab.com timed out. (connect timeout=5)’))

    はじめに

    GitLabに接続する際、

    GitLab Connection to gitlab.com timed out. (connect timeout=5)'))

    のように表示されることがある

    原因

    接続元が同しIPの接続元から、gitLabに複数回アクセスしたものの認証に失敗した。

    しかし、なんどもログイン失敗したため、接続元のIPを自動でプラックリストに入ってしまったことが原因

  • Baseimage-dockerとは

    Baseimage-dockerとは

    docker は 1コンテナ 1プロセスで動かすという思想のもと作られているが、普通のコンテナ思想のもと作られたコンテナではない。

    ssh でログインすることもできるし、 cron も動かすこともできる。

    supervisorなどのプロセスコントロールシステムを使えば複数プロセス起動させることもできるので、この仕組みを使っているちょっと変わった 80M 程度の軽量なコンテナだ。

    利用方法は以下の通り。まずは pull

    docker pull phusion/baseimage:master

    起動

    docker run --rm -it phusion/baseimage:master

    Baseimage-dockerのiniプログラムが実行される。

    ctrl + cで抜ける事ができる

    この ini 処理で supervisor が動き、そのプロセスの中で ssh を受け付けたり, cron を動かしたりしている。

    Debug方法

    Baseimage-dockerのiniプログラムを実行させず、直接bashを起動は以下の通り

    直接コンテナに入ることができる。

    docker run --rm -it phusion/baseimage:master bash -l