t_hazawaの日記

株式投資とWebエンジニアリングのブログです。株式投資の目次は→です。 https://t-hazawa.hatenablog.com/entry/2021/02/12/220933

WordPressのMediaCloudプラグインをアップデートすると、S3との通信が詰まって困っていたが、解消バージョンが出ていた件

概要

詳細

MediaCloud の過去のバージョンで発生していた不具合

  • バージョンアップ後、15分経つと、Webサーバソフトのプロセスが、S3とのコネクションを終了させられていないプロセスだらけになって、1分経っても応答しない & リクエストを受け付けない状態になった

解消方法

  • MediaCloud は Media Cloud 4.2.0(2020/12/31版)で「Replace Urls」をオフにする設定 (WP管理画面のMediaCloud設定画面でオフにできる)を追加し、上記の問題に対応した

反省点

  • 2021/4に私は最新のバージョンでも不具合が発生したままか確認したが、その時に微妙に古いバージョン(2020/9/23版)を使って、見つけるのが2日遅れた
    • 本当の最新版を使って検証しよう
  • 上記の「詰まる」現象が起こるのは、本番環境にある画像の中でも一部の画像だけだったが、 私が 2020/8 に検証環境を作って負荷をかけてテストした時に、「本番環境から全記事データと全画像データを検証環境にコピー」…などはせず、適当に作った記事と自分でアップロードした2,3種類の画像を含む1つの記事に負荷をかけただけだったので、再現できなかった
    • 不具合が発生している環境と同じ環境を作り上げて検証しよう

この案件に関連して導入したもの

  • メンテナンスプラグイン
  • 画面上部に「何月何日にメンテナンスにつき閲覧できなくなります」告知を出す必要があったが、WordPressのメニュー機能を使って、そこに記事タイトルと、メンテナンス告知記事へのリンクを出した

学び

  • プラグイン開発が活発であれば、半年くらいで問題点は修正されそう
    • MediaCloudプラグインは、1ヶ月に1つほどバージョンリリースを行っており、開発は活発といえる。

もしなおってなかったとしたら

  • メールを出してプラグイン製作者に問い合わせをするつもりでした

所要時間

  • このブログを書くのに27分かかった。

キーモーメント・VideoObject構造化データを学ぶ

動機・目的

調査

かかった時間

  • このブログを 2021/08/02 1:10 に書き始めるまでに 7/29 に始めて、2時間45分かかった
  • その後、 2021/08/04 21:04 に ブログをかきあげて、追加で調べることを調べるまでに 90分かかった

こういう事をしていきたい

  • VideoObject 構造化データを入れて 動画検索結果に出す
    • WPの SEOプラグインで VideoObject 構造化データ出るか確認する
      • そういうプラグインはなかった
      • 元々 SEOのシステム部分を本で学ぶつもりでもあったので、まずは本を読んで、それから、埋め込みプレイヤーが記事中にあったら、そのVideoObject構造化データを入れる WordPress プラグインを作ろうと思う
    • (動画サイトマップもいいらしい)
    • (SeekToActionも入れられるといいかも)
  • そもそも Article 構造化データをつける

もし埋め込み動画プレイヤー用プラグインを作った時にしないといけないこと

  • 入れた結果を測定できるようにする
    • 運営の人に入れるよ~といえば?
    • WP管理画面でアクセスデータ(流入データ)を見れる?
  • 効果が出るようなら、他プロダクトにも広げる

読んだもの

いろんな構造化データ編

再び色々編

追加で調べたこと

業務のEC2をCloudFormationにするぞ2:ベストプラクティス勉強編

2021/07/15 21:41(11日め): 業務AWSのNW要素見落としないかチェック, 業務AWSのNWをテンプレ化開始

  • VPCのメニューをチェック中 (あとでEC2をやる)
  • AWSマネージドドメインリスト
  • Wavelength
    • VPCのSettingsにあった
    • 5G向けらしい
    • wavelengthについては、オプトアウトしているので、使わないようにしているのだろう
    • azは普通 a,c,d apnortheast-1の
  • (VPCは全部確認おわり)
  • EC2のメニューを見ていく
    • NW周りでは特に見てないものはなかった
  • (↑を20分でやった)
  • じゃあ、Elastic BeanstalkでNW周りが変更されないか一応みておこう
    • 初回以外は、NW周りについては、既に作ってあるものを再利用するようだ (EBの環境の設定をみた)
  • ◎いよいよテンプレ化開始した。
  • (35分で↓をした)
  • ☆10種類のものをcFnのテンプレにする対象として洗い出した
    • VPC, IGW, Subnet, Route Table, Managed Prefix List, NAT Gateway, Elastic IP, Network ACL, Security Group, S3用エンドポイント
  • VPCとIGWをテンプレにしてみた
  • サブネットを1つテンプレにした PubSubAPne1dForSSH

2021/07/18 5:00 (12日め): マクロを学ぶ必要があると分かった

  • (G検定の準備をしていたので2日ぶり)
  • 業務のAWSをcFnにしていってる
  • でも、そのままでは、同じことを何度も書くことになりそう
  • マクロを学ぼうと考えた

2021/07/18 14:38(13日め、14日め): cFnで使えるマクロ(というか同じ内容の繰り返し方法)を学ぶぞ, ベストプラクティスというか、使ってる人の記事を読むぞ

パラメータストア自体を知る

  • まずパラメータストアのことを知る必要があったので読む (21分)
    • Amazon EC2 Systems Managerでパラメーターストアを試してみた #reinvent | DevelopersIO
    • 2016年発表
    • 私物でやってみた(簡単)
    • Run Command で取れるということなので、やろうとした
      • デフォルトのコマンドがたくさんある Ansibleを流すとか configDockerとか
      • シェルスクリプトも実行できる(これがメインになりそう)
      • でも、起動してるEC2がないとダメだったのでやらなかった
        • 私物AWSで、自動で起動しているEC2を止めて回る定期ジョブをなんとかして搭載したい
        • AWSに、いかにも、そういう定期ジョブ登録機能がある気がしている。
    • (↑を5分で書いた)

