AWS API GatewayのBody Mapping Templateで使えるテンプレート

AWSAPI Gatewayでは、リクエストをどう受けて、どう返すか、ということが設定できる。中間処理にLambdaを使う場合は、リクエストの情報をJSONオブジェクトに変換しておいて貰わないと、情報が来ない。

ということで、Body Mapping Template(後処理に渡すデータを生成するためのテンプレート)を使うわけだけど、以前には多分なかったテンプレートが追加されていたので試している。

Method Request Passthrough

2016/05/11時点では以下のような形をしている。cognitoの情報も追加できるようになっているので、おそらく今後も変化していくのだろうと想定。

##  See http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html
##  This template will pass through all parameters including path, querystring, header, stage variables, and context through to the integration endpoint via the body/payload
#set($allParams = $input.params())
{
"body-json" : "$input.json('$')",
"params" : {
#foreach($type in $allParams.keySet())
    #set($params = $allParams.get($type))
"$type" : {
    #foreach($paramName in $params.keySet())
    "$paramName" : "$util.escapeJavaScript($params.get($paramName))"
        #if($foreach.hasNext),#end
    #end
}
    #if($foreach.hasNext),#end
#end
},
"stage-variables" : {
#foreach($key in $stageVariables.keySet())
"$key" : "$util.escapeJavaScript($stageVariables.get($key))"
    #if($foreach.hasNext),#end
#end
},
"context" : {
    "account-id" : "$context.identity.accountId",
    "api-id" : "$context.apiId",
    "api-key" : "$context.identity.apiKey",
    "authorizer-principal-id" : "$context.authorizer.principalId",
    "caller" : "$context.identity.caller",
    "cognito-authentication-provider" : "$context.identity.cognitoAuthenticationProvider",
    "cognito-authentication-type" : "$context.identity.cognitoAuthenticationType",
    "cognito-identity-id" : "$context.identity.cognitoIdentityId",
    "cognito-identity-pool-id" : "$context.identity.cognitoIdentityPoolId",
    "http-method" : "$context.httpMethod",
    "stage" : "$context.stage",
    "source-ip" : "$context.identity.sourceIp",
    "user" : "$context.identity.user",
    "user-agent" : "$context.identity.userAgent",
    "user-arn" : "$context.identity.userArn",
    "request-id" : "$context.requestId",
    "resource-id" : "$context.resourceId",
    "resource-path" : "$context.resourcePath"
    }
}

ざっくりと展開すると、以下の様な感じになる。だいたい自分でわかった範囲で説明もつけておく。雰囲気なので間違ってたらごめんなさい。

{ "body-json": [object], "params": { "path": [Empty Object], "querystring": [object], "header": [object], }, "stage-variables": [object], "context": [object] }

Key Description Type
body-json BodyをJSON.parseしたもの。 object, array, ...
params リクエスト時のパラメーター情報。 object
params.path (おそらく)基本的に空のオブジェクト。 {}
params.querystring URLクエリを処理したオブジェクト。配列クエリ、ネストされたクエリには対応されてなさそう。 object
params.header ヘッダ情報。 Host, Origin, User-Agent, などなど。 object
stage-variables API Gateway で設定したstageの情報。 object
context API Gatewayでリクエストを受けた時の状態。 object
context.http-method リクエストメソッド。GET, POST, など。 string
context.stage API Gateway でデプロイしているステージのラベル。 string
context.source-ip リクエストしてきたIPアドレス string
context.user-agent ユーザーエージェント文字列。 string
context.resource-path URLパスの文字列。基本的にAPI Gatewayのリソースに一致するはず。 string

バグ?

テンプレートにはバグっぽい挙動が含まれていて、POST時のリクエストBodyのJSONで文字列を含んでいるとエラーする。ダブルクオーテーションで囲ってしまっているため。ダブルクオーテーションを外してしまったほうが多分良いと思われる(思われるけど落とし穴があるかも)。

ref: https://forums.aws.amazon.com/thread.jspa?threadID=221749

-"body-json" : "$input.json('$')",
+"body-json" : $input.json('$'),

ちなみにエラーすると、Lambdaは起動されない。Lambdaのログを監視していてもわからない問題になるので、検証は自己責任ということで。

VMware Fusion 8.1のNATポートフォワーディングまわりのエラー対応

事象

