投稿者: sumito.tsukada

  • S3でアクセス欄に「エラー」と表示される件を対処する

    S3でアクセス欄に「エラー」と表示される件を対処する

    はじめに

    AWSの権限周りは複雑に設定できるだけに難しい。今回の件もその一つ。アクセス欄が「エラー」になるのでその対処を行う。

    問題

    掲題のとおり。エラーになるのだ。

    対処

    ご察しの通りロールが足りないのが問題。

    実際どのロールかというと、以下のとおり。

    以下の設定はS3のディレクトリの確認や、権限まわりを表示させることができる

            {
                "Action": [
                    "s3:ListAllMyBuckets",
                    "s3:GetBucketPublicAccessBlock",
                    "s3:GetBucketPolicyStatus",
    
                    "s3:GetAccountPublicAccessBlock",
    
                    "s3:GetBucketAcl"                
                ],
                "Effect": "Allow",
                "Resource": "arn:aws:s3:::*"
            },

    この対処を行うと、エラーは解消される。

     

  • numpyで平均を求める

    numpyで平均を求める

    はじめに

    機械学習を勉強しているとPythonが避けて通れない。
    中でもnumpyはとても重要だったりする。

    基本的な使い方から調べた。

    使い方

    何はともあれinstall

    pipで一発。

    pip3 install numpy 

    import

    import numpy as np

    以降、npとして利用する

    変数に入れる

    x = np.array([1,2,3])
    

    1,2,3を配列として入れる

    結果は

    [1 2 3]

    変数の中の平均を取る

    この配列の中の平均を計算する
    一つ一つ足して、カラム数で割る・・・というような処理は不要で、

    .mean()メソッドを利用することで自動で計算することが可能。

    xaverage =x.mean()
    print (xaverage)
    

    結果は以下のとおり

    2.0

    中心化を行う

    単回帰分析の場合、求めるのは

    • 傾き
    • 切片

    の2つ。
    この中心化を行うことで切片を計算する事が不要になる。

    やることは、全てのカラムから、平均分を引くだけ。

    xc = x - x.mean()
    print (xc)

    詳細はこちら  http://www.bokupy.com/detail/93#single-regression3

    結果は以下のとおり

    [-1.  0.  1.]
    [1 2 3]から全てのカラムが平均2が引かれている事がわかる。
  • pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.

    pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.

    はじめに Introduction

    macでpip installを行った際、以下のようなエラーが出てinstallができなかった。

    When pip install was performed on mac, the following error occurred and installation failed.

     

    $ pip3 install numpy
    pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
    Collecting numpy
      Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/numpy/
      Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/numpy/
      Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/numpy/
      Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/numpy/
      Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/numpy/
      Could not fetch URL https://pypi.org/simple/numpy/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/numpy/ (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available.")) - skipping
      Could not find a version that satisfies the requirement numpy (from versions: )
    No matching distribution found for numpy
    pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
    Could not fetch URL https://pypi.org/simple/pip/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/pip/ (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available.")) - skipping

    原因 Cause of the problem

    SSL通信ができない?

    Can’t SSL communication?

    対処 countermeasure

    admin権限を持つアカウントで同様のコマンドを実行したところ、無事インストールができた。 おそらく権限周りの問題が根幹にあるようだ。

    When I executed the same command with an account with admin privileges, the installation was successful. Perhaps there is a problem around authority.

  • VMware ESXiにmacからsshする

    VMware ESXiにmacからsshする

    はじめに

    VMware ESXiのホストにログインすることは可能だが、そのログイン方法は少し特殊だ

    ESXiでSSHを有効にする

    デフォルトでESXiはsshが無効になっている。 ESXiシェルとSSHがデフォルトで停止されている。まずはこれを有効にする

    macからESXiへSSHする

    ssh -l user名、 IPで接続する

    ssh -l root 192.168.0.x

    ちなみにシャットダウンは

    poweroff

    コマンドで行う。

  • VPC の作成中にエラーが発生しました: Performing this operation would exceed the limit of 5 NAT gateways

    VPC の作成中にエラーが発生しました: Performing this operation would exceed the limit of 5 NAT gateways

    概要

    VPCを作成する際に出力されたエラー

    原因

    NAT Gatewayの上限に抵触している。

    対処

    上限に達してしまっているので上限を増やす必要がある。

    AWSコンソール上のサポートから問い合わせることで対処が可能

    東京リージョンの「アベイラビリティーゾーン当たりの NAT ゲートウェイ上限数」を10へと変更することによって対応可能。

     

  • AWS ECRにimageをpushする

    AWS ECRにimageをpushする

    はじめに

    ECRのリポジトリへimageをpushする手順を記載する

    準備

    手元の環境にimageがあること(docker imageコマンドでimageが出てくること)

    $ docker images
    REPOSITORY                        TAG                  IMAGE ID            CREATED             SIZE
    sumito_http                          latest               54f5e642e4ae        5 weeks ago         1.1GB

    手順

    ECRにリポジトリを作成する

    ECRへpush用のタグをつける

    $ docker tag sumito_http 123456789.dkr.ecr.ap-northeast-1.amazonaws.com/dmp/sumito:latest 

    pushする

    docker push 123456789.dkr.ecr.ap-northeast-1.amazonaws.com/dmp/sumito:latest

    この際

    “` no basic auth credentials “`

    と表示される場合はログイン処理が必要になる

    $ aws ecr get-login --no-include-email --region ap-northeast-1

    表示されたコマンドを実施して

    “` Login Succeeded “`

    と表示されればOKだ。

    再度pushするとContainer imageがECRに格納される

  • コマンドでwordpressのuserを確認する

    コマンドでwordpressのuserを確認する

    はじめに

    wordpressのユーザー一覧をgit管理したいことがある。
    wpコマンドを使うことで実現可能だ。

    手順

    $ /usr/local/bin/wp  user list --path='/home/kusanagi/cms/DocumentRoot'
    +----+-------------------+-------------------+-------------------+--------------------+---------------+
    | ID | user_login        | display_name      | user_email        | user_registered    | roles         |
    +----+-------------------+-------------------+-------------------+--------------------+---------------+
    | 1  | admin             | admin             | aaa@sumito.jp     | 2013-09-04 01:30:4 | administrator |
    | 12 | design            | design            | bbb@sumito.jp     | 2018-08-21 07:46:4 | editor        |
    | 15 | ccc               | ccc               | ccc@sumito.jp     | 2018-10-01 05:22:5 | ccc           |
    +----+-------------------+-------------------+-------------------+--------------------+---------------+
    $ 
    

    まとめ

    あとは定期的にこの処理をcronのようにjobとして動かし、
    gitへ通知すればスタッフの離職時の棚卸しなどが容易になる。

  • 手動でログローテートを行う

    手動でログローテートを行う

    はじめに

    手動でログローテートを行いたい時があるので、その対応。

    手順

    logrotate -d /etc/logrotate.d/syslog

    -vオプションを追加すると詳細が表示される 手動実行する際は-fで実行する

    logrotate -f /etc/logrotate.d/syslog

     

  • Linuxでユーザーを複数のグループに追加する方法

    Linuxでユーザーを複数のグループに追加する方法

    Datadogを使用していると、ログにアクセスできないパーミッションエラーが発生することがあります。このエラーは、Linuxで一般的なものです。解決するには、/var/log/syslogを参照できるようにする必要があります。

    以下のコマンドを使用して、/var/log/syslogにアクセスできることを確認します。

    # ls -l /var/log/syslog
    -rw-r----- 1 syslog admin 79639 Jan  2 9:09 /var/log/syslog

    DatadogのエージェントのUID/GIDを確認し、セカンダリーグループ(admin)に追加します。グループを上書きしないように注意してください。

    datadogの agentの UID/GIDを確認

    # id dd-agent
    uid=113(dd-agent) gid=118(dd-agent) groups=118(dd-agent)

    セカンダリーグループ(admin)に追加

    仮に-aを忘れてしまうと、所属しているグループを上書きしてしまいます。

    usermod -aG admin dd-agent

    確認

    # id dd-agent
    uid=113(dd-agent) gid=118(dd-agent) groups=118(dd-agent),4(admin)

    これで、Datadogからログを取得できるようになります。

     

  • 2018年を振り返る

    2018年を振り返る

    2018年も99%が終わり今年を振り返る

    お仕事編

    本業中の本業について

    インフラエンジニアをやっている。

    それまで他社クラウドを使いIaaS型のクラウドを使って来たが、

    データベースを含むメインの基盤をAWSに移行した。

     

    チーム全員がほぼAWS未経験。2つの国を横断するサーバーをAWSに移行した話。

    これによりAWSマネージドサービスを使う事ができ、チームは学ぶべき知識と、得られる知識の領域が変わった。

    IT業界全体を俯瞰して見てもAWS移行経験は需要だらけなので、本プロジェクトを通じて、とても貴重で重要な経験をさせてもらった。

    プロジェクトリーダーとして

    DMP(Data Management Portal)を刷新すべく、そのプロジェクトリーダーをさせてもらっている。具体的にはBigQueryの活用。

    プロジェクリーダーの経験は未経験だったし、今まで「稟議書ってなんスカ?」ってほど全くよくわかってなかった。

    具体的にやっていることは目的を明確にし、タスクを整理し、人をアサインしプロジェクトを管理するという所。専任のメンバーはいないので、他のチームから1ヶ月あたり0.2人月ほどメンバーを借りてやっているが、

    「ちょっと工数かけ過ぎているので、少し抑えてほしい」という話しをエンジニアをお借りしている所のリーダーから来たりするのでプロジェクトリードの難しさを痛感している。

    他社での仕事について

    レアジョブでは副業が認められている。

    自分としては、当然メインの業務もあるし、家庭もあるしということで、積極的に仕事を探していた訳ではなかったが、声がかかった時にだけ副業をしている。

    (ちなみに今まではインフラエンジニア養成のための勉強用資料作成、ならびにそれを用いたドットインストール風のvideoなど。フリーランス時代に担当してもらった営業さんからお願いされて、2017年〜2018年はじめに作った)

    今やっている副業は、ご縁のある方から「手伝ってほしい」と言われたため、お仕事を受けた。

    その会社の特徴として、インフラエンジニアのプロパーがいない。

    業務委託のインフラエンジニアが週4で仕事をしている状態で、彼がガシガシ新しいプロダクトに合わせてインフラを作っていているので、運用がまだしっかり整備されていない。という問題があった。

    どれだけ整備されていないかというと、論理構成図がない。

    なので、GCP/AWSの管理画面に入り、Cacooで論理構成図を作っていく作業。

    タイミングよくCacooで構成図の自動作成機能がリリースされたので、基本的にそれを利用。

    https://cacoo.com/ja/blog/aws-architecture-import/

    ただ、これを使っただけだと使い物にならないので、サービスとして使っている形に整理したり、その後はALBにログインしていき、どのポートで受け付け、どのサーバでどのポートで接続しているのかplotしていった。

    ここでの得た事の一つは、
    新規参画者には現在の環境の整理をお願いすると、新規参画者への教育コストを抑えつつ、環境を覚えてもらい、ドキュメントも綺麗になる。一度で三度ウマい方法。

    自分のプロジェクトでもこれはやりたいと思った。

    あとは第三者的にシステムの問題を洗い出し、タスク化し、お客さんと一緒に優先順位を決めていき、それに対する作業見積もりをして、あとはリモートで作業をしていく。

    このような形で進めたいと提案し、お客さんに合意してもらった。

    しかし、大前提となるのが”信頼関係”である。リモートなら尚更だ。

    私に声をかけてくれた方と自分との間には”信頼関係”は既に構築されているが(信頼関係が構築された上で、声をかけてもらったのだが)、他のメンバーの方とは当然まだない。

    どのように信頼関係を築いていくかは、一緒に仕事をしていく事が最短だと思っている。信頼関係がない上でのリモート作業は、お互いが不幸になるリスクがある。

    その為、以下のアプローチをとった

     

    • タスクを細分化したあとは、とにかくアウトプットの出やすいところから着手。(少しでも多く多く出す。でかいプロジェクトを1個やる。というよりは細かいタスクをたくさんやる。)
    • 問題提起と、課題解決案は必ずセット。課題解決案にはメリット・デメリットを添えて。
    • 一緒にご飯を食べる(昭和的だけど、これ人間関係を作る上で結構重要。アウトプット以外のところが人間性だと思うから。)

    OSSへのコントリビュート

    redashのヘビーユーザーだったが、今年4本pull requestを出させてもらい、その全てがmergeされた

    user listのソート機能

    https://github.com/getredash/redash/pull/3041

    CLIでuser一覧を表示さえる時に、ランダムに表示されてしまうが、A-Z順にソートされるようになった。

    redash userのacrive/disableの表示機能

    https://github.com/getredash/redash/pull/2951

    redashのdisable機能はversion 5から導入された。しかしuserがenableなのかdisableなのかはCLIでは確認する方法がなかったので、その機能を追加した。

    user listにgroupを表示させる機能

    https://github.com/getredash/redash/pull/2967

    CLIのuser一覧に所属しているgroupを表示させるようにした

    grop listにuserを表示させる機能

    https://github.com/getredash/redash/pull/2991

    これも似たようなものだけど、CLIでgroup一覧を表示させた場合、そのgroupにどのユーザーが属しているのかわかるようにした。

     

    ちなみにOSSへ貢献するとリポジトリを見てくれる方からメッセージをもらえる事がある

    https://findy-code.io/

    OSSへのコントリビュートは様々な選択肢を得ることに繋がるので、おすすめだ。

    また、redash meetupでの登壇を2本。(登壇資料添付済み)

    https://redash-meetup.connpass.com/event/85550/

    https://redash-meetup.connpass.com/event/101420/

    上記とは別にredashのコントリビュータの会合(redash meetup 4.0.1-dev、redash meetup 4.0.2-dev)をレアジョブで開催した。

    今月はredash advent calendarで記事を3本書いた。

    https://adventar.org/calendars/3299

    ブログを書き始めた

    最初はQiitaにアウトプットを書いていたけど、最近はQiitaは書かずwordpressにしている。

    理由は以下の通り

    • 仕事でwordpressのインフラは見てるけど、どんな風にユーザーが使っているのか、ぶっちゃけよくわかってないので覚えたい
    • Google Analyticsを見てアクセスを解析しグロースさせる経験をしたいので、その土台として
    • 技術的な事以外も書きたい事がある

    今はBlogとしてまとまったことを書くというよりは、あくまでも仕事で使ったことの作業メモ置き場として使っている。

    Blogを書いても書かなくても作業のメモは書くけど、それを自分だけで持っている理由はない。自分が困ってたことは、きっと他の誰かも困ってることかもしれないというという理由から始めた。

    プライベート編

    よかった点

    よくなかった点

    マラソンのベストタイム(3時間4分)から依然程遠い。

    2013年に妻の妊娠を機に走るのを一時的に辞めたが、まだまだ当時の速さに戻れていない。

    今年の目標は3時間30分切りを目標にしていたが、全てのレースで目標に届かなかった。

    佐倉マラソン

    https://connect.garmin.com/modern/activity/2577060920

    長野マラソン

    https://connect.garmin.com/modern/activity/2625723712

    つくばマラソン

    https://connect.garmin.com/modern/activity/3183514412

    金沢マラソン

    https://connect.garmin.com/modern/activity/3120745226

     

    九十九里トライアスロン(オリンピックディスタンス)では、ベストタイムを出せたが
    オリンピック選手の瀬戸大也選手にスイムでぶっちぎりで距離を付けられ、バイクとランで距離を詰める事ができなかった。

     

    2018年は筋トレを始めたということもあり、run/bikeの時間を削った。最近は100km程度しか走れていない。

    bikeは完全に通勤、帰宅として。寒くて心折れているのがグラフから読み取れる。

    家庭について

    息子が4歳(3月に5歳)になるので七五三をやったが、fotowaというサービスを使いプロのカメラマンに来てもらったが、プロのクオリティに感動した。このことはfotowaのオウンドメディアに取り上げてもらった。

    【撮影レポ】5歳男の子の七五三!出張カメラマンは子供の笑顔をどうやって引き出すの?

    まとめ

    多くの方に支えられ、満足いく2018年を終えることができた。

    去年より今年、今年より来年。と右肩上がりで成長できれば最高だけど、少なくともそれに近づけれるように2019年も過ごしたいと思う。