AWS Developer Associate 勉強メモ その9
AWS DVAに向けての見直しを含めた細かいところの勉強メモです。
LambdaとStep Function
- ワークフローごとにステートマシンを定義する。
- それぞれのLambda関数ごとにStep Functionのタスクを定義する。
S3の暗号化
- 顧客で暗号化キーを管理する場合はKMSでCMK(カスタマーキー)を管理する。
- S3側で暗号化(サーバーサイド暗号化)する場合はデフォルト暗号化を有効化し、上記のCMKでオブジェクトのアップロード時に暗号化する。
- オブジェクトのアップロード時に暗号化キーを一緒に提供することはないので注意。
CodeDeployとAuto Scaling
- CodeDeployの定義にAppSpecファイルを用いる。
- Auto ScalingグループをCodeDeployのタグタイプに指定する。(AppSpecに含める?)
DynamoDBへのHTTP APIでのアクセス
Lambda(JAVA)用のデプロイパッケージに含めるもの
- コンパイル済み関数のコード
- アプリケーションの依存関係
- これらをZIPにすることでデプロイパッケージとなる
CodeBuildでのビルド環境の指定
- ビルドを実行するために AWS CodeBuild を呼び出すときは、ビルド環境に関する情報を入力する必要がある。
- ビルド環境は、ビルドを実行するために CodeBuild が使用するオペレーティングシステム、プログラミング言語ランタイム、およびツールの組み合わせを表す。
- ビルド環境にはDockerイメージを指定する。
- COGNITO_USER_POOLSタイプのオーソライザーを作成し、APIメソッドに設定する。
オンプレミスでのログ監視
- AWSのログ監視サービスをオンプレミスで行う場合、CloudWatchエージェントをサーバーにインストールする。
- またIAMユーザーを構成して、エージェントによるログ収集を可能とする。
- EC2の場合はIAMロールだが、オンプレミスの場合はIAMユーザー(長期認証情報)となるので注意。
DynamoDBのクライアント暗号化
- DynamoDB暗号化クライアントを使用して生成されたキーで暗号化する。
- この際AWS「管理」のカスタマーキー(CMK)を使用したDynamoDBテーブルの暗号化を設定する。
- これによりソースからDynamoDBのストレージまで、データをエンドツーエンド保護する。
処理先が複数ある場合のS3イベントの通知方法
- ユースケース:画像を処理するための複数のサービスがあり、それぞれの処理開始時間などが異なる場合。
- S3のイベントをSNSに通知→SNSからそれぞれのサービスのSQSへとサブスクライブさせる。
- SNSを挟むことで複数のサービスへと分岐させることが可能になる。
Lambdaでのイベントソースマッピングの依存関係
- Lambdaエイリアスを設定し、エイリアスのARNにイベントソースマッピングを設定することでLambda関数毎にイベントソースマッピングを設定する必要がなくなる。
- Lambdaのバージョンが更新された場合は、エイリアスは新しいバージョンをポイントするようにする。
AWS Developer Associate 勉強メモ その8
前回の続きです。
長々とやってきましたが今回が最後です。
残った部分を終わらせていきましょう。
セクション24
- Step Function
- AppSync
セクション25
セクション26
- AWS Security
- Encryption 101
- KMS
- KMS Encryption Patterns and Envelope Encryption
- Encryption SDK CLI
- KMS Limits
- KMS and AWS Lambd
- S3 Security Advanced
- SSM Parameter Store
- Secrets Manager
- SSM Parameter Store vs Secrets Manager
- CloudWatch Logs Encryption
- CodeBuild Security
セクション27
セクション28
- ハンズオン環境のクリーンアップ
セクション29
- Preparing for the Exam
セクション30
- Congratulations
知らなかったこと・忘れてたこと
AWS STS
- AWSリソースへの限定的かつ一時的なアクセスを許可する(最大1時間)
- AssumeRole:アカウント内やクロスアカウントでのロールの割り当て
- AssumeRoleWithSAML:SAML でログインしたユーザの資格情報を返す。
- AssumeRoleWithWebIdentity
・IdP でログインしているユーザーの ID を返す (Facebook ログイン、Google ログイン、OIDC 互換など)
・AWSは非推奨としており、代わりにCognito Identity Poolsを推奨している。 - GetSessionToken: MFAの場合、ユーザーまたはAWSアカウントのルートユーザーから取得する。
- GetFederationToken: フェデレーションされたユーザの一時的なクレドを取得する。
- GetCallerIdentity: APIコールで使用されるIAMユーザーまたはロールの詳細を返す。
- DecodeAuthorizationMessage: AWS APIが拒否された場合のエラーメッセージをデコードする
SSM Parameter Store vs Secret Manager
Secrets Manager(コスト高)
- AWS Lambdaを使ったSecretの自動ローテーション
- RDS、Redshift、DocumentDBとの統合
- KMSの暗号化は必須
- CloudFormationとの統合が可能
SSM パラメータストア (コスト低)
- シンプルなAPI
- Secretのローテーションはなし
- KMSの暗号化はオプション
- CloudFormationとの統合が可能
SSMパラメータストアAPIを使用してSecrets ManagerのSecretを引き出すことが可能。
おすすめホワイトペーパー
- AWS Security Best Practices
- AWS Well-Architected Framework
- Architecting for the Cloud AWS Best Practices
- Practicing Continuous Integration and Continuous Delivery on AWS Accelerating Software Delivery with DevOps
- Microservices on AWS
- Serverless Architectures with AWS Lambda
- Optimizing Enterprise Economics with Serverless Architectures
- Running Containerized Microservices on AWS
- Blue/Green Deployments on AWS
まとめ
Udemyでの学習を始めたのが7月の頭なので、後半だいぶスピードを上げましたが、おおよそ一ヶ月ちょっとで終わらせることができました。
翻訳や小テストの時間も含め、合計35時間ぐらいかかったでしょうか。(内動画時間は30時間)
講座自体の評価ですが、全体を通して表をできる限り使うことを避け、その分たくさん図解されていたためわかりやすく、またハンズオンも丁寧に作られておりとても勉強しやすかったです。
AWS SAAの勉強をした時は基本的なサービス以外の講座やハンズオンの動画などはほとんど飛ばしてしまっていたので、知識を得た上で改めて見るとたくさんの発見がありました。
また個人的に高評価なのは声がとても聞きやすかったことです。
どうしても長時間聞くことになる動画形式での講座ですので録音環境が悪かったり、サービスの更新に伴い一つの動画内でつぎはぎで解説音声を修正されていたりすると結構ストレスになります。
この講座ではそういったことはなく、更新するにしても動画単位ごと撮り直されておりとても配慮されているようでした。
最後に
最初は半分復習のつもりで始めましたが、思っていたよりもたくさんのことを勉強することができたので今ではやってよかったと思っています。
しかし資格取得という面ではこれでやっとスタート地点に立てた状態です。
来月中の取得目指して本格的に試験勉強をしていきたいと思います。
AWS Developer Associate 勉強メモ その7
前回の続きです。
ついに残すところ1/4となりました。
このままラストスパートをかけていきたいと思います。
今回はDynamoDB, API Gateway, SAM, Cognitoです。
セクション20
- DynamoDB
- DynamoDB WCU & RCU
- DynamoDB Basic APIs
- DynamoDB Indexes (GSI + LSI)
- DynamoDB Optimistic Concurrency
- DynamoDB DAX
- DynamoDB Streams
- DynamoDB TTL
- DynamoDB CLI
- DynamoDB Transactions
- DynamoDB Session State
- DynamoDB Partitioning Strategies
- DynamoDB Conditional Writes, Concurrent Writes & Atomic Writes
セクション21
- AWS API Gateway
- API Gateway Stages and Deployment
- API Gateway Canary Deployments
- API Gateway Integration Types & Mappings
- API Gateway Swagger & Open API 3.0
- API Gateway Caching
- API Gateway Usage Plans & API Keys
- API Gateway Monitoring, Logging and Tracing
- API Gateway COR
- API Gateway Authentication and Authorization
- API Gateway REST API vs HTTP API vs WebSocket API
セクション22
- AWS SAM
- SAM CLI
- SAM API Gateway
- SAM DynamoDB
- SAM - CloudFormation Designer and Application Repository
- SAM Policy Templates
- SAM with CodeDeploy
セクション23
- AWS Cognito
- Cognito User Pools
- Cognito Identity Pools
- Cognito Sync
知らなかったこと・忘れてたこと
API Gatewayのエラーコード早見表
- 4xx はクライアントのエラーを意味する
・400: Bad Request
・403: Access Denied, WAF filtered
・429: Quota exceeded, Throttle - 5xxはサーバーエラーを意味する
・502: Bad Gateway Exception
通常は互換性のない出力が Lambda プロキシ統合バックエンドから返された場合や、高負荷による順番外の呼び出しの場合に発生する。
・503: Service Unavailable Exception
・504: Integration Failure
エンドポイントリクエストのタイムアウト例外。API ゲートウェイのリクエストが最大 29 秒後にタイムアウトする
API Gateway HTTP API vs REST API
HTTP API
- REST APIよりも低レイテンシかつコスト効率の良く、AWS Lambda関数やHTTPエンドポイントにリクエストを送信することが可能
- OIDC および OAuth 2.0 認証とCORS、自動デプロイをサポート
- Usage PlanやAPIキーはない
- Native OpenID Connect / OAuth 2.0を除くすべての機能を利用可能
SAM Summary
- SAMはCloudFormation上に構築される
- SAMはTransform および Resources セクションを必要とする
- 知っておきたいコマンド
・-- sam build: 依存関係の取得とローカルのデプロイアーティファクトの作成
・-- sam package:パッケージ化してAmazon S3にアップロードし、CFテンプレートを生成
・-- sam deploy: CloudFormationへのデプロイ - SAMポリシーテンプレートで簡単にIAMポリシーを定義可能
- SAMはCodeDeployと統合されており、Lambdaエイリアスへのデプロイが可能
Cognito User Pools vs Identity Pools
Cognito User Pools
- ウェブおよびモバイルアプリケーションのユーザーのデータベース
- Public Social, OIDC, SAML を通じてログインをフェデレートすることができる
- 認証用のホストUIをカスタマイズ可能(ロゴを含む)
- 認証フロー中にAWS Lambdaを使ったトリガーを使用可能
Cognito Identity Pools
- ユーザーのAWSクレデンシャルを取得し、AWSへのアクセスが可能
- ユーザーはパブリック・ソーシャル、OIDC、SAML、Cognitoのユーザープールを介してログイン可能
- 認証されていないユーザー(ゲスト)も利用可能
- ユーザーはIAMロールとポリシーにマッピングされ、ポリシー変数を活用することができる
CUP + CIP = ユーザー/パスワードの管理 + AWSサービスへのアクセス
まとめ
今回は勉強していて楽しいセクションばかりでした(SAM除く)。
SAMはなんとなくでしか理解できなく、ハンズオンを見てもあまり何をやっているかわからなかったのであとでまとめて勉強し直します。
今回はServerless推しな章ばかりでしたが、残すところもあと少しなので引き続き頑張っていこうと思います。
AWS Developer Associate 勉強メモ その6
前回の続きです。
だんだん終わりが見えてきました。
今回はCloudWatch, SQS, SNS, Kinesis, Lambda です。
セクション17
- Monitoring
- CloudWatch Metrics
- CloudWatch Alarms
- CloudWatch Logs
- CloudWatch Agent & CloudWatch Logs Agent
- CloudWatch Logs Metric Filters
- CloudWatch Events
- EventBridge
- X-Ray
- X-Ray: Instrumentation and Concepts
- X-Ray: Sampling Rules
- X-Ray APIs
- CloudTrail
セクション18
- AWS Integration & Messaging
- AWS SQS
- AWS SQS Dead Letter Queue
- AWS SQS CLI Practice
- AWS SQS FIFO Queues
- AWS SQS Advanced
- AWS SNS
- AWS Kinesis
- AWS Kinesis KCL
- Kinesis Security, Firehose and Analytics
- Data Ordering for Kinesis vs SQS FIFO
セクション19
- AWS Lambda
- Lambda Synchronous Invocations
- Lambda & Application Load Balancer
- AWS Lambda@Edge
- Lambda Asynchronous Invocations & DLQ
- Lambda & CloudWatch Events / EventBridge
- Lambda & S3 Event Notifications
- Lambda Event Source Mapping
- Lambda Destinations
-
Lambda Permissions - IAM Roles & Resource Policies
-
Lambda Environment Variables
-
Lambda Monitoring & X-Ray Tracing
- Lambda in VPC
- Lambda Function Performance
- Lambda Concurrency
- Lambda External Dependencies
- Lambda and CloudFormation
- Lambda Layers
- Lambda Versions and Aliases
- Lambda and CodeDeploy
- Lambda Limits
知らなかったこと・忘れてたこと
Amazon EventBridgeとCloudWatch Eventsの関係
- Amazon EventBridgeはCloudWatch Events をベースに構築された、CloudWatch Events を拡張するサービス
- Amazon EventBridgeではCloudWatch Eventsと同じサービスAPIとエンドポイント、同じ基盤となるサービスインフラストラクチャを使用している
- CloudWatch EventsからEventBridgeへと乗り換えても、これまでと同じAPI、CloudFormationテンプレート、コンソールを引き続き使用可能
- CloudWatch Events はイベント駆動型アーキテクチャを構築するための理想的なサービス
- 独自のアプリケーションとサードパーティーの SaaS アプリケーションからデータを接続できるようにする新しい機能がAmazon EventBridge
- つまり元は両者とも同じ物で、EventBridgeがCloudWatch Eventsが開発された目的であるモニタリングユースケースを超えた拡張となっている
X-Rayが動作しない場合のトラブルシューティング
EC2でX-Rayが動作しない場合
AWS Lambda上で動作しない場合
- 適切なポリシー(AWSX-RayWriteOnlyAccess)でIAM実行ロールを持っていることを確認
- X-Rayがコード内にインポートされていることを確認
まとめ
Lambdaのセクションがかなりボリュームがあったのと、途中英語の口頭ベースで説明される内容が多くて、それらを理解するのが結構キツかったです。
ですがその分ハンズオンがとてもわかりやすく、何言ってるかわからなくても雰囲気で理解することができました。
その分章末の小テストではボロボロだったのであとで勉強し直します……。
あとちょうどSQSあたりの講座を見ているときに、まさに見ている途中で講座が更新されて内容が変わってしまい少しだけ困りました。
ただ目の前で情報がアップデートするのを確認できたおかげで、より意識に残せたかと思います。
AWS Developer Associate 勉強メモ その5
前回の続きです。
やっと半分終わりました。
今回はECS, Elastic Beanstalk, Code兄弟, CloudFormationです。
セクション13
- ECS
- Docker
- ECS Cluster
- ECS Task Definitions
- ECS Service
- ECS Service with Load Balancers
- ECR
- Fargate
- ECS IAM Deep Dive
- ECS Task Placement and Constraints
- ECS Auto Scaling
セクション14
- Elastic Beanstalk
- Beanstalk Deployment Modes
- Beanstalk CLI
- Beanstalk Lifecycle Policy
- Beanstalk Extensions
- Beanstalk & CloudFormation
- Beanstalk Cloning
- Beanstalk Migrations
- Beanstalk with Docker
- Beanstalk Advanced Concepts
セクション15
- AWS CICD
- CodeCommit
- CodePipeline
- CodeBuild
- CodeDeploy
- CodeStar
セクション16
- CloudFormation
- YAML Crash Course
- Resources, Parameters, Mappings, Outputs, Conditions
- CloudFormation Intrinsic Functions
- CloudFormation Rollbacks
- loudFormation ChangeSets, Nested Stacks & StackSet
知らなかったこと・忘れてたこと
Beanstalkのデプロイ方法
- All at once(一度に全て)
・最速だが、インスタンスは少しの間サービスが停止するために利用できなくなる(ダウンタイムが発生する)。 - Rolling
・一度に数個のインスタンス(バケット)を更新し、最初のバケットのヘルスチェックが通れば次のバケットを更新する。(ダウンタイムを回避する) - Rolling with additional batch(追加バッチによるローリング)
・ローリングと似ているが、新しいインスタンスの追加バッチを起動することで同じ帯域幅を保つことができる。 - Immutable(変更不可)
・新しいASGで新しいインスタンスを作成し、これらのインスタンスにバージョンをデプロイし、すべてのヘルスチェックとが通ったときにすべてのインスタンスをスワップする。
CodeStar
- CodeStarはAWS でソフトウェア開発プロジェクトを作成、管理、および操作するクラウドベースのサービス。
- 以下のものをまとめられる。
GitHub、CodeCommit、CodeBuild、CodeDeploy、CloudFormation、CodePipeline、CloudWatch - EC2、Lambda、Beanstalk用の「CICD対応」プロジェクトを迅速に作成することができる。
- サポートされている言語。
C#、Go、HTML 5、Java、Node.js、PHP、Python、Ruby - 課題追跡のためにJIRAやGitHubと統合が可能。
- Cloud9と統合してWeb IDEを利用可能(一部のリージョンのみ)
- 1つのダッシュボードですべてのコンポーネントを表示可能。
- CodeStar自体は無料。使用した他のサービスの料金がかかる。
CloudFormationで使えるリソースの探し方
以下のURLを参照。
CloudFront StackSets
- 1回の操作で複数のアカウントやリージョンにまたがるスタックの作成、更新、削除を行うことが可能。
- 必要なアカウント
・StackSetsを作成するための管理者アカウント
・StackSetsからスタックインスタンスを作成、更新、削除するための信頼できるアカウント - スタックセットを更新すると、関連するすべてのスタックインスタンスがすべてのアカウントとリージョン全体で更新される。
まとめ
だんだんAWS SAAの勉強の時に飛ばした細かい部分やDVA特有の範囲が増えてきて、その分スムーズに英語が理解できないことが多くなってきました。
特にBeanstalk周りが英語だと理解しにくかったので、後ほど改めて勉強したいと思います。
何はともあれ、残り半分もペースアップして頑張っていきたいと思います。
AWS Developer Associate 勉強メモ その4
前回の続きです。
ここまでで1/3です。
各セッションが少し短めだったので、その分一個多くなっています。
セクション9
- S3
- Versioning
- Encryption for Objects
- Security & Bucket Policies
- S3 Websites
- S3 CORS
- Consistency Model
セクション10
- AWS CLI
- SDK
- IAM Role & Policies
- Policy Simulator
- AWS CLI Dry Runs
- STS Decode
- EC2 Instance Metadata
- CLI Profiles
- CLI with MFA
- Exponential Backoff & Service Limit Increase
- AWS Credentials Provider & Chain
- AWS Signature v4 Signing
セクション11
- S3 MFA Delete
- S3 Default Encryption
- S3 Access Logs
- S3 Replication(CRR & SRR)
- S3 Pre-Signed URLs
- Storage Tiers + Glacier
- S3 Lifecycle Policeis
- S3 Performance
- S3 & Glacier Select
- S3 Event Notifications
- Athena
- Object lock & Glacier Vault Lock
セッション12
- CloudFront
- CloudFront Caching & Caching Invalidations
- CloudFront Security
- CloudFront Signed URL / Cookies
知らなかったこと・忘れてたこと
S3のキー
- S3のオブジェクト(ファイル)にはキーがあり、接頭辞 + オブジェクト名で構成される。
- 例:s3://my-bucket/my_file.txt - s3://my-bucket/my_folder1/another_folder/my_file.txt
- UIに騙されるかもしれないが、バケット内には「ディレクトリ」という概念はない。
- スラッシュ("/")を含む非常に長い名前のキーのみ。
自分は完全に騙されてました。
IAMPolicy Simulator
実際に作成したIAMポリシーが想定したリソースへのアクセスが可能かどうかを確認できる。
Dry Runs
- いくつかのAWS CLIコマンド(EC2など)は、実行するとコストが高くなることがあるため、不用意にコマンドを実行するのはNG。
- 全てではないがいくつかのAWS CLIコマンドには --dry-runオプションが含まれており、APIコールをシュミレートすることが可能。
STS Decord
- API 呼び出しを実行して失敗すると、長いエラーメッセージが表示される。
- このエラーメッセージは、STS コマンドラインを使用してデコードすることが可能。
- 例:sts decode-authorization-message
- ただしデコードするには専用のポリシーが必要
CLI with MFA
CLIでMFAを使用するには一時的なセッションを作成する必要があり、STS GetSessionToken API コールを実行する必要がある。
例:
aws sts get-session-token -serial-number arn-of-the-mfa-device --tokencode code-from-token --duration-seconds 3600
Amazon Glacier
Amazon Glacierの検索オプション
- 迅速(1~5分)
- 標準(3~5時間)
- 大容量(5~12時間)
Amazon Glacier Deep Archiveの検索オプション
- 標準(12時間)
- バルク(48時間)
S3のパフォーマンス
- Amazon S3は自動的に高リクエスト率、レイテンシ100-200msにスケーリングする。
- 少なくとも 3,500回のPUT/COPY/POST/DELETE および、バケット内のプレフィックス1つにつき1秒間に5,500回のGET/HEADリクエストが可能。
- バケット内のプレフィックスの数に制限はない。
- 例 (オブジェクトパス => プレフィックス)
- bucket/folder1/sub1/file => /folder1/sub1/
- bucket/folder1/sub2/file => /folder1/sub2/
- bucket/1/file => /1/
- bucket/2/file => /2/ - 4つのプレフィックスすべてに均等に広げれば、GETとHEADは22,000回/秒まで可能。
Athena
- S3ファイルに対して直接分析を実行するサーバーレスサービス。
- SQL言語を使用してファイルを照会する。
- JDBC / ODBCドライバを持っている。
- クエリごととスキャンしたデータ量によって課金。
- CSV, JSON, ORC, Avro, Parquet をサポート (Presto 上に構築)
- 使用例:ビジネスインテリジェンス/分析/レポーティング、分析、クエリ、VPCフローログ、ELBログ、CloudTrailトレイルなど。
- S3で直接データを分析する場合はAthenaを使うと覚えておくと◎
CloudFrontとS3 Cross Region Replicationの使い分け
CloudFront
- グローバルエッジネットワーク。
- ファイルはTTL(おそらく1日)の間キャッシュされる。
- どこでも利用可能な静的コンテンツに最適。
S3 Cross Region Replication
- レプリケーションを実行したいリージョンごとに設定する必要がある。
- ファイルはほぼリアルタイムで更新。
- 読み取り専用。
- 少ないリージョンで低レイテンシーで利用できる必要があるダイナミックコンテンツに最適。
まとめ
今回は小ネタというか、そんなのあるんだ!ってなるようなものが多かったです。
特にS3やCloudFrontの細かい設定方法などに実際に触れる機会がなかなかないので勉強になりました。
あとAthenaは完全に初めて知りました(もしかしたらチラッと名前だけは聞いたことあったかも?)
こちらも具体的な設定方法やクエリの実行方法などが学ぶことができたので良かったです。
次回から結構ボリュームがあるところなので引き続き頑張っていこうと思います。
AWS Developer Associate 勉強メモ その3
前回の続きです。
やっと1/4が終わりました。
今回もさっくりやっていきましょう。
セッション6
- RDS
- Read Replicas vs Multi AZ
- RDS Encryption + Security
- Aurora
- Aurora Serverless
- Global Aurora
- ElastiCache
- ElastiCache Strategies
セクション7
- Route 53
- TTL
- CNAME vs Alias
- Routing Policy
- Health Checks
セクション8
- VPC
- Subnet
- Internet Gateway
- NAY Gateway
- Network ACL vs Security Group
- VPC Flow Logs
- VPC Peering
- VPC Endpoints
- VPN vs Direct Connect
知らなかったこと・忘れてたこと
Aurora Serverless
データベースのインスタンス化を自動化し、実際の使用状況に応じて自動的にスケーリングする方法。
- 不定期、断続的、または予測不可能な作業量に適してる。
- キャパシティプランニングの必要なし。
- 秒単位での支払いにより、より高い費用対効果が見込める。
Global Aurora
複数のリージョンを跨いでAuroraのレプリケーションを作成する。
5つまで読み取り専用のセカンダリを作ることが可能で、レプリケーションのラグは1秒以下。
災害でリージョンが落ちた際のRTO(目標復旧時間)は1分未満。
Route 53の主要レコード早見表
まとめ
Route 53のハンズオンがとても丁寧で、全てのRouting Policyを一つ一つ丁寧に解説していたのが印象的でした。
特に実際にVPC?を使用して接続元を世界各地に分散させながら位置情報ポリシーや地理的近接ポリシーの動作を見られたのは面白かったです。
ただ今回はSAAやってればほとんど知っていることばかりで書く内容がなく、逆に困りました。
内容がわかる分、字幕をそのまま読むことでいい感じに英語の勉強ができたので良しとします(?)