0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【AWS DVA C02】テスト対策メモ

Posted at

EC2

起動フロー
名前・タグ→AMI選択→インスタンスタイプ→キーペア→NW→ストレージ→詳細

ユーザデータ  :起動時にスクリプトを実行
起動テンプレート:起動フローの一連をテンプレート化する

アクセス
EC2アプリからAWSへのアクセスはSDKを通じて行う。手順は下記
環境変数-/home配下の情報-EC2インスタンスプロファイル

EC2からAWSサービスはIAMを通じて行う

SDK
設定ファイル(~/.aws/credentialks)に複数の認証情報プロファイルを定義することで、異なる環境の認証情報を安全に切り替えできる。

SDK for python(boto3)
pythonからAWSを操作するための対話式のライブラリ
100MBを超えるファイルには自動でマルチパートを実行する
KMS DycreptとGendatakey権限が必要

API Gateway

クライアント→メソッドリクエスト→統合リクエスト→バックエンド
クライアント←メソッドレスポンス←統合レスポンス←バックエンド

RESTAPI
・WEBサービスを外部から利用する
・ステートレス(状態保持しない)通信
・ステージ設定が必要
・リクエスト/レスポンスモデル(HTTP)
Web SocketAPI
・ブラウザとサーバ間で双方向通信
・ステートフル通信
・リアルタイム処理
・サーバ/クライアントモデル
HTTPAPI
・RESTに比べシンプル
・ステートレス
・ステージ設定は不要
・JWTはこいつのみ対応(Lambda Authonizer)

Lambda Authonizer
・Tokenbased:JWTやOAuthなど
・リクエストパラメータ:ヘッダやステージ変数など

リソース=パス メソッド=HTTPメソッド ステージ=バージョン

統合
AWS(Lambdaカスタム)    :AWSのサービスアクションを公開
AWS_PROXY(Lambdaプロキシ):クライアントからのリクエストをLambdaに
HTTP(HTTPカスタム)     :バックエンドのHTTPエンドポイントを公開
HTTP_PROXY(HTTPプロキシ) :クライアント←→HTTPエンドポイントにする
MOCK            :リクエストをバックエンドに流さずレスを返す

キーとプラン
APIキー  :APIを利用するユーザの識別し リクエスト時に提示し認証する
使用料プラン:APIの利用回数やリクエストレートを制限する
       キーと紐づけることでキーごとの制限が可能

Require Authorization
認証されたユーザのみキャッシュを無効化する

Lambda

Lambda環境変数
コードを更新せずに関数の操作が可能→異なる環境に対しキーと値のペア
機密性の高い設定パラメータを保存・管理可能

Lambda非同期呼び出し
SDK InvokeAPIを利用し InvocationType=Event を指定
関数は応答を待たずに制御を返すため並列処理が可能→大量のトランザクションを捌ける

同期呼び出し
API GWからLambdaの呼び出し

Lambdaエイリアス
発行したLambdaバージョンに対してポインタな識別子を定義する
エイリアス変更のみで以前のバージョンへの迅速なロールバックが可能

Lmabdaバージョン
ある時点でのLambda状態を固定し使用できる スナップショット的な

Lambda関数URL
直接アクセス可能なHTTPSエンドポイントを提供
'lambda:FunctionUrlAuthType:'NONE'条件で公開アクセスを許可

ランタイム
実行環境のこと。サポートは下記。他はカスタムランタイム
・Node.js・Python・Java・.NET・GO・Ruby

LambdaBasicExecutionRole
LambdaにCloudWatchlogsにログを作成し書き込むための権限を付与

イベントソースマッピング
ストリームベースのサービスとLambdaを接続する→新レコード検知で関数を実行する仕組み
失敗時の再思考とDLQをサポートしてる

Lambda送信先設定
非同期呼び出しの結果に基づき他のAWSにイベントを転送する

DynamoDB

条件付き書き込み
特定の条件が満たされた場合のみ更新を許可

