名刺のOCR化を高速にやるためにプレミアム会員に。Facebook→Evernoteをはじめて設定。漫画カメラがにわかにブーム。自分では一枚も撮影してないけど。地震がきっかけで本格的につかいだしたようだ。名刺の整理がどうにもならずEvernoteのOCR機能はプレミアム会員になると高速化されるという話が信じられるまで1年かかかってしまったが。そんなわけで、Evernote大活用中。個人的な心象の類はどこにも書いてないのでかんがえてみればもったいない気もしている。this:シェアFacebookTwittertechevernoteVPCのメタパターンもしくは怠惰な私のVPC導入。2012/12/05皆様、昨日の松井さんの男気あふれる記事に度肝を抜かれた荒木でございます。毎度のことながら彼の軌跡は奇跡として語り継がれるといって間違いないでしょう。VPC環境構築のメタパターンと予告しました。実際のところCloudformationの出番は無限です。その中でも最も強力なのは、ある状態を保存再現する機能です。VPCのように面倒な環境構築に有効です。時間のない人のために結論を。CloudFormationはある時点の状態再現に有効です。VPCに関しては再現を自動化するのは諦めて、(時としてつまらない)設計を再現するためにCloudFormationを使いましょう。実はVPCIDを使えばClassicな環境からの移行は簡単!というわけで、CloudFormationこそがVPC導入のポイントかもしれません。これから述べる内容はELBアプリケーションサーバデータベース(RDS)のどこにでもある三段構えのサービスを題材にしています。CloudFormationの意義AWSを使ったシステム構成工数に関しては多くの方が考える問題です。システムは机上での設計ではなく、試行錯誤を経てサービスを作るべきだとは思います。実際のシステムでは、構成変更時にはテストが欠かせません。テストの与える影響の測定や変更前への切り戻しを意識したシステム構成を求められることはまちがいありません。そのために同一のシステムを構成し、部分的な変更を加えた後にテストを行うのが理想的な体制でしょう!その一方で、この師走のなか、毎回同じことを繰り返す時間はない、というのが本当のところではないでしょうか。何度でも速やかに構成(クローニング)できるようにして、ある時点でのシステムにもどせれば、どんどんチャレンジすることができるはずです。そこで役に立つのがCloudFormationです。テンプレート作成には3つの方法があります。最初の2つの方法は「部分的に変更を加えてきたシステム」において現実的な方法ではないでしょう。そこで3番目のCloudFormerの登場です。Consoleで数回クリックするだけで既存のシステムのコピーを起動可能です。準備:まずは、CloudFormer自体を用意する。https://console.aws.amazon.com/cloudformation/home?region=ap-northeast-1#cstack=sn~AWSCloudFormer|turl~https://s3.amazonaws.com/cloudformation-samples-ap-northeast-1/AWSCloudFormer.templateをクリックして、早速使ってみましょう。起動すると、次のような画面があらわれるはずです。CloudFormerはIAMのアカウントを使用するため、その確認のチェックはさくっと終わらせて前にすすみましょう。すると、こんな具合で最終的にシステムを作っていいかどうかの確認がはいります。躊躇せずにContinueしましょう。無事起動するとStatusがCREATE_COMPLETEに変わります。それまでは、Eventsでもみてニヤニヤしましょう。CloudFormerの使用CloudFormerを使用するには、CloudFormerの作成したURLにwebブラウザでアクセスします。そのURLはOutputsタブの中で確認します。するとこんな画面があらわれます。テンプレート作成対象リージョンを選択しましょう。あとは一本道です!含めるドメイン名を確認したり、EC2を確認したり、RDSを確認したり、セキュリティグループを確認したり。数個の画面でチェックをつづけると、S3に保存するように促されます。保存されたテンプレートはJSON形式で、その頭のほうが確認できます。ここまできたら、このテンプレートをつかってたちあげてみましょう。いえみなさん時間もないことですし、上がりそうだ!という雰囲気だけつかんでおきましょうか。作成したテンプレートの置き場だけは確認しておきましょう。このテンプレートがスタート地点になります。いえ、これで完璧か!といわれるとそんなことはありません。CloudFormerはまりポイント1:AMIは動作時インタンスのAMIである個人的にCloudFormerのハマリポイントはなんだと問われれば、AMI情報は動作時のインスタンスが起動した時点でのAMIであって、CloudFormerがAMIを作るわけではないところです。"m1.small",(以下略)こんなテンプレートがあるときは、このAMIの内容を変更したならば、自分でつくりなおさなければなりません。つくりなおさなければならないときは、マネージメントコンソールでインスタンスから右クリックして作りなおせばよいでしょう。CloudFormerはまりポイント2:Route53で指定している値は動作時ELBのCNAMEであるこう言われてもピンとこないかもしれません。},この、ResourceRecordsの内容はそのものずばりELBのCNAMEを指定しています。このままでは、ELBの定義ではなく、ELBのエンドポイントそのものを指定しているため、作成したELBからFn::GetAttを使って値を得る形式に変更します。}CloudFormerはまりポイント3:RDSの内容は動作時であるこれもELBと同じですが、データが消えるという意味ではもっと問題がおおきいかもしれません。スナップショットを作成したら、DBSnapshotIdentifierパラメータで指定しましょう。CloudFormerはまりポイント4:手修正でフォーマットを破壊するここまでうまく行っても、人間にはJSONやSGMLやXMLは無理だという説があります!もちろん慎重にやれとか、ダブルチェックしろとか、トリプルチェックしろ。N重チェックというループに陥いるのもいとおかしというところですが、そんなくだらないチェックには機械にやらせましょう。そこで登場するのがcfn-validate-templateコマンドです。テンプレートファイル名で、テンプレートがValidと言われるまでこころのままに修正しましょう。今時の人なら、こんなコマンドよりもVisualなアプローチのほうがいいかもしれません。MacならVisualJSONをつかってみましょう。構造も一発で確認できます。クローニング実行それでは準備したCloudformationを実行してみましょう。Stackボタンを押すところからはじまります。つづいてStackNameとJSONファイルの在り処を指定します。Stacksの画面から、Statusの変化と、Eventsの出力適宜Refreshしながら眺めて待ちましょう。CloudFormationではカバーできない部分のフォローにUserDataCloudFormationによって骨格はほぼ完成したもののたとえば、アプリケーション固有の設定はカバーできません。ここで登場するのが、UserDataです。yyyyyy.araki.inをSiteURLというリファレンスに書き換えています。ある意味かなり力技ですが、UserDataの万能感は異常です。VPCに関しては再現を自動化するのは諦めて、(時としてつまらない)設計を再現するためにCloudFormationを使いましょう。こんなことを書くのは、CloudFormerがVPCに対応していない試行錯誤したシステムの保存にフォーカスしていて、なおかつ、繰り返し単調な設計がつづくネットワーク再現に最適だからなのです。私はこんな指示書を渡されて、マネージメントコンソールから設定しろと言われたらいやになります。いくららくらくページを稼げるといわれてもスクリーンショットなんてとってられません。一方で、こういう繰り返しはCloudFormationならばコピペ一発です。なんという楽でしょう。失敗もへります!もっとも、コピペの結果はこんなダラダラとしたJSONになります。VPCの中へのサービス配置VPC内部のサブネット作成が完了したら、実際のサービス配置をはじめます。CloudFormationテンプレートの入れ子呼び出しまず最初のテクニックは、VPCサブネットを作成するために使ったCloudFormationテンプレートの呼び出しです。呼び出しは、AWS::CloudFormation::StackのPropertiesにTemplateURLとして与えます。},このテンプレートでは、呼び出し元となるCloudFormationテンプレートに実行結果の値を渡すために、Outputsを定義しています。}たとえばこんな具合です。RDSSubentBIdとして定義しています。}のように、Fn::GetAttを使っていつでも呼び出すことができます。親となるCloudFormationテンプレートでは、VPC環境に対応した修正が必要です。今回、VPC内で使用を定義するために特別なパラメータをあたえなければならないリソースタイプはAWS::ElasticLoadBalancing::LoadBalancerAWS::EC2::SecurityGroupAWS::EC2::InstanceAWS::RDS::DBSubnetGroupAWS::RDS::DBSecurityGroupという5つです。AWS::ElasticLoadBalancing::LoadBalancerELBはVPCにおいては、配置するサブネットと、セキュリティグループを指定します。ELBを配置するサブネットの指定は、AWS::ElasticLoadBalancing::LoadBalancerの中で、Subnetsで指定し、セキュリティグループも同様にSecurityGroupsとして指定する。......(略)AWS::EC2::SecurityGroupセキュリティグループは、AWS::EC2::SecurityGroupを使って指定します。VPC内においては、セキュリティグループも、どのVPCに所属しているかをProperties中にVpcIdとして宣言します。]}},AWS::EC2::InstanceEC2インスタンスもVPC内で起動させるためには、SubnetIdを指定します。(略)AWS::RDS::DBSubnetGroupRDSが使用するサブネットにはSubnetIdを指定します。]}},AWS::RDS::DBSecurityGroupRDSはさらにDBSecurityGroupも定義します。この例では、CIDRブロックを使っています。]}}以上の修正を加えたCloudFormationテンプレートをhttps://arakisa.s3.amazonaws.com/CloudFormation/eccube-vpc-06instance.jsonに置いておきます!ながーいのでニヤニヤする程度にとどめてくださいませ!結論CloudFormationはある時点の状態再現に有効です。VPCに関しては再現を自動化するのは諦めて、(時としてつまらない)設計を再現するためにCloudFormationを使いましょう。実はVPCIDを使えばClassicな環境からの移行は簡単!というわけで、CloudFormationこそがVPC導入のポイントです。異論は大いにあるでしょうけれども、今あるシステムを移行するほうが新規に設計するよりは難しいとおもいます。そんな手助けに(主に試行錯誤のためですが)なると幸いです。Controllerのオープンソース版。Linuxが噛んでる割にはライセンス記述がお粗末な件オブジェクトストレージのベンチマークツール、COSBenchオブジェクトストレージのベンチマークツール、COSBench2013年のAWSアップデートを料理にたとえるという難題へのチャレンジ。ELBをうまくつかうには、KeepAliveを有効にしよう。Timeoutは60秒よりだいぶ長くしよう。squidのsibling設定プレゼンの最後のスライドでは挨拶を書くな。ajaxというかXMLHttpRequestでeuc-jpを指定するのは、、いいのか?sshの問題がひとつ解決した。いわゆる理系だからって文章の読み書きがきちんとできるように学ぶべき、というのは当然で、だからすべての人が数学の証明を読み書きできるように中学生のときに数学の証明を学ぶんですよね。agoそうそうたる大企業の重役たちがConnectで自分のサービスをつくる、こんなハンズオンもしています。ago高校生のころ、入試の問題で数学と物理はどこまでむずかしくていい。東北大の入試は、ヒートポンプの計算問題だった。難しいより意味のある物理サイコーだとおもった。その後数年予備校で物理の講師してたのでそう思ってた。今でも東北大はそういう問題なのだろうか。使用に同意したとみなされます。