パラメータストアを使って、cFnのテンプレの重複をなくす手法を学ぶ

その前に、まずはパラメータストアの普通の利用法を一応みておく

  • 次に、パラメータストアを使って、cFnの重複設定をDRYにする方法を知った (22分)

いよいよ、「cFnの重複をなくす方法」

  • 本題
    • [Tips]CloudFormationで文字列の繰り返しやめたいと思ったのでAWS Systems Manager パラメータストアに保存することを思いついた話 | DevelopersIO
      • これが、本来知りたかった、「cFnの重複部分をなくす方法」
        • もっと繰り返したいとか条件分岐をする必要があれば、AWS CDK等での対応も検討ください - AWS Cloud Development kit。 Pythonとかでかけるサービス。cFnより複雑

      • IAMRole2: Type: AWS::IAM::Role ManagedPolicyArns:

      • !Ref "IAMManagedPolicy2"
        • この部分は、 Role に この名前のpolicyをつけるよってこと
      • ssmに登録する体をとることで、何回も出てくる文字列を変数的に扱えるのだ
      • 気になる方はpoliciesを設定して有効期限を短くして削除してしまうことも可能かと思います

      • TagsのName に_for_cfn_template みたいな わかりやすい名前をつけてもいいかも。
      • 元のcFnテンプレよりだいぶよくなってる
    • (↑を8分で書いた)

cFnを実際に使われてる方のノウハウ記事を読む

  • 実際にcFnを使われてる方の記事を読んだ (23分)
    • というのも、ベストプラクティスというか、テンプレの良い書き方とかを知りたかったのだった
  • CloudFormation入門 - ハマリポイント・注意点 | Raccoon Tech Blog [株式会社ラクーンホールディングス 技術戦略部ブログ]
    • ☆かなりイケてる資料
    • ◎実はcFnもファイル分割できる(スタック1個に複数ファイルのテンプレ)とのことなので、やり方を調べたい
    • IAM, DBをスタック別にするのは確かに良さそう。でも、デメリットもあるので、最初は分割なしでいいかな。
    • なるほど、構文チェックツール
    • Subnet には EnableDnsHostnames: true EnableDnsSupport: true みたいなのが要るらしい
      • まぁ、実際に作ってみて、「むむ、ここが違うぞとなったら気付けるかな」
    • Condition も Mappingsも初めて聞いた (使えそう)
    • リソースの名前、英数字だけ(記号不可)と書かれててしっかりしてる。
    • Outputs もようやく意義がわかった (他のスタックにわたすものをOutputsとして出力する)
      •  必要最低限にしないとだめよ ロックされるから とのこと
      • 弊社のサービスではスタックに番号が振ってあり、小さい方から大きい方へのみ参照するようにしています。

      • ↑大変そう
    • 変更セットは「JSONの変更」 が一番くわしいらしい
    • ☆ > "replacement": "False", # これがtrueだとリソースが一度削除されて作り直されるのでサービスが停止する可能性あり
    • 弊社のAWS環境は小規模な方だと思いますが、それでもCFNのテンプレートは数千行に及んでいました。 今となっては、だからといって手動でひとつひとつ設定していくわけにも行きません。 - つよい - でもterraformでもそのくらいあった感じがする

    • (感想) やはり、CDKでは? cFnをマスターしたら素早くCDKに行こう!
  • (おさらい)CDKとは

テンプレを分割する手法を学んだ

  • 2種類の方針がある
    • 1つのスタックを複数のテンプレで記述(少数派)
      • だいたいCDKにしよう!という感じ
    • 役割でスタックを3,4つにわける (多数派)

1つのスタックを複数のテンプレで記述

複数のスタックを連携させる (クロススタック)

15日め 2021/07/19 21:07 : cFnのベストプラクティス調べ

  • 前日に引き続き、ベストプラクティスを学んでいる
  • CloudFormationの実践ベストプラクティス - Qiita (21分)
    • めちゃいい資料
      • (これを読むまで、テンプレをきれいに分割する方法が分からなかった…というか、「1スタックは1テンプレファイル」ということが繰り返し出てきたのだが…?)
    • この方も、現時点では CDK (Cloud Development Kit) 推し
      • 自分もcFnマスターしたら早急にCDKにいくぞ。
    • 「ライフサイクル」で分けよう の話
      • まぁ、今までに考えてきた、 NW → Security → DataDtore → App でも、後ろの方ほどライフサイクルが短くなってて、ちょうどよさそう  - 前のやつほど、全然更新されないので、依存関係的にもよさそう
        • そうかな?なんか、接続元IPが変わるので、 VPNを変えたい、とかなりそう
    • teamAとBのテンプレを分けておくと、変更しやすくてよいという話
    • 「タグのnameは気軽に変えられるもののままにしておこうね、クロスすタック参照にしたりしないようにしようね」
    • 「ネストされたスタック」
      • 普通に、他のテンプレをインポート的なことができる
      • しかも、Parameter を何にするかを親(呼び元)で指定できる
    • ☆ファイル構成もぜひこれを真似しよう
      • Layerがさっきまでカンガえてた nw, security, datastore, app かな?
      • (2021/08/26 19:31 追記) ただ、次回のブログで、「子スタックを持つスタックはインポートできない」(=インポートでは二段構成までしか作れない) ことが判明した
    • (↑を9分で書いた)
  • 私的CloudFormationベストプラクティス - Qiita (11分)
    • cFnテンプレのかなり詳細な例がある
    • 差分テンプレいい感じ(多分 web-office.yml のこと)
    • 依存しているスタックを書くのは行数(みやすさ)が見合ってないかも。
      • 書くならコメントでいいかも
    • ネストには2019/9/30当時には、「子の詳細な変更セットが見れない」という弱点があったとのことなので、いまでもそうか実験してみたい
    • 命名法も参考になった
    • (↑を5分で書いた)
    • これでベストプラクティスは一旦いいだろう!

今後の方針を考えた (cFnをマスターしたらCDKにいきたい)

  • どう考えても、将来的には、ちゃんと書けるCDKを使うのがよい
  • ただ、 CDK は cFn のラッパーなので、まずはcFnをマスターしたい