VMware Fusion 8.1にNATポートフォワーディングまわりでエラーがある。VMware BLOGSで修正が公開されているが、2016/02/01にパッケージをダウンロードした段階では、配布されているパッケージに修正は反映されていない。

ref: https://blogs.vmware.com/teamfusion/2016/01/workaround-of-nat-port-forwarding-issue-in-fusion-8-1.html

自分の手元では、VMware Fusionのネットワークを再起動すると、1度目のアクセスはできるが、そこでVMware Fusionのネットワークが落ちる、という現象。

MacをEl Capitanにアップデートして、VMware Fusionちゃんと動くか検証していて、うまくできたと思ったら落ちる、という突き落とされパターン。

事前作業

VMware Fusionのネットワーク周りの設定ファイルを再確認。変更されていたら、同じディレクトリ内に作られているバックアップファイルから必要な部分をコピーしてくるか設定し直す。

  • dhcpの設定ファイル /Library/Preferences/VMware\ Fusion/vmnet8/dhcpd.conf
  • natの設定ファイル /Library/Preferences/VMware\ Fusion/vmnet8/nat.conf

設定周りについては、過去にもエントリーを書いてるので、よろしければご参照を。

sugilog.hatenablog.com

修正ファイルの設置

  1. こちらから、vmnet-natdファイルをダウンロード
  2. ダウンロードしたvmnet-natdVMware Fusionのアプリケーションパッケージ内に移動(置き換え)。
  3. アプリケーションパッケージ内に設置したvmnet-natdの所有者とパーミッションを変更する。
# 移動
mv -i $HOME/Downloads/vmnet-natd /Applications/VMware\ Fusion.app/Contents/Library/

# 所有者情報とパーミッションを変更。(所有者情報の部分は、環境に併せてご変更を。)
sudo chown root:wheel /Applications/VMware\ Fusion.app/Contents/Library/vmnet-natd
sudo chmod 755 /Applications/VMware\ Fusion.app/Contents/Library/vmnet-natd

ネットワークの再起動

vmnet-cliで、stop&startする。

sudo /Applications/VMware\ Fusion.app/Contents/Library/vmnet-cli --stop
sudo /Applications/VMware\ Fusion.app/Contents/Library/vmnet-cli --start

状態を確認。できれば、ポートフォワーディングしているVMを立ち上げて、ネットワーク越しにアクセスして、その後に確認してみると良い。

sudo /Applications/VMware\ Fusion.app/Contents/Library/vmnet-cli --status

正常に動作していれば、以下のようなメッセージ。

DHCP service on vmnet1 is running
Hostonly virtual adapter on vmnet1 is enabled
DHCP service on vmnet8 is running
NAT service on vmnet8 is running
Hostonly virtual adapter on vmnet8 is enabled
All the services configured on all the networks are running

正常でない時:いくつかの行がエラーを表示する。

...
NAT service on vmnet8 is not running
...
Some/All of the configured services are not running

新春座談会 このコンピュータ書がすごい! 2016年版 の勝手なまとめ

個人的なメモ。去年とは書き方を変えて、時系列で徒然にしないで、勝手に括ったりしてます。

sugilog.hatenablog.com

トークイベントのハッシュタグ#compbook

高橋さん、お疲れ様でした。(『楽しいRuby』の第5版がでる?ということで、おめでとうございます。)

読みたい本

Python言語によるプログラミングイントロダクション』

Python言語によるプログラミングイントロダクション: 世界標準MIT教科書

Python言語によるプログラミングイントロダクション: 世界標準MIT教科書

MITのテキストで、プログラミングの解説をしている本。Pythonのコードが使われているということ。

『Serverspec』

Serverspec

Serverspec

Serverspecの説明はもちろん、こんなアプリケーションをつくるなら?みたいな話も書かれている。

『理論から学ぶデータベース入門』

今まで出てたリレーショナルモデルについての本はわかりづらいものが多かった。

この本は理論と実践にまたがって説明がされていてプログラマにちょうどよいっぽい。

高橋さんいわく「RDB使ってるなら誰でも読んだほうがよい。」

『JS+Node.jsによるWebクローラー/ネットエージェント開発テクニック』

ウェブのクローリングのみでなくその後処理までいろいろ書かれてる。

Electron使って、、、みたいな話は発想がすごいなぁと。

APIデザインケーススタディ

Rubyの実際の設計指針を使ってケーススタディしてる。どう考えてAPIをバランスよく作るか?みたいな。

