2024.10.10
将来は卵1パックの価格が2倍に? 多くの日本人が知らない世界の新潮流、「動物福祉」とは
リンクをコピー
記事をブックマーク
福田優真氏(以下、福田):では「AWS Outposts上のリソースをCDKする」という話で、NTT Communications株式会社の福田が発表します。
目次です。まず自己紹介をして、そのあとにAWS Outpostsについてどんなものかお話しして、最後にAWS Outposts上で扱うリソースをCDKする方法について解説して、まとめに入ります。
自己紹介ですが、名前は福田優真です。NTT Communicationsのイノベーションセンターに勤めていて、ハイブリッドクラウドであったりマルチクラウドであったり、主にクラウド周りを担当しています。
今回取り扱っている元というか、ニュースリリースやNTT Com. から出ています。また、発表で扱う内容は弊社のエンジニアブログに書いてあるので、そちらを参照してもらえればと思います。
本題に入っていきます。今回は、先ほどから何度か言っていますが、AWS Outputs上で動くリソースをCDKで管理したいというのがあったので、それをやっていろいろとわかったことや、難しいところを共有できればと思います。
さっそく苦労した点についてちょっと共有したいと思います。Outpostsを触るにあたって、とにかくCloudFormationのサポートがあまりまだ手が回っていないところがありました。カスタムリソースで自分でガリガリとやっていかなきゃいけない部分がけっこうあります。
サポートをしていてもL1レベルだったりして、リソース上で扱うのはL2でもあったりはするんですが、デプロイ時に「このOutpostsにデプロイしてくれ」みたいなのが指定できなかったりして、まだちょっとL2レベルではいろいろとできない状態なので、L1でがんばらなきゃいけないところがあります。
こちらからもいろいろと触っているうちにわかってきたこととか、足りないところに関してはAWS側に適宜フィードバックしているので、もしかしたら今後、状況が変わる可能性はあるかもしれません。ただ、今はちょっとがんばらなきゃいけない感じです。
一部のリソースも、別のリソースを利用するのにいろいろとデプロイ単位を決めなきゃいけなかったりはするのですが、依存性があるようでないものもあります。そのデプロイ単位をどう切り分けるかは、けっこう最初に困ったところです。
また、AWS Outpostsに関してCDKでやった例がほとんどネットワーク上には転がっていませんでした。要はレファレンスの実装とかがあまりないので、自分でドキュメント、APIレファレンス、CDKコマンドから出てくるエラーメッセージなどとひたすら睨めっこして、解析して、「どうやって動かすんだろうな」と試したのは苦労した点です。
それ以外にも細々と苦労した点はけっこうあるんですが、大まかにこんなところに苦労しました。
「AWS Outpostsってどんなものなの?」とわからない人もいると思うので、ちょっと解説します。
こちらはAWSが出すハイブリッドクラウド製品です。そもそも「ハイブリッドクラウド製品ってなんなの?」というのがあると思うので、ハイブリッドクラウドについて解説します。
オンプレミスにクラウドサービスを導入するためのソリューションです。要はオンプレ上でネットワークを外出しできず、そのせいでクラウドサービスが利用できないところに食い込んでいくサービスです。
AzureやGCPやAWSで用意されて、それぞれGoogle、Microsoft、AWSなどが今展開しています。Azureであれば、Stack HubやHCIが出ていて、GCPであればAnthos、最近であればDistributed Cloudなるものも出てきたらしいです。AWSも最近はOutpostsという、今回紹介するやつを出していて、今回はこれにフォーカスして話します。
ハイブリッドクラウドを入れることでパブリックな場所に流さなくていい、データをパブリックなネットワークを介さなくてもクラウドサービス利用ができるようになるところがけっこうな強みです。
こういうクラウド製品を導入しにくい場所、例えば工場だったり、データがちょっと出せない、オンプレじゃなきゃいけないところにいろいろと食い込んでいく製品です。
ハイブリッドクラウド製品を導入した時にどうなるか、概念図を見ていきたいと思います。今までであれば、雲で表すと、パブリックインターネットを介してオンプレから出て、AWS上のサービスAzureみたいな感じでした。
ハイブリッドクラウドサービスを入れると、これを一部オンプレ内に持ってきて、例えばEC2であったりS3であったりをオンプレ内のネットワークで完結して触ることができるようになります。引き続きパブリック上のS3であったりEC2であったりも触れるんですが、これの一部をオンプレ内に展開できるのがおもしろいところです。
Outpostsについてもう少し詳しく解説します。AWSのすべてのセットではなくて、サブセットが提供されます。EC2とかEKSとかALBとかS3とか、必要なものは一通りOutposts上で動くようになっています。Outpostsの管理もOutposts上で動くリソースもそうなのですが、パブリックのAWSと変わらない体験を提供してくれます。あとで画像を見せますが、マネジメントコンソールから、いろいろと普通にいじれる感じになっています。
パブリックなAWSのリソースともシームレスに連携可能です。パブリック上のEC2からOutposts上のEBSをマウントして利用することも可能です。
今Outpostsには42U ラック製品と1U/2Uのサーバータイプの2つがあるのですが、今回N Com.では42U ラックを導入していて、そちらをいろいろと触ったので、42U ラックで解説していきたいと思います。
Outpostsの管理ですが、マネジメントコンソールからOutposts IDが割り振られていて、ここの上でOutposts関連の管理がいろいろとできます。Outposts上で動くリソースも、VPCマネジメントコンソールの他のパブリック上のものと同じように管理できます。
Outpostsをデプロイすると、どういうネットワーク構成になるかを見せます。オンプレ内にOutpostsを設置するのですが、Outposts自体は1つのAZにひもづいているので、AZがオンプレ内に拡張されるようなイメージになります。この拡張されたAZ内にOutposts上のプライベートサブネットを置いていったり、リソースを置いていったりします。
なので、Outpostsをいじる時は、たまにですがAZを意識しなければいけないことがあったりします。AZに関してはいろいろ注意が必要です。
実際に導入すると、どんなものがくるのか。AWS公式から引っ張ってきましたが、こういうけっこうこぢんまりした筐体が届いて、それをデータセンター内に入れて、ネットワークにつないで利用します。
「じゃあOutpostsって、どんなユースケースがあるの?」というところ。Outpostsのユースケースとして、まずオンプレ内に設置するので、低レイテンシなコンピューティングが実現できるところが大きいです。
Public AWSの場合は、やはりパブリックネットワークを通さなければいけないので、その分だけネットワークレイテンシが大きくなります。Outpostsであれば、そのままオンプレのネットワーク内に設置するので、パブリックネットワークを通さない分だけレイテンシを低く抑えることができます。なので、調べた限りではゲーム系とかでも使われたりしているらしいです。
他にもローカルなデータ処理が可能になります。オンプレ内に設置するので、AWSのクラウドサービスを利用しているんだけれども、外に出ないでローカルにデータ処理ができるのがもう1つのユースケースです。
また、近年ではEUなどで顕著ですが、データを特定の地域にとどめておけという法律があります。そういうデータレジデンシーの観点ですね。これもOutpostsを導入しておけば、S3もそうですが、データをデプロイ先にとどめておくことができるので、データレジデンシーの観点からユースケースがいろいろと出てくるところもあります。
あとは、オンプレ環境をいきなりクラウドに引っ張っていく場合、AWSもそうですが、AWS特有のネットワークを知らないといけないんですけども。その前段として、Outpostsを導入して、そこの中にEC2 Instanceを立てたりしてサーバーに持っていくみたいな、オンプレ環境のモダナイズの、クラウド移行の前段として利用されるケースも考えられると思います。Outpostsにはこういったユースケースが考えられるので、導入すればいろいろとおもしろいところが出てくると思います。
実際に、今回このOutposts上でいろいろなリソースをCDKで管理して動かしてみたので、ちょっとそれについてお話できればと思います。
何度も言いますが、Outposts上で動くリソースをどうしてもCDKで楽に管理したいし、TypeScriptで管理したいという思いがあって、今回これをいろいろガリガリとやってみたという感じです。
今回試したリソースはいくつかあるのですが、そのうち発表するリソースは、subnet、EBS Volume、ALB、S3 on Outpostsの4つです。S3とちょっと名前が違うのは、Outposts上に載るのは普通のS3なのですが、AWS側の資料を探していたらOutposts上に載せるものはS3 on Outpostsという別の名前がついているみたいだったので、これも呼称を合わせてS3 on Outpostsと記載しています。
試した結果ですが、一部カスタムリソースを使わなきゃいけないのと、L2のサポートがまだなので、CFnのL1とちょっと向き合わなければいけないのがつらいところです。
もしかするとほとんど触る機会がないので、カスタムリソースをご存じない方もいると思います。これについて解説していきたいと思います。
カスタムリソース自体は、CloudFormationが対応していないリソースを管理する仕組みです。CloudFormation上で、ある意味無理やりCloudFormationで管理されていないリソースを管理するための枠組みです。
これ自体は単純に、作成とか更新とか削除のライフサイクルをフックしてくれるLambdaを用意すればよくて、そのLambdaで、作成時にリソースを作る、更新する、削除するみたいなことを担当してあげればいいフレームワークになっています。
CDKでやる場合は、Lambdaを用意して、あとはprovider frameworkというAWSが提供するフレームワークに則ってボイラープレートを書くと、比較的楽にカスタムのリソースを管理できます。
具体的にどういうLambdaを書くのかというと、こういう感じのコードです。作成のeventなのか、削除のeventなのか、更新のeventなのかが来るので、これを見て各ライフサイクルに合わせてリソースを操作します。例えばCreateHundlerの中にALBを作ってあげたりします。
CDK側ではどういうコードを書くか。先ほどのLambdaをlambda.Functionで作って、custom-resourcesというライブラリの中にあるproviderを使ってonEventHandlerに先ほどのLambdaを登録します。
最後にaws-cdk-libの直下にCustomResourceというリソースがあるので、こちらにprovider.serviceTokenというものをお決まりで登録する、というコードになっています。こんな感じです。
たまにLambdaにいろいろと引数を渡したいことがあると思いますが、aws-cdk-libの下にあるcustom-resourcesの中に、propertiesというプロパティがあって、こちらにオブジェクトでキーバリューを入れて指定すると、そのままオブジェクトがResource propertiesという名前でLambdaに渡ってくるので、それを使って引数処理をすることは可能です。
今回のカスタムリソースは、subnetとALBの2つで使わなければいけません。subnetに関しては、実はデプロイを使わなくていいのですが、オンプレ上のネットワークからAWS Outpostsのリソースに接続する際に必要となるIPアドレス、顧客所有のIPを各種リソースに自動でつけるMapCustomerOwnedIpOnLaunchだったかな? という設定をつけるのにL1すら対応していないので、ちょっとカスタムリソースでがんばらないといけないのが1つあります。
ALBも、Outposts上でAPI上はデプロイできるのですが、L1レベルでのサポートすらないので、こちらもカスタムリソースでがんばらなければいけないところがありました。
逆にS3 on OutpostsとEBS VolumeはL1でサポートをされているので、実はカスタムリソースは要らず楽ができます。ただS3 on Outpostsに関しては、ライブラリで見ると「プレビュー段階だよ」というのがつけられているので、バグを踏み抜く可能性もあるのかなという感じです。
(次回へつづく)
関連タグ:
2024.11.13
週3日働いて年収2,000万稼ぐ元印刷屋のおじさん 好きなことだけして楽に稼ぐ3つのパターン
2024.11.11
自分の「本質的な才能」が見つかる一番簡単な質問 他者から「すごい」と思われても意外と気づかないのが才能
2024.11.13
“退職者が出た時の会社の対応”を従業員は見ている 離職防止策の前に見つめ直したい、部下との向き合い方
2024.11.12
自分の人生にプラスに働く「イライラ」は才能 自分の強みや才能につながる“良いイライラ”を見分けるポイント
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.11.11
気づいたら借金、倒産して身ぐるみを剥がされる経営者 起業に「立派な動機」を求められる恐ろしさ
2024.11.11
「退職代行」を使われた管理職の本音と葛藤 メディアで話題、利用者が右肩上がり…企業が置かれている現状とは
2024.11.18
20名の会社でGoogleの採用を真似するのはもったいない 人手不足の時代における「脱能力主義」のヒント
2024.11.12
先週まで元気だったのに、突然辞める「びっくり退職」 退職代行サービスの影響も?上司と部下の“すれ違い”が起きる原因
2024.11.14
よってたかってハイリスクのビジネスモデルに仕立て上げるステークホルダー 「社会的理由」が求められる時代の起業戦略
2024.11.13
週3日働いて年収2,000万稼ぐ元印刷屋のおじさん 好きなことだけして楽に稼ぐ3つのパターン
2024.11.11
自分の「本質的な才能」が見つかる一番簡単な質問 他者から「すごい」と思われても意外と気づかないのが才能
2024.11.13
“退職者が出た時の会社の対応”を従業員は見ている 離職防止策の前に見つめ直したい、部下との向き合い方
2024.11.12
自分の人生にプラスに働く「イライラ」は才能 自分の強みや才能につながる“良いイライラ”を見分けるポイント
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.11.11
気づいたら借金、倒産して身ぐるみを剥がされる経営者 起業に「立派な動機」を求められる恐ろしさ
2024.11.11
「退職代行」を使われた管理職の本音と葛藤 メディアで話題、利用者が右肩上がり…企業が置かれている現状とは
2024.11.18
20名の会社でGoogleの採用を真似するのはもったいない 人手不足の時代における「脱能力主義」のヒント
2024.11.12
先週まで元気だったのに、突然辞める「びっくり退職」 退職代行サービスの影響も?上司と部下の“すれ違い”が起きる原因
2024.11.14
よってたかってハイリスクのビジネスモデルに仕立て上げるステークホルダー 「社会的理由」が求められる時代の起業戦略