16日目 2021/07/20 20:48 : 今でもネストすると詳細な変更セットが見れないのか調査(2020/11に見れるようになったことを確認した), 変更セットの公式ドキュメント読んだ

変更セットの公式ドキュメント

  • 変更セットのサンプル - AWS CloudFormation (21分)
    • cFnが認識する変更には「テンプレの直接変更」と「パラメータ値の更新による変更」があるらしい (ChangeSource フィールド)
    • RequiresRecreation: インスタンスの置き換えが必要ないかを示す
    • replacement: AWS CloudFormationが新しいリソースを作成して古いものを削除する必要はないということを示す。falseなら 安心して実行できる。
      • ☆true だと危険!
    • (↑を4分で書いた)

ネストした子の詳細な変更セットが見れるようになった調査

  • その後、20分で、下の調査をした
  • ネストされたスタックの変更セット - AWS CloudFormation (10分)
    • 自信満々な「ネストされたスタックも変更セット見れる」というドキュメント
    • ただ、日付が書いてないので、2019/9時点での問題を解決したものか分からなかった(フィードバックを送った)
  • 変更セットの差分は、このリソースが変わるよ、ということしか分からないものだと理解した
    • (Drift (テンプレと実体の差分)では どの部分が違うかの差分が出る)
  • AWS CloudFormation 変更セットがネストされたスタックのサポートを開始
    • この資料により、上記のドキュメントは、2019/9時点の問題に対応したものだとわかった
    • つまり、現時点(2021/7)では、「ネスト機能」は有効に使えそうだと分かった
  • (上を3分で書いた)

17日目 2021/07/22 2:36: 学んだベストプラクティスを使って業務AWSのNWをcFnテンプレにし始めた

  • 52分で↓をした
  • テンプレの構成考えた
  • VPCと IGWをその構成でテンプレにした
  • 私物AWSでテストしようとしている
    • この時に、業務AWSで使おうとおもってたS3バケット名を使ってしまった
      • (世界でユニーク、一度も使われてない必要があるので、業務AWSで使えなくなった)
  • cFnでテンプレを読み込んで、デザイナーにきれいに表示された
    • 実際の実行はまた明日
  • (↑を4分で書いた)

18日目 2021/07/22 17:26: VSCodeでLintできるようになった

19日目 ベストプラクティスで作ったcFnテンプレでVPCとIGWを作った, SubnetをcFnテンプレにしてる

VPCとIGWを作れるか試す

  • ↓を32分でやった
  • VSCodeでcfn-lint できるようになったので、ベストプラクティスに則った形で VPCとIGWを作った
  • つまりポイント
    • Terapadyaml のコメントを日本語で書いた後に VSCodeにそれをもっていったら、 文字化けして、 cfn-lintは ファイルを読み込めません的なエラーを出した
      • そのコメントを消したら解消した
    • cfn-lint 的には UpdateReplacePolicy をつけるのが必須みたいなので、Retainでつけた
      • 更新のためにリソースを置き換えるときに、元のを残すかの設定
      • retainにしておくのが、料金かかるリスクはあるが安全 (最初は安全に倒すべし)
    • template url は、 s3:// ではダメで https:// じゃないと通らなかった
  • スタック作る時に 予想コストもでていいね (vpcとigwだけなら0円)
  • 作成できた
    • VPCとIGWだけでも1分半かかった
    • (↑までを6分で書いた)

Subnetをテンプレにする

      Tags:
        - Key: Name
          Value: !Join 
            ["-", [!Ref InternetAccessibility, "Subnet", !Ref AvailabilityZone, "routetable", "cfn"]]
  • のように、配列の一行記法を使って、見やすく書いた
    • ↑のブログを4分で書いた

20日目 2021/07/25 16:37: SubnetをcFnにした, 残すはSGだけになった

Subnet編

  • 18分で下をした
  • cFnテンプレを完成させて、私物AWSで流してみた
    • うまくできた
  • テンプレのS3パスが前回と同じでも、「既存テンプレを置き換える」を選択せねば、前回実行時のテンプレが使われてしまう (変更セットの作成)
  • ドリフト検出も、変更セット作成も、今回の「サブネット追加」くらいなら1分間くらいかかる
  • localへのrouteは書かなくても勝手に追加されてた
  • (↑を4分で書いた)

他のNW要素編

  • その後、下のことを30分でやった
  • よくみたら、1つのRouteTableを複数のSubnetで使ってたので、Subnetのテンプレから切り出した
  • managed prefix list は S3が勝手に作るものだからテンプレにしなくてよいと考えた
  • NAT Gateway は 今回 Private Subnet がないのでテンプレにしなくてよいと考えた
  • Elastic IP も、NAT GatewaySSHサーバをテンプレにする時にテンプレにすればいいと考えた
  • NACLも、私物AWSで試しに作ったスタックでは、勝手に全通しのNACLができていたので、別にテンプレに書く必要はないと確認した
  • S3エンドポイントも今回S3は対象外なのでいいや (多分S3を作る時にも勝手にできそう)
  • あとは VPC用、default のセキュリティグループだけになった

21日め 2021/07/26 20:58 : Security Group も今回はcFnに書かなくていいと確認した、チームに説明する資料を書いている

  • 49分で↓をした

Security Group 編

  • 事前の調査によると、今回は VPC用SGと default SG をcFnにすればよさそうだった
  • しかし、 VPC用SG は説明に VPC用と書かれているだけで、実際は EC2用SGだった
    • 今回は EC2 を作らないのでパス
  • default SG (default SGからのinを全通し、 outは全通し)は、私物AWSでcFn練習した時に、勝手に作られていた
  • このため、今回はSGをcFnに書かなくて良い、と判断した。

チームに説明する

  • 説明するため、社内ドキュメントに説明書きを書いていっている。

22日め 2021/07/27 22:03 : チームへの説明を書ききった, テンプレを仕上げ中

  • 58分
  • チームへの説明をかききった
  • テンプレを仕上げてる