気になった本&メモ

機械学習プロフェッショナルシリーズ

異常検知と変化検知 (機械学習プロフェッショナルシリーズ)

異常検知と変化検知 (機械学習プロフェッショナルシリーズ)

機械学習のための確率と統計 (機械学習プロフェッショナルシリーズ)

機械学習のための確率と統計 (機械学習プロフェッショナルシリーズ)

http://www.kspub.co.jp/book/series/S043.html

2016.01時点で29巻?まで出てる気合が入ったシリーズ。

来年くらいまでの出版が計画されてる。

コンピュータ書というよりも数式が多い研究に近い人に向いてるかもしれない。

研究に近いような書籍がこれだけシリーズで出てくるのは稀ですごいらしい。

『リーダブルコード』

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

2012年出版以降、ずっと売れてきた。

ジュンク堂のランキングでは2015年は4位に落ちたけど、売上は増えてる。

驚異的!

インフラ系

『たのしいインフラの歩き方』

たのしいインフラの歩き方

たのしいインフラの歩き方

インフラエンジニアって何するんだ?みたいな話。

『ネットワークエンジニアの教科書』

ネットワークエンジニアの教科書

ネットワークエンジニアの教科書

『インフラエンジニアの教科書』の姉妹本的な。

インフラエンジニアの教科書

インフラエンジニアの教科書

『インフラ/ネットワークエンジニアのためのネットワーク・デザインパターン

インフラ/ネットワークエンジニアのためのネットワーク・デザインパターン

インフラ/ネットワークエンジニアのためのネットワーク・デザインパターン

いわゆるデザインパターンではなく、ネットワーク構成(〜アーキテクチャ)について27にわけて説明してる。

ハッカーの学校

ハッカーの学校』 & 『ハッカーの学校 個人情報調査の教科書』

ハッカーの学校

ハッカーの学校

ハッカーの学校 個人情報調査の教科書

ハッカーの学校 個人情報調査の教科書

悪用厳禁だけど、みたいな情報が満載らしい。

クラッキング対策なり個人情報流出対策を立てるには必要な知識かも。

関連で、

『サイバーセキュリティプログラミング』

サイバーセキュリティプログラミング ―Pythonで学ぶハッカーの思考

サイバーセキュリティプログラミング ―Pythonで学ぶハッカーの思考

『徳丸浩のWebセキュリティ教室』

徳丸浩のWebセキュリティ教室

徳丸浩のWebセキュリティ教室

もうちょっとライトな内容。。

コンピュータの低レイヤー系

『コンピュータシステムの理論と実装』

コンピュータシステムの理論と実装 ―モダンなコンピュータの作り方

コンピュータシステムの理論と実装 ―モダンなコンピュータの作り方

NANDみたいな低レイヤーから入って、最終的にテトリスをつくっていく、みたいな説明。

『ハロー "Hello, World"』

例えばprintfはどうやって動いてるか?みたいな話を説明してくれる。

データ分析系(機械学習含む)

『10年戦えるデータ分析入門』

10年戦えるデータ分析入門 SQLを武器にデータ活用時代を生き抜く (Informatics &IDEA)

10年戦えるデータ分析入門 SQLを武器にデータ活用時代を生き抜く (Informatics &IDEA)

青木峰郎さんのデータ分析についてのお話。いろんなクエリで説明されてる感じだった。

『「少し先の未来」を予測する クックパッドのデータ分析力』

「少し先の未来」を予測する クックパッドのデータ分析力

「少し先の未来」を予測する クックパッドのデータ分析力

クックパッドのデータ分析サービス「たべみる」についての本。青木峰郎さんのコラムで開発の話が書かれてる。

『データ匿名化手法』

データ匿名化手法 ―ヘルスデータ事例に学ぶ個人情報保護

データ匿名化手法 ―ヘルスデータ事例に学ぶ個人情報保護

匿名化していかに活用するか?みたいな内容。

ヘルスデータ=健康や医療に関するデータは超センシティブな個人情報。

そんな個人情報の取扱は注意が必要だけど活用したらとても役立つよね、みたいなところに取り組むなら大事な感じ。

『ニッポンの個人情報』

プライバシーフリーク3人の対話。プライバシーの難しい話まで踏み込んでるけど対話形式なので、読み込むにはパワーが必要っぽい。

『データ解析の実務プロセス入門』

