おぎろぐはてブロ

なんだかんだエンジニアになって10年以上

VPCのサブネットを抽出して、きれいに並べたい

tl;dr

aws ec2 describe-subnets --filter Name=vpc-id,Values=vpc-123456  \
  --query "Subnets[*].[CidrBlock,(Tags[?Key=='Name'].Value)[0]]" \
  --output text | sort -V
10.0.0.0/22     public-subnet-ap-northeast-1a
10.0.4.0/22     public-subnet-ap-northeast-1c
10.0.8.0/22     public-subnet-ap-northeast-1d
10.0.12.0/22    private-subnet-ap-northeast-1a
10.0.16.0/22    private-subnet-ap-northeast-1c
10.0.20.0/22    private-subnet-ap-northeast-1d

aws ec2 describe-subnets

タグを取り出すのがちょっとだるい

{
  "Subnets": [
    {
      "AvailabilityZone": "ap-northeast-1d",
      "AvailabilityZoneId": "apne1-az2",
      "AvailableIpAddressCount": 1019,
      "CidrBlock": "10.0.20.0/22",
      "State": "available",
      "SubnetId": "subnet-...",
      "VpcId": "vpc-....",
      "Tags": [
        {
          "Key": "Name",
          "Value": "private-subnet-ap-northeast-1d"
        }
      ],
    },
   ...

今回は指定したVPC内のサブネットと、その名前を取り出したかったので、CidrBlockと、Tags の中の KeyName である要素をフィルタしてきて、これは1つなので (正確には1つかゼロ)、リストの先頭をとってくる。

--query "Subnets[*].[CidrBlock,(Tags[?Key=='Name'].Value)[0]]"

sort -V

queryの中で sort_by を使ってソートも (きっと) できるけれど、さすがに辛いので、sort を使う。

-V は natural sort of (version) numbers within text ということで、ドットで区切られたバージョン番号をソートするオプションで、バージョン番号ではないけれど、ドットの後の数字で並べてくれるので、これでIPアドレス順に並んでくれる。

fishでAWS Organizations配下のアカウントに同じコマンドを投げるスクリプト

環境調査のためにOrganization配下のAWSアカウントすべてにコマンド実行したいということがあったりする。fishを使っているので、関数を作って使っているのでメモ。

~/.config/fish/functions/ 配下に maws.fish としてつくる

function maws
  set accounts (aws organizations list-accounts --query 'Accounts[].Id' --output text | string match -ra '\d+')
  echo "call aws command in these accounts: $accounts"

  for account in $accounts
    echo "[$account]"

    set assumerole (aws sts assume-role --role-arn arn:aws:iam::$account:role/OrganizationAccountAccessRole --role-session-name (whoami))

    if test $status -eq 0
      set -x AWS_ACCESS_KEY_ID (echo $assumerole | jq -r '.Credentials.AccessKeyId')
      set -x AWS_SECRET_ACCESS_KEY (echo $assumerole | jq -r '.Credentials.SecretAccessKey')
      set -x AWS_SESSION_TOKEN (echo $assumerole | jq -r '.Credentials.SessionToken')

      aws $argv
    end

    echo ""

    set -e AWS_ACCESS_KEY_ID
    set -e AWS_SECRET_ACCESS_KEY
    set -e AWS_SESSION_TOKEN
  end

end

一旦、 ふつうのaws cli

aws ec2 describe-vpcs --query Vpcs[].[OwnerId,VpcId,CidrBlock] --output text

といった感じで単一アカウントで確認してOKだったら

maws ec2 describe-vpcs --query Vpcs[].[OwnerId,VpcId,CidrBlock] --output text

とするだけ。

動作の補足

環境変数に認証情報が存在すると、優先順位として強いので、Organizationの親アカウントの認証情報をもって実行し、Assume Roleして、環境変数をセット、削除するという流れ

jq 使ったら負けだよなと思いつつ、手抜き。

USB-C to SATA変換ケーブルが便利

早いストレージをそこそこ用意するとき、裸のSSDを使うことがあります。また、ポータブルHDDを壊れて、バラして中の2.5インチハードディスクを使うと普通に使えるといったことも割りとあり、そういった場合、従来はUSB3.0SATA変換ケーブルを利用していました。

USB3.0SATA変換ケーブルの問題点

USB端子1つから取れる電流では、特にハードディスクは稼働しないため、

  • データ用のUSB端子と別に電源用のUSB端子を接続する
  • 別にACアダプタがつく

といった製品が多かったです。ACアダプタは邪魔だし、かといって、USB2つは二股みたいなケーブルで、場所によっては延長ケーブルを噛ましてつなぐということをしてました。

USB-C 対応が出た

USB-Cになると、電源を1つで取れるため、最高にスッキリしました。 また、ケーブルが絡まって外れちゃったりといったことがなく最高です。

Plugable USB 3.1 Gen 2 Type-C - SATA 変換ケーブル

Plugable USB 3.1 Gen 2 Type-C - SATA 変換ケーブル

USB-Cの恩恵を最大限に受け、スマートにSSDをストレージとして使えます。 今のところ自分の中でベストUSB-Cケーブルです

Final Cut Pro X での ProMSRendererTool エラー 10008 の対処

Final Cut Pro X で編集した動画を Compressor でエクスポートすると、エラーが出て失敗する場合がある。

失敗しました: ホスト [foobar] ビデオのレンダリングエラー:10008(ProMSRendererTool エラー 10008:renderVideoFrame に失敗しました)

このエラーについて、AppleのサイトにもCompressorのヘルプにも説明が無いので、ぐぐってみるものの日本語で言及しているページはなかったので調べる方法をメモしておきます。

何が起きているのか

ビデオのデータに問題があり該当のフレームが壊れて表示できていない

どうすればよいのか

該当のビデオデータの壊れているフレームを除去する

エラー発生位置の確認

エラー文にはエラーが起きただけしか表示されずどこに問題があるのか分からない。1フレームだけだったりするので、絶望的に分からない。 これについては、システムログに位置が書かれている。

/var/log/system.logProMSRendererTool10008grep すると、以下のようにエラーの位置が記録されている。

$ grep ProMSRendererTool /var/log/system.log | grep 10008
Sep 23 01:50:11 iogi-mbp ProMSRendererTool[69516]: An error was generated when rendering the frame: (エラー 10008f, 00:31:13;04 <<(エラー -12909c, apple (fcp1).mov @ 00:44:33;27)>>)
Sep 23 19:24:04 iogi-mbp ProMSRendererTool[76790]: An error was generated when rendering the frame: (エラー 10008f, 00:26:34;26 <<(エラー -12909c, banana (fcp2).mov @ 00:29:33 ;08)>>)
Sep 23 19:24:09 iogi-mbp ProMSRendererTool[76690]: An error was generated when rendering the frame: (エラー 10008f, 00:29:39;16 <<(エラー -12909c, cherry (fcp2).mov @ 00:35:00;15)>>)

古いログファイルはローテートされて、圧縮、削除される。圧縮されているログも検索する場合は

zgrep ProMSRendererTool /var/log/system.log* | grep 10008

で探す。

1つのエラーに2つの時刻が記録されているが、前者がレンダー時の位置、後者が元データでの位置 (だと思う) エラーが出たクリップの該当のタイミングを確認すると、そのタイミングから数フレーム破損したフレームがあるので、ここを音声含めカットして再度エンコードをすると成功した。 1〜2フレームだったので音声にも違和感が無いので自分は音声含めてカットしたが、もっと多いフレームである場合は、正常なフレームの映像をコピーする等でもOK。

Final Cut Pro Xガイドブック[第3版]

Final Cut Pro Xガイドブック[第3版]

AWS CLIのS3接続先の選択動作とaddressing_styleオプション

AWS CLI がS3にアクセスする際にどのように Path-Style と Virtual Hosted-Style を使い分けるかをまとめます。

  • S3のアクセス形式2つ
    • 名前解決動作
    • バケット作成直後に Virtual Hosted–Style でアクセスした場合の問題
  • AWS CLI はどちらの形式でS3にアクセスするか?
    • DNS Compatible Check とは?
      • DNS Incompatible なバケット名
      • dotを含むバケット名の対応
  • s3.addressing_style オプション
    • リージョン違いのフォールバック
  • まとめ
続きを読む

Appleの現行ワイヤレス入力デバイスのペアリング

Appleの現行ワイヤレス入力デバイス (Magic Trackpad 2, Magic Mouse 2, Magic Keyboard。Keyboardは2じゃない。。) を新しいMacにペアリングしようと思って検索したら、MacとLightningケーブルで接続しろと。その発想はなかった!

support.apple.com

接続すると速攻でペアリングされる。複数のマシンに切り替えて使うといったときにはストレスが少ないかもしれない。 ただ、新しいMacbookだと付属のLightningケーブルだけではだめで、変換アダプタか、USB-C - Lightning ケーブルが必要なんだけども。

Apple Magic Trackpad 2 MJ2R2J/A

Apple Magic Trackpad 2 MJ2R2J/A

Apple Magic Mouse 2 MLA02J/A

Apple Magic Mouse 2 MLA02J/A

Apple Magic Keyboard - JIS MLA22J/A

Apple Magic Keyboard - JIS MLA22J/A

2017/5/5 追記

なんか、Trackpadだけたまにペアリングが切れてしまってその都度ケーブルをつなげてペアリングしてだるい。。

(2015年版) Mac で Microsoft Office 2016 を使いたいけど何を買えばいいのか

Microsoft Office 365 Solo (最新 1年版)|オンラインコード版|Win/Mac/iPad|インストール台数無制限

ついに Office 2016 for Mac の正式版がついにリリースされました。

ということで、2015年9月時点での Mac で Office 2016 を利用する場合の購入手段についてまとめます。
この記事では、Office 2016リリース以後の情報についてまとめていきます。2011のパッケージ版を使う場合は、以前の記事もご確認ください。

iogi.hatenablog.com

購入形態は現時点では Office 365 のサブスクリプションのみ

Office 2011 for Mac では買い切りのパッケージ版と、Office 365のサブスクリプション購入版の2つの選択肢がありましたが、 現時点では、パッケージ版についてはまだ提供されておらず、個人ユーザが利用するためには Office 365 のサブスクリプションサービス経由となります。 (パッケージの販売は予定はされているようです)

個人 (というか小規模) で利用する場合、Office 2016 for Mac を利用するには、以下の選択肢になるかと思います。

  • Office 365 Solo
  • Office 365 Business

定価では微妙に Business が安いのですが、Solo は定価より安価に購入できるため、実質的には Solo がお薦めです。

Office 365 Solo

個人、家庭用に提供されているのが Office 365 Solo です。

ざっくり説明すると以下のようになっています。

Amazonだと、1年間のサブスクリプションが 11,800円でした。 さらに、9月末までOffice 365購入のクーポンが提供されており、最大30%オフになっています。

Office 365 Business

名前の通り法人向けですが、デスクトップ版Officeが利用可能な最も (定価ベースで) 安価なプランがこちらです。

Soloとの違いは、台数と、Skype無料通話がつかない点です。 (法人利用のための導入管理などがあるのですが、ここでは省略します)

まとめ

  • 2015年9月時点では、パッケージ版はなく個人利用では Office 365 のサブスクリプションの購入が必要
  • 個人用では基本的には Office 365 Solo。たまに Excel だけ使わないといけない用途にはちょっと。。

制約はいろいろあると思いますが、モノによっては Office Online (無料) でもカバーできるかもしれません。

www.office.com