23日目 2021/07/28 20:50: gitbucket にprを出して、説明の準備が完了した

  • 56分
  • 私物AWSで実行したらエラーが出たので直した
    • 「Parameters: [IgwId] do not exist in the template」というエラーがでていた
    • テンプレで使ってないパラメータを含めてるよ、というエラーだった(消して解決)
  • gitbucket にリポジトリを作ってprを出した
  • 説明ドキュメントを読み返して修正した

24日め 2021/08/05 21:37: Beanstalk は マルチAZ

Beanstalk は マルチAZ

時間まとめ2

  • 21日め 2021/07/26 20:58 63分
    • Security Group を今回はcFnにしなくて良いと確認した
    • チームに説明するドキュメントを書いてる
  • 22日め 2021/07/27 22:04 59分
    • チームへの説明をかききった
    • テンプレを仕上げてる
  • 23日め 59分 2021/07/28 20:52
    • prを出して、説明準備完了

業務のEC2をCloudFormationにするぞ1:勉強編

経緯

  • 業務のEC2 が IaCになってないのでしたい

選定

  • そのシステムはAWSべったりなどの理由でCloudFormationでもよいとなった(ざっくり)
    • GUIがあって初めて見る人もわかりやすそうというのもよい

時間的目論見

  • 結構大きいので15時間 (= 15日)で終わるといいなと思う
  • 2021/07/04 20:38(1日目) 開始

やること

  • まず、 AMI になってなかったらとっとく
  • CFについて知る
  • まずは私物AWS
    • GUIポチポチでさわってみる
    • IaCでやってみる
  • 本物をCF (IaC)にする

AMI編

  • 2021/07/04 20:43
  • EC2にいって、AMIのところを押しても何もなかったので、無い

    とり方

  • インスタンス一覧でチェック、右クリック、「イメージを作成」

    • No reboot を選んでおく(取得時に再起動しない)

CF知る編

自分のAWSで試してみる編

  • 【CloudFormation入門】5分と6行で始めるAWS CloudFormationテンプレートによるインフラ構築 | DevelopersIO
    • 入門1のVPCつくるところまでやった (この部分のまとめ書くのに3.5分かかった)
  • その後20分で、その入門3まで、つまり全部やった 2021/07/04 22:39
    • そこで、 下のまだできないポイントがうまれた
      • これで作ったVPC消してみたんだけど、復活はどうするんだろ
      • 生成に失敗したときの再挑戦方法まだわかってない
  • EC2を作りたいので、次の御手本を探した
  • その後、14分でこれを読み切り、このテンプレをコピペさせていただき、EC2をcreate_in_progressまでやった

2021/07/05 (2日め): EC2立てた。ドリフトわかった

  • まず32分で、下のことをした
    • MyIP に XXX.XXX.XXX.XXX ではなく XXX.XXX.XXX.XXX/24 を指定して、EC2を作り直した
    • ssh -i .ssh/2021-07-05_aws.pem ec2-user@52.XXX.XXX.XXX でログインした
      • AWSのキーペアには _awsって名前につけるとどこの鍵かわかりやすくてよい
    • このEC2スタックの作成は1分20秒、削除は1分30秒 かかるとわかった
    • スタックの初回生成に失敗した場合、「削除して最初からやりなおすしかなさそう」とわかった
    • スタックセットは「スタックを複数アカウントや複数地域で立ち上げるもの」だとわかった
    • (↑の記述を4分で書いた)
  • その後、20分で下のことをした
    • 「ドリフト」について調べた
      • (テンプレと実体との違い、ギャップのこと)
      • CloudFormation Drift Detectionを試してみた - Qiita
        • わかりやすかった
      • CloudFormation Drift Detection を使うことで、テンプレ更新前に、実体とテンプレの違いがわかると知れた
      • 手で消したVPCが、Drift Detectionで Deletedになるのを確認した
        • deleted の場合は、「テンプレとここが違うよ」差分は出ないようだ
      • スタックをupdateするには、やはり、テンプレートのどこかに変更がないといけなさそう
        • その際に、実体はテンプレの方に合わさせられる
          • (ので、実体の方を残したいなら、先にテンプレに反映させる)
        • テンプレート反映(update)前にはかならずこのDrift Detectionをチェックして、意図した変更だけになるか見よう
    • CloudFormationには結構知れてきたので、業務のSSHサーバに何があるかを書き出してみた(要件)
      • 確かに、EC2は中身がかなりでかいので、ファーストステップとしてはVPCとか周辺のものだけで、その後EC2に進むのがよさそう。
    • でも、「既存のリソースをCloudFormationにする方法」とかを知らないので勉強中

2021/07/06 21:06 (3日め): 既存リソースをcFnにするぞ

  • まず5分で AMIとった
  • つぎの17ふん(累計22分)で、上の「既存リソース組み込み公式」読んだ
    • 結局は、「手作業でテンプレに既存リソースを書けば、組み込める」ということ
  • このあと、私物AWSで、手創りVPCを組み込んで見ようと思う (3分でブログ書いた)
  • その後20分で、既存のVPCを取り込んでみた
    • AWSTemplateFormatVersion: "2010-09-09"
      Description: VPC Import test
      Resources:
      ImportedVpc:
      Type: AWS::EC2::VPC
      DeletionPolicy: Retain
      Properties: 
      CidrBlock: 10.0.0.0/17
      
      • インデントこわれた
    • 確かにコピーできた。
    • 上の書き方だと、 インポート時に VPC ID指定しないとだけど、 https://dev.classmethod.jp/articles/chonyumon-cloudformation/ "RouteTableId" : { "Ref" : "MyRouteTable" }, みたいに、テンプレートで指定も可能そう
    • 「変更セット」: cFn に変更したテンプレートを上げて、どれが変わるかみる機能。どのリソースかまでしかでないので、違いは テンプレートを読むしかなさそう。
    • なんか、元のvpcを取り込むじゃなくて、コピーしてる感じ
    • 10分たっても UPDATE_COMPLETE_CLEANUP_IN_PROGRESS]

