LoginSignup
1
1

AWSについての個人的メモ

Last updated at Posted at 2022-10-30

はじめに

あくまで個人的メモです。特に記事を1つ作るほどでもないけど、覚えときたいことをちょこちょこメモする用です。

役立つ資料

ハンズオン

サーバーレスをサクッと作る

Lambda、API Gateway、DynamoDBを勉強したい人におすすめ。

Cloud9とVSCodeで開発環境を構築する

EC2インスタンスの選び方

非本番環境にはT3がおすすめ

汎用のインスタンスファミリーには、M系とT系がある。M系にはM5M4があり、T系にはT3T2がある。M系はCPUやメモリ、ネットワークをバランスよく提供するものなので、一般的な本番環境用であればM系が良さそう。T系はバースト機能がついている。スパイクが想定されるような本番環境であればT系が良さそう。

開発環境やステージング環境には、M系よりもT系がいい。もちろん開発環境やステージング環境ではバースト機能は必要ないことが多いがM系よりもT系の方が単純に安いので。

またT2よりも、T3の方が安く、パフォーマンスも高いので、特に理由がなければT3を選ぶべし。

RDSとDynamoDBはどっちを使うべき?

DynamoDBは、RDSに比べて一貫性が低い代わりに、スケーラビリティが高い。ただ上記の記事で以下のように言及されているように、よほどトラフィックの多いサービス以外、あまり関係ないかと。なのでより扱いやすいフルマネージドのDynamoDBの方がいいのではと個人的には思う。

しかし、極端にハイトラフィックへの対応や一貫性の確保が必要となるプロジェクトは、それなりにエッジケースではないかとも思っています。多くのシステムはRDSでもDynamoDBでも実装可能でしょう。

RDSを使用するにはVPCを構築する必要があるのと冗長化、容量などを考える必要があるが、DynamoDBはサーバーレスなのでVPCは必要ないし、冗長化や容量を気にしなくていい。ただ、DynamoDBはRDSに比べて検索がしづらいというデメリットがある。RDSとDynamoDBのそれぞれのメリットを活かすためにハイブリッド構成にするのもあり。

ELBの種類

AmplifyとCloudFront+S3の違い

Lambda Function URLs vs. API Gateway

個人的には、Lambdaから別のLambdaを呼ぶときに、呼ばれる方のLambdaにLambda Function URLsを使うのがいいかなと思った。ユーザーによって直接叩かれるAPI(Lambda)に関してはAPI Gatewayを使うのがいいかと。

Lambdaのレイヤー

レイヤーをLambda関数から使用するのに手こずったのでメモ。Zip化したPythonパッケージをレイヤーにアップロードすると思うが、Zip化するディレクトリの構造はpython/<パッケージ>にする必要がある。つまり、例えばrequestsというパッケージをレイヤーに加えたいときは、以下のようにディレクトリを作った上でZip化する必要がある。

% mkdir python
% cd python
% python3 -m pip install requests -t .

このようにしてレイヤーを作り、Lambda関数にそのレイヤーを紐づけたら、以下のように普通にLambda関数内ではパッケージをインポートできる。

import requests
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1