データ解析の実務プロセス入門

データ解析の実務プロセス入門

データ分析業務をすすめていく時の一連のプロセス、という内容。手法についても触れられてる?

『ITエンジニアのための機械学習理論入門』

ITエンジニアのための機械学習理論入門

ITエンジニアのための機械学習理論入門

Pythonをつかって機械学習、データ分析やってみよう的な。

『レイティング・ランキングの数理』

レイティング・ランキングの数理 ―No.1は誰か?―

レイティング・ランキングの数理 ―No.1は誰か?―

データ分析系の本としてくくってしまうと雑な扱いかもしれないけど、データ分析後の活用には必要そうな話。

レイティングについての本は珍しいっぽいけど、ただ、数理系の本らしい。

アプリ関連

Unreal Engine 4 ゲーム制作超入門』

Unreal Engine 4 で極めるゲーム開発』

Unreal Engine 4で極めるゲーム開発:サンプルデータと動画で学ぶUE4ゲーム制作プロジェクト

Unreal Engine 4で極めるゲーム開発:サンプルデータと動画で学ぶUE4ゲーム制作プロジェクト

https://www.unrealengine.com/what-is-unreal-engine-4

2014年まではUnityが多かったけど、Unreal Engineも増えてきた。

『アプリビジネス成功への法務戦略』

アプリビジネス成功への法務戦略 -開発・リリース・運用に必要な法律知識-

アプリビジネス成功への法務戦略 -開発・リリース・運用に必要な法律知識-

Excel関連

2015年は『たった1日で即戦力になるExcelの教科書』が売れてたり『エクセル関数 北斗百列拳』がでてたりと、Excelの本が多く出版されてる/売れてる。

『迷惑をかけないExcel』という本はよさそう。入力と計算と出力をわける、みたいなところなんかはよい指針。ワークシートの内容が多いっぽい。

会社の非プログラマメンバーに共有しておく。

たった1日で即戦力になるExcelの教科書

たった1日で即戦力になるExcelの教科書

世紀末救世主伝説 エクセル関数北斗百列拳 (Gakken Computer Mook)

世紀末救世主伝説 エクセル関数北斗百列拳 (Gakken Computer Mook)

迷惑をかけないExcel

迷惑をかけないExcel

関数型プログラミングに目覚めた!!IQ145の女子高校生の先輩から受けた特訓5日間』

ネットで話題になったし、内容について合ってる間違ってる、みたいな話があるけど、読み進めたくなる文章。

著者さんの関数型プログラミングへの想い、文章力、が強い本。

クラウドを支える暗号技術』

クラウドを支えるこれからの暗号技術

クラウドを支えるこれからの暗号技術

PDFでダウンロードできるけど、本も出てる、みたいなのらしい。目次を見る限りもりもり。

http://blog.cybozu.io/entry/8567

たまにはプログラミングではなく、ロードバイクの話。

といってもライドではなく通販について。

ざっくり言うと、Wiggleで注文しても全然荷物が来ない場合の対処方法。ただしお問い合わせ番号(追跡番号、Tracking Code)がある場合に限る。

Sugilogのケース

  • Wiggleでの購入実績:ある。
  • 送り先の住所:前回購入時から変更なし。
  • 購入したもの:冬用ジャージ上下。2万円くらい。
  • 配送オプション:日本まで追跡番号付き配送

配達状況

  • 2015/12/13 : 注文、同日中に配送処理完了。
  • 2015/12/14 : 配達業者(Parcel Force)で受付完了、発送。
  • 2015/12/18 : 中国に到着。
  • ... その後消息を断つ。

問い合わせ状況

  • 2015/12/21 : Wiggleに荷物が来ないことを問い合わせ。確認する旨連絡がきて、その後連絡なし。
  • 2015/12/22 : Wiggleに問い合わせの返信を催促。配達業者(Parcel Force)に催促したとの連絡。
  • 2015/12/24 : 郵便局の国際郵便窓口に問い合わせ。郵便局ではわからないから税関に問い合わせして欲しいと言われる。
  • 2015/12/25 : 東京税関の国際郵便の窓口に問い合わせる。税関ではわからないから国際郵便局に問い合わせして欲しいと言われる。
  • 2015/12/25 : 東京国際郵便局に問い合わせる。確認の結果、中国に配達されて住所不明で返送処理がされていることがわかる。
  • 2015/12/25 - ... : Wiggle.co.ukに問い合わせ中。