2021/07/08 0:33(4日め): VPCを理解するぞ

  • (↓23分で以下のことをした)
  • VPCはcFnでインポートしても、コピーになるようだった
  • そもそも、VPCとかSecurityGroupを完全に理解してないので、はっきりと理解していくことにした
  • VPC
  • AWSのVPCって何?メリットや使えるシーンなど徹底解説! - TECH PLAY Magazine
  • CidrBlock: 10.0.0.0/16 という中に世界を作る感じ
    • 複数のVPCを作れば、複数 10.0.0.0/16 の世界を作れる (行き来できない世界になりそう)
  • SecurityGroupを VPCに所属させて、EC2をSecurityGroupに所属させる感じ
    • EC2を複数のSecurityGroupに所属させられるので、1台のEC2を複数のVPCに所属させられる
  • 可能な限りプライベートサブネットにしよう - > プライベートサブネットをパブリックにするには、後述するインターネットゲートウェイに接続する必要がある

  • ルーティングもあるよ(要るよ)
  • テナンシー: 他のリソースと物理リソースを共有するかしないか。デフォルトはdefault(普通に共有する)
  • …ということで、VPCの説明記事は一つ読んだので、実際の私物AWSVPCをみて、わからないところがないかチェック中
  • (↑を5分で書いた)

2021/07/08 21:20(5日め): Internet Gateway, NAT Gateway, Subnet, RouteTable を理解するぞ

  • (↓のことを27分でした)
  • 引き続き、 AWS CloudFormationでEC2を構築 - Qiita を完全に理解しようとしています
  • InternetGateway を理解した
  • EC2 にそのままだと、割り当てられるGlobal IP Address は非固定、Elastic IPで確保すると、固定のを割り当てられる…ことを思い出した
  • (↑を5分で書いた)
  • (その後、 18分で↓を理解した)
  • Subnet とは
    • サブネットとインターネット通信 | DevelopersIO
    • まぁ、普通のサブネット、 /18 とかで区切るやつです
    • パブリックは IGW があってインターネットと通信できる
    • プロテクトは、 NAT GW を通じて、 パブリックサブネットのIGW経由でインターネット通信ができる
      • インターネット側から始まる通信はできない
    • 踏み台サーバは英語で Bastion (砦の意)
    • プロテクトサブネットとは、 NATサーバや踏み台サーバ経由で、インターネットと通信できるサブネット
      • (Privateサブネットの一種と捉えられることが多そう。インターネットと通信できない真の Private Subnetより弱い版)
  • ルートテーブル
    • (ここまでで大体わかったので、AWS Console みて理解した)
    • VPCの設定項目
    • 送信先(ターゲットに振り分ける対象)とターゲット(流し込む相手)をきめる
    • ↑の EC2の御手本cFnテンプレでは、、PublicSubnet用のルートテーブルを作って、実際のルーティング(Route)を設定して、ルートテーブルをサブネットにassociateしてる
      • ルーティングで、全部の通信のTargetをIGWにすることで、インターネットへの/からの 通信を仕放題にしている (SecurityGroupで守る)

2021/07/09 20:16(6日目): Security Groupと Network ACLを理解するぞ、既存VPCをcFnに取り込むぞ

  • (↓まず、29分で下のことをした)
  • 引き継ぎ、https://qiita.com/tyoshitake/items/c5176c0ef4de8d7cf5d8 を完全に理解しようとしています(最後)
  • なぜネットワークACLでなくセキュリティグループで細かいトラフィック制御を行なうのか | DevelopersIO
    • 基本セキュリティグループとわかった
      • IPセグメントまるごと規制したいときくらいにしかNACLの出番はない(基本全通し)
    • セキュリティグループは基本通さない (必要なものについて穴を開ける)
      • inbound の 80, 22 だけでなく、 outboundの全通しも設定しましょうね
    • セキュリテぃグループIDとは
      • あるセキュリティグループがアタッチされているインスタンスをまとめて設定できる
  • (↑を5分で書いた)
  • (↓その後20分で↓のことをした)
  • 問題:「前、既存VPCを私物AWSのcFnに取り込めなかった」
  • 再度やってみたら取り込めた
    • 前回は VPCIDの指定を間違えたのかな?
  • CloudFormationで既存のVPCと既存のサブネットの中にEC2インスタンスを立ち上げてみる - Qiita を読んだ
    • どこをどう変更したのかといった変更履歴も保持しているので追跡性もあります。

    • ◎*cloudformerというのを使って既存のデータをコード化します - 変換機能(ただし、テンプレが手でメンテできなくなる)があるらしい (多分使わない)

    • Design Template というGUIがある
  • 私物VPCをcFnのスタックに取り込めたし、Tags の Name を着けることもできた (元々あったNameを上書いた)
  • ドリフトの差分もみれた (実物は/16 だけど テンプレは /17 みたいな)
  • でも、変更セットを作ってもドリフトの解決をできなかったので、明日はここから (ドリフト解決したい) (私物AWSの話)
    • その後、 業務SSHサーバ周りのNWを知って、cFn化を目論む
  • (↑を5分で書いた)

2021/07/10 12:43(7日目): ドリフト解消方法の理解を深めた, 業務のAWSのNW周りを理解中

  • (↓13分で↓をした)
  • VPCの /16と/17をcFnで変えられないなぁ
  • ドリフト解消方法を知るぞ!
  • AWS CDK/CloudFormation、リソースを変更せずにスタックドリフトを解消する | DevelopersIO を読む
  • cdkとは
  • データベースが絡む場合です。テンプレートを更新すると、インスタンスを再作成してしまいます - > 実施したシナリオ。。aurora mysqlクラスターをcdkで作成していた状態で、auroraの自動マイナーバージョンアップグレードが走ったために、スタックドリフトが発生した、というシナリオでスタックドリフトの解消を行ってみたいと思います。 - うーん、データベースに使うのは難しそうだ - retainにしてからコメントアウトして一度スタック管理外にしようね。すると、バージョンを実体に合わせられるよ - > これらのリソースはスタックから切り離したまま運用するという選択肢もあるかもしれません。

  • つまり、「全てをcFnで変更できるわけではない」
    • (/16と/17を切り替えるのは、IPセグメントがかぶっていて、一度切り離さないと無理、ということのようだ)
    • 一度スタックから外して、再度インポートすればよい
  • データベースの件で、cFn本当に大丈夫か気になったが、
    • 「cloudformation」でツイッター検索しても「CloudFormationはダメだ」みたいなのは見えない
    • というか、普通に運用に使われてそうだった
  • (↑を5分で書いた)
  • (↓その後、34分で↓をした)
  • AWS CodeCommit がgit だと理解した
  • cFnにすべく、業務のAWSのNW周りをみていってる
    • VPC, Internet Gateway, Subnet (EC2とRDSがどこにあるかも見た)
    • RouteTable 理解中
      • メインと private用がある
        • メインは、VPCのcidrだったらlocalに送るし
        • 他は igw
      • privateは VPCのcidrだったらlocalに送るし
        • ほかは nat gw
      • ここで、新キャラ: マネージドプレフィックスリスト が登場したので、明日はそれを知るところから。
  • cFnのスタックにインポートするだけなら、実体に変更は入らないから安全!
  • (↑ を3分で書いた)

