ALB
リスナールールに認証アクションを追加する
リスナールールに認証チェックを追加できる。cognitoユーザー属性などを確認できる。
OIDCを使用してIdPへのログインを要求することもできる。
ルーティングルール
クッキーの値などを参照して振り分けができる
Lambda統合
できる
Step Functions
AWS Step Functions Local
ローカルでStep Functionsをテストできる
cognito
IDプレフィックス
cognitoのユーザーIDはS3バケットポリシーから動的に参照できる
ユーザーIDごとに自分のディレクトリしかGETできない、とかできる
DynamoDB
DynamoDBストリーム
DynamoDBテーブルの変更をリアルタイムで捕捉し、その情報を時系列で保存する機能
Time to Live (TTL)
アイテムに設定された期限レコードを参照し、自動削除する機能
パーティションキー、ソートキー、GSI、LSI
神記事。
レコードはパーティションキーに基づいてパーティションされる。ソートキーが存在する場合、ソートキーを参照し並び替えが行われる。
パーティションキー+ソートキー(あれば)がプライマリキー
GSIはパーティションキー+ソートキー(あれば)を変更するインデックスを作成する
LSIはソートキー(あれば)を変更するインデックスを作成する
ID(P), name(S), type, created_atのテーブルがあるとして、、、
typeごとにレコードを取得する場合、パーティションキーを変更する必要があるため、GSIを作成する
最新のレコードを取得したい場合、パーティションキーはそのまま、ソートキーをcreated_atに変更する必要があるため、LSIを作成する
batch系API
複数のテーブルに複数のレコード操作を行うことができる
操作は並列処理されるため、単一レコード以外を操作する場合はこれを使用する
Amazon Macie
概要
S3に保存された機密データの検出ができるサービス。めいしー
スキャン対象の選択
SensitiveData:S3Object/Personal:個人情報
SensitiveData:S3Object/Financial:支払い情報などの財務情報
lambda
イベントソースマッピング
DynamoDBやSQSなどのサービスの変更を、lambdaサービス側から検知してlambdaを実行するサービス
APIGatewayやS3からのトリガー機能は簡易イベントソースマッピングという認識
ウォームスタート時に一部処理を使いまわせる
DBへのコネクションの取得などをhandler関数外で実行すると、
ウォームスタート時に、そのコネクションを再利用するような仕様にすることができる
非同期呼び出し
関数の実行結果を待たず、実行できたかどうかだけのステータスコードが返却される
イベント駆動だとこの呼び出し方でいいなー
非同期呼び出しのdestination機能
失敗時はSQS、SNS、lambda、EventBridgeにメッセージを送信できる
eventとcontext
ソースイベントの内容はすべてeventオブジェクトにはいっている
リクエストIDやリソースの情報などのAWSリソースの情報はcontextオブジェクトにはいっている
同時実行数
アカウントごとに決まっている。デフォで1000件
予約済み同時実行数
lambda関数に個別設定する。最大どれだけ同時実行できるか?の設定
特に大事な関数に設定することが想定されている。他の関数がどれだけ実効されていても、予約済み同時実行数だけは必ず実行できるようになる
CPUリソースの割り当て設定
開発者が任意で設定できるのはメモリ量だけで、CPUリソースは設定できない
メモリ量から自動的に割り振られるので、CPUを強くしたい場合はメモリ量を多めに設定する必要がある
バージョン間のルーティング比率設定
バージョンを指定してルーティング比率を設定できる
カナリアデプロイとかA/Bテストができる
EFS
lambdaからアクセス
できる
AWS Systems Manager Parameter Store
詳細パラメータ機能
ExpirationとExpirationNotificationポリシータイプを設定でき、失効設定とその通知ができる
AWS Elastic Beanstalk
概要
デプロイやホスティング、接続設定などを一気通貫にやってくれるサービス
amplifyの初歩ver
イミュータブルデプロイとBlue/Greenデプロイ
Elastic Beanstalkでは、イミュータブルデプロイとBlue/Greenデプロイの意味がちょっと特殊
イミュータブルデプロイではスケーリンググループを追加し、ALBに紐づけて、検証後に移行する。CodeDeployのBlue/Greenな挙動
Blue/Greenデプロイでは、ALBごと環境を複製し、DNS切り替えで移行させる。めっちゃおおがかり
ローリングデプロイ
バッチサイズでローリングするインスタンスの数を指定できる
cloudfront
cloudfront関数
簡単なjsを実行できる
キャッシュキーの編集や、ヘッダー操作、URL書き換え、リクエスト承認など
Lambda@Edge
重めのものやAWS SDKの使用などが必要な場合、こっちを使う
cloudfront関数とLambda@Edge
オリジンプロトコルポリシー
ディストリビューション→オリジン間のポリシー
ビューワープロトコルポリシー
クライアント→ディストリビューション間のポリシー
AWS KMS
Encrypt API
データサイズの制限(4KB)がある暗号化API
平文とかの暗号化はこっち
GenerateDataKey API
各ファイルに一意なデータキーを作る
鍵での暗号化はopensslコマンドで実行する
API Gateway
ステージ変数
ステージごとに設定できるkey:value
マッピングテンプレートなどで参照できる
lambda非同期呼び出し
[統合リクエスト] で、静的な値として 'Event' を使用して X-Amz-Invocation-Type ヘッダーを追加でできるらしい
プロキシ統合はサポートされていないので注意
統合レイテンシーメトリクス
API Gatewayがバックエンドとの通信にかかったレイテンシー
レイテンシーメトリクス
API Gatewayがフロントにレスポンスを返却するまでにかかったレイテンシー
カナリア
ステージに設定することができる
デプロイ時にステージを選択する際、カナリアが設定されたステージを選択すると、A/Bが設定される
ElastiCache
キャッシュ戦略
キャッシュするタイミングについての戦略
遅延読み込み
キャッシュにない場合、プライマリにRクエリする
その後、キャッシュにセットする
キャッシュ最低限で良い場合
書き込みスルー
プライマリへのCUDクエリ時、常にキャッシュに追加する
MAXでキャッシュしたい場合
Memcached
並列処理できる点だけredisより勝っている
SAM
概要
サーバーレスアプリケーションモデルの略
CLIでlambda、APIGatewayの管理やローカルテストができる
段階的デプロイ
カナリアデプロイなどが利用できる
CloudFormation
CAPABILITY_IAM, CAPABILITY_NAMED_IAM
IAMを作成する際は、明示的にテンプレートの中で宣言しないといけない
--disable-rollbackオプション
ロールバックしないように設定できる。デバッグとかできる
カスタムリソース
cfnにフックしてlambdaなどのイベント駆動サービスを使用できる
ECR
基本イメージスキャン
OS スキャンしてくれる
拡張イメージスキャン
OS とプログラミング言語の脆弱性をスキャンしてくれる
AWS Encryption SDK
暗号化の仕様
暗号化したキーも暗号化後の値に合わせて保存する
複合もSDKで行うので、良い感じに処理できる
AWS Secret Manager
KMSでの暗号化
できる
クロスリージョンレプリケーション
できる
クロスリージョンアクセス
できる
Parameter Store
クロスリージョンアクセス
できない
AWS X-Ray
概要
アプリのパフォーマンスを分析してくれるサービス
X-Rayデーモン
インストールすると自身のX-Rayにデータを送信してくれるツール
オンプレのサーバーやEC2にインストールしたりして使う
ECSをX-Ray分析できるようにする
- taskdefを編集し、X-Rayコンテナを作成する。サイドカーコンテナと呼ばれることも
- SDKを利用して、X-Rayコンテナへ情報を送信する
S3
Glacierの取り出し時間
- Glacier Instant Retrieval:即時
- Glacier Flexible Retrieval:迅速(5分未満)、標準(3~5時間)、大容量(5~12時間)
- Glacier Deep Archive:標準(12時間)、大容量バルク(48時間以内)