どうして配達がされないか?

  • はっきりとした原因は不明。
  • 東京国際郵便局の人の仮説は2つ。
    1. 荷物のラベルに書かれた住所が間違っているケース。
    2. イギリスの配達業者が漢字の住所を中国宛だと思って送ってしまったケース。

問い合わせ先別でわかること

Wiggle.jp

日本語の窓口担当者が、イギリスと連絡をとってくれる感じ。

今回は、結果論ではあるが、十分な確認をしてもらえなかった。

Wiggle.co.uk

現在問い合わせ中。12/25はクリスマス休暇でガッツリ休みに入ってるらしい。

英語での問い合わせになるけど、たしかな情報が得られるはず(期待も込めて)

郵便局の国際郵便窓口

https://www.post.japanpost.jp/int/question/tel.html

お問い合わせ番号からなんとなくな情報を教えてもらえる程度。案内は丁寧。

イレギュラーなケースだと範疇を超えるっぽい。

東京税関の郵便窓口

http://www.customs.go.jp/tokyo/yuubin/yubinmadoguchi.htm

税関での状況を教えてもらえる。

東京税関でめちゃくちゃに荷物が届いて、仕事が滞っているのか、とか。

税関に入ってきたものはだいたいすぐにチェックはされるみたいなので、追跡していて東京税関が書かれていなければ、東京税関までそもそも届いてない可能性が高いらしい。

案内は丁寧にしてもらえる。

東京国際郵便局

https://www.post.japanpost.jp/cgi-shiten_search/shiten.php?id=5559

お問い合わせ番号を伝えれば、荷物の状況を確認してもらえる。

Sugilogのケースで言えば中国で返送処理がされてる、みたいなことを教えてもらえる。

1時間かけてやっと電話が繋がるレベル。根気が必要。電話がかかってしまえば、最も正しい情報にありつける可能性が高い。

なぜかホームページにはフリーダイヤルしか書かれていない。携帯電話からだとつながらない。

勝手に電話番号書くのもまずいのでここでは書かないけど、税関の窓口の人は教えてくれた。

荷物の実際の宛先がどこであったか、みたいな情報は確認できない。あくまで配達状況のみ。

今回からの学び

Wiggleは荷物の配送には責任をもっていない(と思われる)。

  • 6日で付くはずの荷物が全然届いていなくても気に留めていない。
  • 問い合わせをうけても、荷物の状況がどうなっているのかを確認していない。配達業者に催促するレベルまで。

イギリスから中国を経由して日本に配達されることはまずないらしい。

  • 中国でトランジットしてるの?変だな?と思った時点で問い合わせないといけなかった。
  • 配達は6日前後くらいかかるからまぁいいよね、みたいに思っていたことも購入者としての責任感もなかったのかもしれない。

クリスマスとか外国の人ががっつり休みそうなころの通販は危うい。

  • 問い合わせに対するレスポンスが、やばいくらい遅くなる。
  • はやめはやめのコンタクトを。

AWSのLambdaでyield(だめでした)

AWSのlambdaでnodejsを使って、並列処理&直列処理をうまく扱えないかと思ってテスト。

Promisecoを使いたい。

...

失敗。。。

正確に言うと、Promiseとcoというか、直列処理のyieldを書くときのfunction *()な構文がエラーしてる。

ということで確認。

var exec = require("child_process").exec;

exports.handler = function(event, context) {
  exec("node --version", function( _1, stdout, _2 ) {
      console.log( stdout );
      context.succeeded( stdout );
  });
};

答え:v0.10.36

だめでした。(2015.08.24の僕のアカウント)

きっとどこかにnodeのバージョンもかいてあるんでしょうね。僕は見落としが多い男です。

fluentd pluginを作ってみて

最近elasticsearchやらfluentdやらのことについて勉強していて、理解が浅いことに気づいたので、とりあえずfluentdのpluginを作ってみた。

fluent-plugin-nested-hash-filter | RubyGems.org | your community gem host

作ってみて気づいたことをメモ的にまとめておく。間違っていることもおおいにあるだろう。

テストはtest-unit

rspecも使えるらしい記事はいろいろ出ているけど、guardを併用するとなんか色々めんどくさい(というか諦めた)。

その煩わしさを味合うのは、rspecを使って気持よく開発をする目的に反するきがしたので、test-unitを使うことにした。