2021/07/11 14:39(8日目) : Managed Prefix List, AWSのネットワークインターフェイスを理解

2021/07/13 20:55(9日目): 業務AWSのNetwork ACLを理解

  • NAT Gateway
    • 業務のNAT GW には、Private IPアドレスが割り当ててある
    • 最初からcFnで構築するなら、無指定で任意のを割り当ててもらっていいけど、今回はcFnのテンプレにこのPrivate アドレスを書いた方が無難そう
  • Elastic IP
    • NAT Gateway用 と SSHサーバ用 で 2つあるから、これもcFnにしよう
  • Network Access Control List
    • 業務AWSに1つだけある 4つ全てのサブネットと関連付け
      • インもアウトも全通しなよくある形
      • (subnetには、必ずNACLが割り当てられる)
    • 私物AWSをみると、cFnでは、特にNACLの作成を指定しなくても、(VPCやsubnetを作ると) 勝手に全通しで作られるようだ
      • それどころか、 VPCを作るだけの簡単なcFnテンプレでも、勝手にサブネットが4つ作られてるような…
      • /24で public a, private a, public c, private c で
    • 業務ACLの話に戻ると、NACLは、やはり、最初からcFnだったら、「NACLを無指定にしたら、勝手に全通しのができてた」で良いと思う
    • しかし、今回は既存のNACLがあるので、NACLもcFnのテンプレに含めた方が無難だと思う
    • その際には AWS CloudFormationでNACL設定を入れてみる | DevelopersIO を参考にするとよさそう。
      • subnetは4つしかないので、大して面倒ではない

2021/07/14 19:40(10日目): 業務のAWSのSecurity Group を理解, 見落としてるNW要素ないかチェック中(S3用エンドポイントがあった)

  • (↓25分で↓をやった)
  • 業務AWSのSGを理解
    • Security Group は、 SGの方の一覧からは、どのSGをどのインスタンスで使ってるかわからないので、「production RDS Security Group」みたいに、どこ用か、Nameか説明で示すのが大事
    • 業務AWSには、4環境ある
    • 業務AWSには、 VPC用 4、 LB用 4、RDS用 3 (stagingが productionと同じ)、SSHサーバ用 2 (gitbucket, office)、 default 1 の計14個のSGがあった
    • 全てのSGが、outbound は全通し
    • SSHサーバには、office IPサブネットから全ポート inbound OKとするSGがあった
    • defaultでは、defaultからのインバウンドは全部通すようになってた (内部通信はAll OK)
  • そのSGを使うインスタンスをcFnにする時に、一緒にSGもcFn管理にするのが良いと思った
    • つまり、 最初は SSHサーバ用2 と default を管理下にするのが良いと思った
  • (豆知識) EC2の一覧の実行中、停止中の横の +, - 虫眼鏡は、「同じstatusのインスタンスだけに絞り込む/同じstatusのインスタンスを一覧から抜く」ボタン
  • (↑ を 8分で書いた)
  • (↓を 17分でやった)
  • ↑までに書いたもので、cFnにする時どうするのか観点が抜けてるところがあったので書いた (MPLとか)
  • 他に見逃してるNW構成要素がないか、業務VPCの左メニューをチェック中
  • すると、エンドポイントというものが1個だけあった
  • (↑を5分で書いた)