レート制限 並列スキャン
制限あり:各セグメントの速度を制御し他の影響を減らす
制限なし:読取キャパシティの全体を消費する

BatchGetItem/WriteItem
単一のAPI呼び出しで最大100個のアイテムを一度に操作できる
バッチサイズを適切に調整し、スロットリングやエラーを対処する

Transactwrieeitems
Max25個のアクションを25個の異なるアイテムにたし実行でき、全成功or全失敗を保証
複数の書き込みアクションを単一の原始的トランザクションバンドルでき整合性を維持

scan:全テーブルをスキャン
Query:パーティションキー(ソートキー)を使用して効率的に取得する
Get Item:テーブルから単一の項目を読み込む
Batch Get Item:1つ以上のテーブルから最大100項目を読み込む

アトミックカウンター
テーブル内の特定の項目の数値属性を同時に更新できる機能

Streams
項目レベルの変更に関するシーケンスを時間順に保存
24時間までログに残す

RCUs
4KBまでを1ブロックとする
3kbの読み込みが1000/sなら1000RCU、6kbなら2000RCU
結果整合性は2倍、トランザクションは半分

WCUs
1KBを1ブロック
トランザクションは2倍

Stepfunction

ステート定義
Task ステートマシンにより実行する作業を定義
Choise 条件分岐を設定
Fail 失敗で停止
Succed 成功で停止
Pass 処理せずに入力を出力に渡す
Wait 指定時間待機した後、指定ステートに遷移する
Parallel 並列に実行
Map 入力の配列の要素ごとに反復処理や並列処理を実行

InvailidParameterValueExcptionエラー
CreateStateMachineAPIで指定されたIAMロールをStepfunctionが引き受けれてない

ECS

タスク配置
binpack CPUやメモリに基づき可能な限り最小のインスタンスに
random  ランダムに配置
spred  指定した値に基づき均等に配置

ECSとEFS
タスク定義で複コンテナを単一タスク内で定義しEFSをボリュームタイプにする
AZを跨いだファイル共有システムに

ClisterQueryLanguage
AZ、インスタンスタイプ、カスタムタグなどから分類しインスタンスをグループ化する

ECR

Dockerコンテナイメージの保存・管理・デプロイができる
コンテナイメージはS3に保存され冗長化されてる

ECS_ENABLE_TASK_IAM_ROLE
true タスクIAMロールを有効化
false タスクIAMロールを無効化

タスクIAMロール
各タスクが独立したIAM権限を持てる

Fargate
タスクレベルでのリソースの割り当てや秒単位での課金体系のサーバレスコンピューティング
自動スケーリングとロードバランシング機能アリ

S3

CORS
CrossOriginResaurceSharing
バケット単位で有効化可能

strangeLens
リージョンを跨いで使用料などを一元的に可視化

S3ObjectLambda
S3バケットからオブジェクト取得時にオンザフライでLamabda関数を使用しデータ変換
元のデータを変更せずにアプリに返されるデータを動的に編集しストレージコストを削減

Athena
S3データに対して直接SQLを発行し分析する

Macie
オブジェクト分析し機械学習とパターンマッチングを用いて脅威の検出などを行う

タイムアウト時のS3(Lambda)処理
イベントを2回まで再試行しその後、破棄される

署名付きURL(PresignedURL)
S3オブジェクトへ一時的なアクセス権を付与するURL

Kinesis

DataStreams
データ発生源(プロデューサ)から受信者(コンシューマ)へメッセージを中継するマネージドサービス
構成要素はシャード → 作成ずみのシャードを調整することをリシャーディングという
処理量 増 →シャードを分割 減 → シャードをマージ

PutRecordAPI
レコードの順序を制限
リアルタイム処理はSQSより優れているが、DynamoDBで別テーブルに書き込みは不可

Firehose
ストリームデータを配信する → 収集したストリームデータをデータストリームという
Lambdaと組み合わせて整形処理を行うことも可能