そもそもfluentdがベーシックにサポートしているのがtest-unitだから、まぁいいんじゃないか、と。

普通のrubygemsとは異なるディレクトリ構造

普通なら、lib/{gem_name}.rbを作ってメインでrequireさせるソースを用意して、追加のライブラリはさらにlib/{gem_name}/...につくってくと思う。

fluentd用のソースは、基本がlib/fluent/plugin/の下に作っていく。一つのプラグインでinputとoutputをそれぞれ提供するなら、lib/fluent/plugin/の下に2つ(以上)のソースファイルができることになる。

名前空間を切っておこうとか、あまり考えないほうが楽そう。

fluentdに登録するプラグインのtype

登録するプラグインの種類と、typeの名前、そのソースファイル名は連動している。

https://github.com/fluent/fluentd/blob/master/lib/fluent/plugin.rb

   def try_load_plugin(name, type)
      case name
      when 'input'
        path = "fluent/plugin/in_#{type}"
      when 'output'
        path = "fluent/plugin/out_#{type}"
      when 'filter'
        path = "fluent/plugin/filter_#{type}"
      when 'buffer'
        path = "fluent/plugin/buf_#{type}"
      else
        return
      end
   end

そこんとこ自分は、ドキュメントで読み飛ばしていたかもしれなくて、プラグインが読み込まれないと言って、時間を使ってしまった。

outputプラグインをfilter的に使う場合

タグの名前を変更できるようにするなり、何か工夫しないと、タグの名前が常に同一になるため、ループしてしまう。

今回は、タグ名にプレフィックスをつけてもらうようにしてみた。

Vagrantを使って検証環境を作る

VagrantVirtualBoxだったりEC2だったりをセットアップから起動まで簡単(?)にできるっぽいのでやってみた。

途中ハマりまくったので、徒然にメモを残しておくレベルでご勘弁。

リポジトリ

https://github.com/sugilog/vagrant.local

環境

クライアント: Mac OSX Yosemite 10.10.3

VirtualBox

Vagrant

  • v1.7.2
  • .dmgからセットアップ。
  • provision関連はドキュメントを参照。
  • Plugins
  • vagrant-berkshelfはとりあえず使わない。

Chef-DK

  • v0.4.0
  • Chefを使うのにこちらのほうが便利そうだったので。
  • Berkshelfもこみこみ。

EC2

手順

環境に描き上げたパッケージは予めインストール。

作業用のディレクトリを作成する。

metadata.rbを作成する。

  • Berkshelfをinitするときに必要。
  • 最低限必要なのはname 'NAME'のみ。

berks initする。

Berksfileに必要なcookbooksを追加してインストール。

  • berks vendor DIRNAME
  • chef.ioでレシピを探す。
  • 個人で使用するくらいなら、バージョンの指定は省略して良さそう。

Vagrantfileに設定を書き込む。

  • VirtualBox向けの設定
  • EC2向けの設定。
    • dummy boxの指定。
      • urlはhttps://github.com/mitchellh/vagrant-aws/raw/master/dummy.box
    • アクセスキーなどのEC2へのアクセスデータ
    • リージョンやサブネットなど設定周りのID。
    • Chefの設定
    • Provisioningするときのシェルスクリプト的な。
  • VirtualBoxとEC2向けの設定はうまく設定すれば共通化できる。
    • VirtualBoxでセットアップをテストしておけば、EC2でのセットアップを必要最小限にできる。
  • Provisioningについて
    • rootユーザーでなく実際に作業するときのユーザー向けの設定をする場合は、privileged: falseにするのを忘れずに。
  • EC2向けのアクセスキーなどの管理。
    • バージョン管理の対象から外したファイルに設定を書き込んでおいた。
    • 本当はアクセスキーのファイル管理は危ないので、環境変数からの読み込みがいいか。
  • うまく行かなかったレシピ。
    • vim
    • mysql
    • redis
    • あとで手動で入れればいいのでスルー。

vagrant up

  • まずはVirtualBox向けに。
    • Chefでうまくいかないものはどんどん外したほうが良さそう。
  • AWSはマネジメントコンソールを開きっぱなしにして、変なリージョンにインスタンスが立ち上がってないかとか、確認しながらが吉。

Vagrantの後

個人利用のみなので、いろいろ手動ですがご容赦を。

参考

先に、参考にした記事とかを。