時間まとめ

  • 2021/07/04 1日め 80分
    • AMIがまだとってないことはわかった
    • どう取るか調べた (簡単)
    • CFの概要を掴んだ
    • EC2を作成中のところまですすんだ
    • 業務のSSHサーバ移植まで、15時間もかからなさそう。
    • 明日は、EC2立てるのが、うまくいったか確認から。
  • 2021/07/05 2日め 62分
    • EC2を建てれた
    • EC2にsshできた
    • ドリフトとその検出方法、違いがある時の動作がわかった
    • sshサーバの機能を書き出した(要件)
    • 既存リソースをcFnにする方法勉強し始めた
    • 70分中、52分勉強し、18分 ブログ記述などをした 。 25%が記述の時間
  • 2021/07/06 3日め 50分
    • 既存リソースインポート方法学んだ
    • やってみた。コピーになるのはしかたないのかな…?(次回調べたい)
      • 既存スタックに取り込む、でも変わらないだろうけど…、コピーでも問題ないのかな…?
  • 2021/07/08 4日め 29分
  • 2021/7/8 5日め 58分
    • Internet Gateway, Subnet, RouteTable がわかった
    • あとは、 Security Group だけ
    • その後は、業務の踏み台周りのネットワーク部分をcFnにするにはどうするか、ということになりそう。
    • 多分、12時間ほどで ネットワーク周りは cFnになるんじゃないかな。 (ここまでを1つのものとしたい)
      • その先(sshサーバのcFn化)はさらに10時間かかりそう。(これを別の1つの実践としたい)
  • 2021/07/09 6日目 60分
    • Security Group, Network Access Control List を知った
    • 私物AWSで既存VPCをcFnのスタックに取り込み練習中
  • 2021/07/10 7日目 56分
    • 全てをcFnで変更できるわけではないと知った
    • 業務のNW周り理解中
  • 2021/07/12 2:23 8日目 53分
  • (2021/07/12 70分、 2021/07/13 25分)
    • 月イチの1on1ミーティングを受けるべく、準備をした
    • 勉強進捗、案件にかかった時間まとめ、期末の評価資料を少しずつ作っていく
  • 2021/07/13 20:32 32分 9日目
    • 業務のAWSのNetwork ACLをみて、どうcFnにするか考えた
  • 2021/07/14 20:13 56分 10日目
    • 業務AWSのSecurity Group 理解した。
    • 見落としてる業務AWSのNW要素ないかチェック中
      • S3用エンドポイントを見つけた。
  • 2021/07/15 23:07 64分 11日め
    • 他にはNW周りで見落としてるものがないことを確認した
    • VPC, IGW, Subnet 1つを cFnのテンプレにした
  • 2021/07/18 5:00 31分 12日め
    • マクロなど、繰り返しを避ける方法が必要そうだった
  • 2021/07/18 13,14日め 142分
    • cFnのテンプレを書くベストプラクティスを調べた
      • というかまだ調べ中
    • CDK (Cloud Development Kit) を推してる人が多かった
    • 自分も、cFnをある程度マスターしたら、すぐにCDKに行こうと思った
  • 2021/07/19 21:51 15日め 60分
    • cFnのベストプラクティスを学びきった
    • いまは、「ネストすると(テンプレ分割すると)、子の詳細な変更セットが見れなくなるよ」というやや古い情報が見つかったので、それを実験して確かめ中
      • ネストできないと、テンプレがとても長くなってかなりよくない
  • 2021/07/20 21:18 16日目 57分
    • 変更セットの見方を知った
    • 2020/11に変更が入り、ネストされたスタックの変更箇所も、変更セットで表示されるようになった事が確認できた
  • 2021/07/22 2:40 17日目 58分
    • ベストプラクティスに則って業務AWS NW周りをテンプレにし始めた
  • 2021/07/22 17:31 18日目 54分
    • VSCodeでcFnのLintできるようになった
  • 2021/07/25 3:48 19日目 80分
    • VPCとIGWをベストプラクティスで作れた(私物AWSで)
    • サブネットをベストプラクティスに則ったcFnにしてる
  • 2021/07/25 22:02 20日目 63分
    • サブネットをテンプレにした
    • あとはセキュリティグループだけになった

統計検定2級(CBT)を受けて合格した

経緯

  • 統計検定2級に合格すると、いいことがある

背景

  • 自分は統計系の研究室出身です
  • でも、2級で出てくる公式はほとんど使いませんでした
    • 大体1つの手法を多用するよね

合格までの軌跡

  • 過去問試し解き~受験まで12日間、17.5時間でした
    • ボーダー60点で73点獲得
  • 『統計検定2級 公式問題集 2017~2019年』の初見正答率は↓でした
    • 最後の回(6回目)は受験前日の最後に解いたので、これくらい解けてたら、合格できると思います
1回め 77.1%
2回め 68.9%
3回め 70.6%
4回め 55.9%
5回め 73.5%
6回目 68.6%

受かるコツ

  • 公式を覚えるのが大事です
    • 統計検定2級チートシート - Qiita
      • でもこの公式集は網羅しすぎていて、全部覚えたら100点取れると思います
      • 過去問を解いていると、どれが頻出公式かわかるので、それを重点的に覚えると良いと思います (このシートの半分くらい?)

この次

  • そろそろ(業務に直結する)Docker実践ガイドに戻りたい

ビジネス著作権検定上級を受けた

経緯

  • ビジネス著作権検定上級に合格すると、会社から(少し)お金がもらえる
  • 元々、著作権関係の判例を読むなど興味があった
  • 自分の勉強計画に「1年に1つくらい業務に直結しない試験を受けよう」の項目があった