DataAnalytics
streamsやfirehoseに格納されたデータのリアルタイム分析を提供

# AppSync
GraphSQLのマネージドサービス 複数デバイスでのデータ同期に適している
→RESTAPIの上位互換でfacebookが開発
リアルタイム更新やロールベースのアクセス制御

Amplify

モバイルアプリとwebアプリを構築するためのもの

SecretsManager

PWやAPIキーなど機密情報を管理するサービス
SDKを使用した取得に特化
自動ローテーション機能あり、デフォルトではKMSを利用

ParameterStore

設定データや機密情報(設定値)を管理
通常文字列(string)と暗号化された文字列(securestring)をサポート

OpenSearchService

分析のOpensearchと可視化のkibanaを導入したクラスタを提供 → 分析・検索
リアルタイムのアプリモニタリングやログ分析、アプリ検索に利用

IAM

プリシンパル
AWSリソースに対するアクションやオペレーションをリクエストできるユーザロールを指す

認証方式
IDとPW → 主にマネジメントコンソールを使用する場合
アクセスキーとシークレットアクセスキー → SDKやCLIを利用するとき~/aws/credentialsに保存

信頼ポリシー
trustPolicy
誰がそのロールを引き受けることができるかを定義する

優先順位
明示的な拒否ExplicitDeny→明示的な許可ExplicitAllow→暗黙的な拒否ImplicitDeny

IAM IdentityCenter
複数アカウントとアプリへの一元的なアクセス管理を提供

STS
・AssumeRole 異なるアカウント間でロールを引き受ける 15分〜1時間
・GetSessionToken 既存ユーザにMFAを付与 15分〜36時間
・decode-Authorization-message AWSから返される認可ステータスメッセージを解読

KMS

機能
鍵の生成、インポート、アクセス管理、無効/有効化、削除、ローテ

種類
CMK カスタマー管理CMK、AWSマネージドCMK、AWS所有CMK
CDK データキー(対称キー)、データキーペア(非対称キー)

GenerateDatakey
プレーン・暗号化 両方のverのデータキーを返し、プレーンテキストでローカルでデータを暗号化
各レポート固有の対称のデータキーを生成 平文・暗号化キーを提供

暗号化 encrypt
 複合化 decrypt

Cognito

ユーザプール
AWS内での認証に使う JWTやSAML、OIDCにも対応
cognitoで認証したユーザがたまっていく場所
ユーザが作成されるとcognitoが一意のIDを割り振る

IDプール
AWS内での一時的な認証情報の提供を行う
他のAWSサービスのアクセスを許可 → IAMロールが紐づいてる

ポスト認証トリガー
ユーザが正常に認証されあっ直後にLambdaを実行できる機能

Cognitosync
モバイルでデータをローカルにキャッシュし再接続時に自動でデバイス間でデータを同期
プッシュ同期は更新時に他デバイスへ即通知する
ユーザデータを複デバイスで同期し、オフライン時にローカルへキャッシュ → クロスデバイス

AdptiveAuthentication
デバイス・場所・ユーザの行動に基づきログイン思考のリスクを評価しリスクの高いユーザのみMFAを付与する

# AmazonCertifcateManager
SSL/TLSサーバ証明書の管理機能を提供 → ドメイン済みの証明書をAWSで利用可に
・インポート オンプレ利用をAWSで
・デプロイ  AWSに証明書を配備

CloudHSM

マネージド型ハードウェアセキュリティモジュール
専用のハードウェアで暗号化キーを保管し排他的制御を提供

# securetransport条件キー
・true:リクエストがHTTPS/TLS経由で送信
・false:リクエストがHTTP経由で送信

# Codecommit
完全マネージド型のGitソースコードリポジトリ ver管理ツール

代表的なセットアップ
・HTTPS接続 Git認証情報の設定(STSでも)
・SSHを使用したアクセス設定
・git-remote-codecommitを使用したアクセス設定

