この記事は 弥生 Advent Calendar 2022 6日目の記事です。
こんにちは。弥生のSMART 推論チームでTechLやってる白井といいます。
2022年を振り返ると、AWSでいろいろとやってきました(現在進行系のものを含めています)
- SageMakerで機械学習の研究開発基盤を整える
- SageMaker Studioの環境構築
- SageMaker Processing Job/ Training Jobによる検証の自動化
- Webアプリケーション構築
- ECS on FargateでWEB API作ってみる
- データ連携のアーキテクチャ検討
- DynamoDBやS3からのデータ受け渡しについて比較検討
- ダッシュボード構築
- QuickSightでダッシュボード作成
- Step Functionsでデータ加工パイプラインの構築
- Redshift ServerlessをDWHとして運用
- DB移行
- DMSを利用したDB移行
それぞれ記事にしてもよかったのですが面倒なので…
そうだAWSでなにかやってみよう!と思った時、こういう感じでやるといい感じにできたな、という知見が溜まってきたので、そのあたりをダイジェストでお伝えしようと思います!
とにかく!小さく!!!試す!
○○と△△を組み合わせて××をやりたいんだ!!!という時、○○と△△と××を全部つなげて一気にやろうとすると、ほぼ上手くいきません。
たいてい謎エラーが出ます。
- 頑張ってたくさん細かい設定をしてしまったので、どこでエラーがでているのかわからない
- 状況を説明しようにも、細かいところをいじりすぎて説明するのも大変、、
- 調査に時間がかかったあげく、ちょっとした設定でミスってた😇😇😇
…なんてことはよくあります。。
エラーが発生しても原因が追求できるように、小さく試していったほうが良いです。プログラミングと同じですね。
テスト実行はお金や時間がかからないように工夫すると安く早く検証が回せるので、どんどん工夫しましょう!
例えば…
- インスタンスを立てるなら無料プラン・最小プランにする
- 小さいテスト用データを用意する
- まずは中間処理を省いた最小構成を構築する
といったやり方があります。
また、LambdaやStep Functionsはテストデータの検証がやりやすいようになっています。
支援ツール等もどんどん活用しましょう!
信頼性の高い情報を集める
○○をやってみよう!と思った時、こんなことないでしょうか
- 「○○ やり方」で検索
- 「○○やってみた」という個人ブログの記事を見つけ、それを参考にやってみる
- でも自分がやりたいのは○○+△△だから、こうすればいけるかな?でなんとなく設定をいじる
- 謎のエラーが出る
- ???どこを直せばいいのかわからない???
必ずしも個人ブログの記事が悪い、というわけではないですが、あまり詳しくないサービスを試したい時、まずは信頼性の高い情報からあたることが大切です。
ただし信頼性とわかりやすさは相反することもあるので、バランスよく質の良い情報から探していくと良いです!
というわけで個人的に情報源別に信頼度とわかりやすさについてまとめてみました!
- AWS公式ドキュメント:信頼性★★★ わかりやすさ★
- 最新かつ一番信頼できる情報です
(たまに怪しい) - ただ文章が少しわかりにくかったり、知りたいことが記載されていないケースもあります
- 最新かつ一番信頼できる情報です
- AWSの中の人が書いた資料(ハンズオン、登壇資料等):信頼性★★ わかりやすさ★★★
- 基本的なやり方だけでなく、概念やTIPSについて学べることもあります(これが結構大きかったりします)
- ものによっては非常にわかりやすかったり、ユースケースなどを教えてくれます
- ただし作成日によっては情報が古い可能性はあります
- やってみた系記事:信頼性★ わかりやすさ★★
- 同じ利用者の目線なので基本的にわかりやすく、ハマりポイントを先に知れます
- ものによっては情報が曖昧であったり、必要な情報が欠けている可能性があります
- あくまで参考情報ですが、企業発信の記事などある程度信頼性が高いものは活用していきましょう
- 個人的にクラメソさんの技術ブログはかなりお世話になっています
- よくわからないけれど設定したら動いた、みたいな内容であれば、設定内容が妥当かは自分で判断し直しましょう
※ハンズオン・やってみた系の設定はセキュリティ設定が甘いことが多いので注意!!※
記載通りに設定したら意図せずフルオープンの脆弱性の塊だったりします 😫
セキュリティまわり・権限まわりは何を設定するとどうなってしまうのか正しく理解し、自分で判断できるようになりましょう!
AWS Hands-on for Beginners Network編#1 AWS上にセキュアなプライベートネットワーク空間を作成するがおすすめです!!! そもそもネットワーク知識が弱いのであれば、基本情報の教本などでネットワークの基礎知識を復習しても良いかもしれないです
ズバリな情報に出会えない時
自分のやりたいことが○○と△△を組み合わせて××をやりたいんだけど、いい情報がないなー、という時、よくありますよね。
結論をお伝えすると……
そんな都合の良い情報は、ありません!!! (がーん)
○○の情報、△△の情報、××の情報をそれぞれ取得して組み合わせてなんとかやるしかないです。。
腹をくくりましょう…!😑😑😑
組み合わせたことでこの設定をこうしなければいけなかったのか…!みたいなこともよくあります。
そういったことは 積極的に技術ブログで記事を書いて公開していきましょう!!
エラーが出た時の対処方法
まずは自分の分かる範囲で調べてみましょう
- エラーメッセージを確認する、翻訳する
- 30%くらいは何すればよいのか答えが書いてあります
- エラーメッセージで検索する
- 同じエラーでハマっている人は世界中のどこかにいます
- 怪しそうな設定を変えてみる
- 環境を壊してもまた作り直せばいいだけなので、いろいろやってみましょう
- ただしどの設定をいじったのかはメモしておくと良いです!(わけわからなくなるので)
それでもわからないときは、 AWSサポートをさっさと起票しましょう
わからないものはわからないと 諦めることも大切です!
ドキュメントに大事なこと書いてないこともあるので、残念ながら自力ではわかりようがない場合も多いです(えーそんなのわからないよ、と何回思ったことか…)
諦めも肝心です!!
よくあるハマりポイント
連携先が見つからなかった系:通信経路がなかった
サービスがどこに配置しているか(Private Subnet/Public Subnet/VPC外)にもよりますが、通信経路がなくて連携先が見つからない、といったことはよくあります。
通信経路のチェックポイントごとに正しい設定がされていないと通らないので、調査が難しくてハマりやすいです😭
以下の点を確認してみましょう!
- エンドポイントの設定
- S3バケット名のタイポ、URI間違いがないか
- 配置しているVPC/Subnet
- 意図していないVPC/Subnetになっていないか(デフォルトVPCになっていた、とか)
- セキュリティグループの設定
- 連携元・連携先のインバウンドルール/アウトバウンドルールで許可されているか
- インターネット接続の設定
- VPCからインターネット接続が必要であれば、インターネットGW、NAT GWなど必要な設定が行われているか
- VPCエンドポイント
- エンドポイント設定が必要な場合、正しく設定されているか
- たいてい、このエンドポイントが必要だよ~とドキュメントに記載があるので確認しましょう
- エンドポイント設定が必要な場合、正しく設定されているか
権限なかった系:IAMロール作ってなかった
自動生成のIAMロールは、基本的には最低限の権限しかありません。
他のサービスにつなごうと思ったらできなかった系はこれです。
よく見るとドキュメントに「連携したかったらこのIAMロール必要」というのがさらっと書いてあることが多いです。
もっと!!強調してほしい!!!!!
新しいサービスだから対応してなかった系(詰み)
複数サービスが絡むアーキテクチャを構築する場合、そもそもサービスが対応してないなんてこともあります 😥
サービスが対応しているのかは事前に調査しましょう!
なんとなく行けそうな気がしても、よくよく調べるとできないこともあるので、
- とりあえず試してみる
- 最新情報を追う
- AWSサポートや有識者に聞く
といったやり方が有効です!
ちなみにできないと思いきや、設定を工夫すればできることもあります。これは聞くしかないです。。
結論:とにかく試行錯誤するしかない
というわけで、結局はいろいろな人や知識の力を借りてなんとかやっていくしかないです!!!
頑張りましょう!!!