ポイント

  • 思ったより難しい
    • 社内教育のよりだいぶ難しい
  • でも、完全に知識問題で、過去問を解くたびに点数が上がってたのしい
  • 1週間かけた (勉強16時間 + 受験3時間 = 19時間 (=38日分の勉強時間…)

成長記録

過去問ID - 得点率(70%で合格) - 累積で過去問何年分になるか

ネットにあったもの
公式問題集の練習問題
公式問題集の過去問1,2
公式参考書の過去問1,2,3 (2,3はダウンロード特典)
ネットのもののやり直し
ネ  62.5 1年分 2021/04/23 16:01
練  71.0  3年分 (これは簡単すぎる)
過1 65.0 4
過2 70.0  5
公1 72.5% 6
公2 82.5% 7
公3 90.0% 8
ネや 76.5%, 95.7% 9 ←1回めのやりなおし
  • 最後のは、 公式テキスト(3年分過去問がついてくる、ちょっと古い)を買う前にやりなおした部分が 76.5%, 最後にやった部分が95.7%だった
  • …と、過去問を解くごとにきれいに伸びていってたのしかった

反省

  • 著作権検定上級の勉強自体は楽しい
  • これに19時間費やしていいかはかなり怪しい

時間的反省

4/24頃に 3時間 (申込みとか含む)
5/29 に1時間半
6/4 までに 6時間(1日1じかんしてる)
6/6までに 6時間
計16時間半
  • テストの直前週と前日は頑張りがち (なので7日間で24日分も勉強する)

この次

  • 6月末までに統計検定(毎日開催)に合格すれば、やはり会社からお金がもらえるので2級か3級を受ける

結果

  • 83%で合格でした。

勉強の様子

  • すべて、公式問題集をやってく中でつまずいたところです。

2021/05/31 19:30

§1

  • 教科書に著作物を載せるには通知と補償金が必要
  • 入社試験で予備校の試験でも許諾なく著作物を利用できる
  • 警察官が給料を受けていても、それは著作物で得た金ではないので、無料イベントで流行音楽を許諾なく流せる
  • PCソフトのバックアップ目的複製は、必要限度までしか複製できない(いくらでも複製はできない)

§2

§3

2021/06/01 16:38

§1

§2

  • レコードは最大12ヶ月経過すると、相当の報酬をレコード製作者に支払えば貸与できる(レコード製作者は貸与を拒否できない)
  • オルゴールも音を固定するものであり、レコードである
  • 歌手の公演のビデオはもっぱら音だけではないのでレコードではない

§3

  • 写真は影像を連続してないので録画ではない(実演家の写真は録画権ではなく肖像権で守られる)
  • 商業用レコードは報酬を支払えば放送できる(レコード製作者は放送を拒否できない)
    • これは実務でも出てきた!
  • 放送事業者の複製権は写真の形での複製にも及ぶ

§4

  • 問題文で、実演家、レコード製作者、放送事業者などと性質の違うものが列挙されることがある
  • 実演家には録画/録音されたものに対する複製権はない
  • 海賊版ソフトを業務に使うと違法

§5

●実演家に複製権はあるのか?ないのか?

  • 映画以外の実演の録音/録画物化は、毎回、複製であっても実演家の許諾が要る (問題70)
  • 実演家には録画/録音されたものに対する複製権はない (問題74)

これは、 「実演家」は新たに固定物にする権利は持つが、固定化されたものの複製権を持たない、

つまり、「新たなレコードを作成の許諾は出せるが、既存のレコードの複製を自由にすることはできない」 (自分の公演のビデオをファンが持ってるからといって、そのファンのビデオを複製する権利は持たない。一方で、ファンがビデオを複製するには実演家の許諾が要る) …ということだと思う


(多分、自分が自分の公演のビデオを持っていれば、それを元に新たな固定物を複製で作ることはできる)

(レコード製作者には複製権がある。多分、レコードの複製には、レコード製作者と実演家の両方の許諾が要るんだと思う)

https://elaws.e-gov.go.jp/document?lawid=345AC0000000048

2021/06/02

§1

  • 映画の著作物は物に記録されていなければ著作権はない(映画以外では固定不要)

§2

  • 下書き段階のラフスケッチでも著作物
  • アシスタントが、漫画家の詳細な指示に従って下書きしただけでは創作ではない

§3

  • 高度な技術であっても材質に著作権はない
  • 大量生産でも美術性があれば著作物

§4

  • データベースの著作権があるのは「選択か体系的な構成」に創作性がある部分のみ。(網羅に創作性はないし、選択や体系的構成以外の部分には著作権はない)

2021/06/03 18:48

§1

  • 売り場壁面への画像投影は、スクリーン投影。スクリーン投影は複製ではない
  • 歌詞を紙に書き出しても、音楽の複製権侵害

§2

  • プログラム以外なら同一構内に流しても公衆送信権侵害にはならない(口述権や上映権は侵害する)
  • 定食屋が録画した番組には公に伝達する権利はない(上映権がある)

§3

  • インターネットを介すと公衆送信権となり、口述権はなくなる
  • 版画はたくさん刷られてても、全てが原作品(なので、展示権がついてくる)
  • 映画に使われている美術工芸品の著作権者は、映画の頒布権を持つ

§4

  • 写真の原作品を譲り受けたなら、当然に譲渡権も譲られている
  • 貸与権は不特定多数への貸与だけを制限する

§5

  • 趣味であっても路上ライブでは公衆に提示してることになる
  • 個人で楽しむ目的でも海賊版をダウンロードしてはいけない

§6

  • 死後でも遺言で指定された者は著作者の実名を登録できる
  • 第一発行年月日の登録はいつでもできる(プログラムの創作日は6ヶ月以内)
  • 実名登録制度は推定にしか使われない。登録抹消しなくても推定は覆されうる

§7

  • 著作隣接権は、実演家、レコード製作者、放送事業者、有線放送事業者に認められた録音録画、放送、譲渡、貸与に関する権利。肖像権は含まれない。
  • 実演家は、録画録音を許可した録画録音物には送信可能化権を持たないが、生放送を勝手に録画された場合は送信可能化権を持つ。

§8

  • 特定期間の場合に貸与差し止めができるなら、「報酬支払請求しかできない」状態ではない。
  • 放送二次使用料は著作隣接権ではない。

練習問題より細かくて難しい!(いま過去問をやってる)

2021/06/04 17:08

§1

§2

  • 従業員が業務のソフト作りを私物パソコンで行っても、著作者は会社
  • 会社が従業員にソフトを業務で作れせたら、基本的に著作者は会社(基本実作業者ではない)

§3

  • 出版は原則原作のまま行う必要がある(翻案に至らない範囲ではない)
  • 出版権者に保管義務はない(出版継続義務がある)

§4

  • 自動作曲アプリを使用して作った曲には人の創作が入ってないので著作物ではない
  • 地図の表現には必ず創作性が入る

----(↓間違えまではしなかった所)----

  • (漫画家は、出版権の設定(設定を受けたものが独占的に出版できる権利)の他に、単なる掲載の許諾ができる。(この場合、他の出版社にも掲載を許諾できる)
  • (映画は公表後70年著作権が発生するが、公表されないと創作後70年なので、それまでに公表すると得)

  • (小説に挿絵があっても、寄与を分離できるので共同著作物ではない)

  • (漫画家が出版社と専属契約しても従業員ではないので職務著作にはならない)

日本株バブルと成長率

概要

  • 仮説を検証する
    • バブルというのは、単なる株の価格を高く値付けしすぎてただけであって、バブル前の特に高騰してない時を起点にすれば、日本株の成長率は普通なのではないだろうか

経緯・動機

動機1

  • サラリーマンに人気とされている投資手法 - t_hazawaの日記で、「教典」が「現有資産も最初にまとめて投資するべし」としていることについて、本当にそうか検証したい
    • (時間分散した方が平均リターンは下がってもリスクは下がる気がしている)
  • そのために、大きなバブルがあった日本株の成長具合について考察したい
    • (日本株であった事は米国株でも起こり得る気がしている)

動機2

  • 日本株はバブルで途中急激に高騰したが、実は特に暴騰せずに着実に成長した場合に比べて良かったのではないか、とも思ってるので確認する

方法

  • バブル前の時点の日本株指数が特に高騰せず、世界平均の年率6.7%(?) で成長したらどうなるか確認する
    • todo: 年率6.7%は配当込か無しか確認する

考察