git認証情報(CLI)
 IAMユーザのAWSアクセスキーIDとシークレットアクセスキーを使用し認証する

GitPull:リポジトリからのフェッチとクローン操作を許可
GitPush:リポジトリへのコードプッシュ操作を許可 → コードをあげれる

# CodeBuild
ソースコードのビルドや性的チェック、コンパイル、ユニットテストなどを実行する
Dockerイメージで動き、コンテナ内で任意のコマンドを起動できる

buildspec.ymlファイル
このファイルにビルド処理を記述し、アプリのソースコードプロジェクトのrootdirに保存する

CodePipline

CI/CDをオーケストレーションするためのビジュアルワークフローツール
・リソース 開発者が変更をコミット CodecommitやECRなど
・ビルド/テスト 変更のビルド、テスト CodeBuildやJenkinsなど
・デプロイ STGでデプロイ CodeDeploy、cloudformation、ECSなど
・承認 手動承認アクション →パイプラインの実行を一時停止し承認者の操作まで待機
・デプロイ 本番でデプロイ LambdaやStepFunctionなど

CodeDeploy

アプリケーションのデプロイを自動化する
オンプレ/EC2
・Inplace
One At Time 一度に一つのインスタンス
Half At Time 最大半分のインスタンス
All At Once 可能な限り多くのインスタンス
・Blue/Green
旧バージョンから新バージョンへ一気に移行
※CodeDeplpyAgentが必要

Lambda/ECS
・Blue/Green
Cannry 最初に指定%を移行、残りを指定時間後に
Linear 指定時間ごとに指定%移行
All At Once 可能な限り多く

appspec.ymlファイル
ソースコードプロジェクトは以下に配置しておく必要がある

フック
Applicationstop→Beforeinstall→Afterinstall→Applicationstart

CloudFormation

AWSのリソースをコードで定義し、自動的にプロビジョニングするためのサービス
JSON/YAML形式でスタック作成しスタック単位でリソース管理

構成要素
Template version
Description
Parameters AllowefVaLues指定されたリスト内のみ入力可に
Rules
Mappings Conditionsで指定したパラメータが一致するとき一括操作可
Conditions Resorcesの有効条件を事前定義
Transform SAM結合用
Resources
Outputs スタック構築した後コンソール上に表示したい項目などを定義
Metadata

組み込み関数
Ref:リソース論理名の物理IDを参照する
GetAtt:リソースが持つ属性値を取得する
ImportantValue:別のスタックで使用されたリソースの出力を取り出す
Findmap:Mappingsからデータを取り出す

その他の機能
マクロ:テンプレートの標準機能で実現が難しい変換処理をLambdaで実行
チェンジセット:変更部分の影響を受けるリソース論理IDを事前に確認
ドリフト検出:現状と定義の差分を検出

CloudFront functions
viewerRwquestでイベント実行され、毎秒数百万リクエスト処理が可能
JWT検証用、レイテンシーは1msec未満

cfn-init
EC2上でpkgのインストール、ファイルの作成、サービスの開始を自動化

CloudFormation paskegeコマンド
LambdaのローカルアーティファクトをS3にアップロードしS3URIへの参照を含むテンプレを生成
→S3にパスを作り CLI等でオブジェクトアクセスの際に利用

SAM

CloudFormationの拡張機能

ポリシーテンプレート
Lambda関数に権限を付与する
IAMポリシーを簡易化したもの

利用の流れ
①SAMテンプレートの記述:ローカル環境で行いEC2は不要
②パッケージング    :S3を介してpkg化 sambuildでビルド
③デプロイ       :samdeployでデプロイ

InlineCode
指定コードを自動的にpkg化
追加設定なしで小規模関数をデプロイ

ローカルテスト
sam local invoke 個々のLambdaをローカルで実行
cdk synth     CDKコンストラクトをテンプレに変換 → ローカルテストに必須

Elastic Beanstalk

典型的なWeb環境やキューイングを用いた非同期型のワーカー環境の構築やリリース運用の手間を省く

構成要素
アプリケーション:アプリケーションVerと環境の情報を束ねる論理単位
アプリケーションVer:デプロイ可なコードでS3で管理する
環境:Webサーバ環境とワーカ環境がある

Web環境
AZとAZをALBで結ぶ

Worker環境
AZにEC2とSQSメッセを在中 AZ同士はSQSキューが結ぶ システムの過負荷を防ぐ
計算負荷の高いタスクをフロントエンドから切り離しピーク時も応答性を維持

Dockerrun.aws.json
マルチコンテナDocker環境でコンテナ定義

AmazonOpsWorks

PuppetやChefを使用する基盤自動化ツール

SystemManagerAppconfig

環境変数やDB接続情報など環境依存のデータ定義ファイルなどを管理する

CodeArtifact

アーティファクトリポジトリ
pkgマネージャツールでDLするpkgを管理する

Copilot

ECSでコンテナ実行時に利用するコマンドラインインターフェース
Cloudformation同様に迅速に展開

CloudWatch

Metrics
・メトリクス
システムのパフォーマンスを示す時系列のデータ指標
標準メトリクスは1分〜5分で収集 カスタムメトリクスは1分未満

・名前空間
収集したメトリクスを格納するコンテナ

・ディメンション
名前空間別に作成されるリソースを一意に識別するためのキー文字列ペア

Cloudwatch logs insights
専用のクエリ言語を使用しログを検索・可視化
検索の対象は2018年以降に送信されたもの
EvaluationPeriod:アラーム状態を評価する期間を指定
DatapointsAlarm:トリガーの閾値を設定

CloudwatchAgent
詳細なメトリクスの収集、短時間実行用ではない

メトリクスの解像度
標準:1分間 15ヶ月保存 長期間のトレンド監視
高解像度:1秒間 3時間 15日 短時間やリアルタイムに

X-Ray

アプリ単位でのメトリクスを収集、可視、分析

機能
サービスマップ:アプリやサービスの成否や処理時間の可視化
トレース:アプリ呼び出し時の内訳を時間軸で並べる
アナリティクス:トレース統計からトレンドを可視化
インサイト:問題の継続的検知

概念
セグメント:データの収集単位 大項目
サブセグメント:任意で分割 小項目
トレースID:リクエストの識別ID

アノテーション
セグメントドキュメント内でキーと値のペアとして定義

サンプリング
トレースを取得するリクエストを絞る

X-Forward
For:中間層通過時にクライアントIPを保持
Host:リクエストが発信されたホストを識別

分散トレーシング機能
SDKによるトレースデータの生成とデーモンによるデータ収集が必要

ElasticCache

・Memcached
マルチスレッドでスケールアウトしやすい → リクエスト量に応じてかえる
多量のノードから参照されるマルチデータのキャッシュ用
データの保持はしない

・Redis
シングルスレッドのみから書き込みを許容したいデータ共有
データ自体を分散し高速化
多量のキーを持つマスタデータのキャッシュ用

SQS

プロデューサ → メッセージ → コンシューマ
      遅延      可視性TO
メッセージ制限
上限は256KBまで
超える場合はS3とSQSExtendClientLibraryforJavaを使用

MessageDeduplication
5分間は重複排除

CloudFront

キャッシュを利用したコンテンツの高速配信 CDN

構成要素
ディストリビューション:キャッシュ対象をドメイン単位で作成・設定
オリジン:オリジンサーバとの接続設定用
ビヘイビア:ビューワプロトコル設定やキャッシュリポジトリーを設定

バージョン管理
バージョン管理されたファイル名を使用するとキャッシュの有効期限を持たずに即座にコンテンツ提供

CloudFrontfunctions
vieweReqestでイベント実行され毎秒数百万のリクエスト処理が可能
JWT検証用でレイテンシーは1msec未満

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?