AWS認定試験の合格に必要な知識を確認します。
本稿では下記の略語を使用します。
略称 | 原語 |
---|---|
AZ | Availability zones |
I/O | Input/Output |
ACL | Access control list |
GW | Gateway |
IGW | Internet Gateway |
FW | Firewall |
IPS | Intrusion prevention system |
RI | Reserved instances |
SSO | Single sign-on |
SG | Security group |
SF | Step Functions |
AD | Active Directory |
GSI | Global Secondary Index |
LSI | Local Secondary Index |
前提
本稿では,専門知識レベルのデータベーススペシャリティ(DBS:AWS Certified Database Specialty)に関する直前対策を行います。DBSは現在C01とよばれる形式の試験が実施されています。
ワークロード固有のデータベース設計
RDSはOracleに対応しているか。
対応している。
EBSのgp2/gp3の最大IOPSはいくらか。
16000 IOPS。詳しくは下記記事を参照されたい。
DynamoDBとRedisはどちらの方が柔軟にスケール可能か。
DynamoDB
DynamoDBとRedisはどちらの方がコストが低いか。
DynamoDB
低カーディナリティ属性をGSIのパーティションキーに使用すると何が起こるか。
GSI内の一部のパーティションにのみデータが集中する可能性が高まる。低カーディナリティの例としては,性別やステータス等が該当する。
Auroraを専用のインスタンスで稼働させ,高可用性を担保する方法を述べよ。
カスタムエンドポイントを利用する。思考停止でインスタンスエンドポイントを選ばない。
断続的かつ予測不能なDBワークロードに適しているサービスは何か。
Aurora Serverless DB
「データベース内でデータは不変であるべき」という要件に適したサービスは何か。
QLDB
DynamoDB・DAXと強力な整合性のあるトランザクションの関係を説明せよ。
強力な整合性が指定されたトランザクションをDAXが受け取ると,そのままDynamoDBに渡される。DAXはDynamoDBから返答を受け取っても,結果をキャッシュしない。
DBクラスタのコネクション数の上限を増やす方法を二つ述べよ。
- DBパラメータグループの
max_connections
パラメータの値を大きくする - DBクラスタのインスタンスクラスをスケールアップする
DBクラスタのインスタンスクラスをスケールアップすると,max_connections
パラメータのデフォルト値も大きくなるため,結果としてDBクラスタのコネクション数の最大値を増やすことができる。あくまでも,DBクラスタのコネクション数の最大値はmax_connections
パラメータによって定められている。また,パラメータグループではなくconfファイルを編集するといった引っかけの選択肢にも注意する。
RDBMSとDynamoDBをACIDとBASEに着目して説明せよ。
RDBMSはACIDを重視し,データの整合性とトランザクションの一貫性が担保する。DynamoDBはBASEを重視し,高可用性と結果整合性を担保する。
OSへのアクセスが可能なDBサービスは何か。
Amazon RDS Custom for SQL Server。IaaSとしてのEC2上に立てるDBよりもユーザ側の責任範囲が少し狭く,IaaSとPaaSの中間に位置しているサービス。
デプロイと移行
RDSからAuroraへの最速の移行方法を説明せよ。
RDSからAuroraのレプリカを作成し,レプリケーションのラグがゼロであることを確認した上でレプリカを昇格させる。ポイントとしては,RDSからAuroraのレプリカを作成できる点。Schema Conversion Toolで前処理をしてDMSを使うこともできるが,データが大量に存在する場合は移行に時間がかかる点に注意する。
Apache TinkerPOP GremlinがNeptuneにデータをインポートする際の形式は何か。
csv
バックアップから新しいテーブルを作成する際に必要となる設定を列挙せよ。
- AutoScalingポリシーの設定
- IAMポリシーの設定
- CloudWatch設定
- タグ設定
- TTL設定
Aurora MySQLでクエリ結果をS3に出力する方法は何か。
lambdaによりAurora上でSELECT INTO OUTFILE S3
ステートメントを利用する。
クロスアカウントでS3からDynamoDBにテーブルデータを移行できるサービスは何か。
Data Pipeline。ちなみに,S3へのデータ移行にもData Pipelineが利用できる。
RDSのキーローテーションを実現するサービスは何か。
Secrets Manager+lambda。定期ローテーション自体はSecrets Managerの機能で実現可能だが,そのパスワードをRDSに設定するのはlambdaで行う。
Neptuneへのデータ移行で利用するコマンドは何か。
Neptune Loader
DMSでDDLのログを確認する方法を説明せよ。
DMSのロギングタスク設定で,TARGET_APPLYイベントに対してLOGGER_SEVERITY_DEBUGを設定する。
RDS for SQL Serverのネイティブバックアップとリストア方法を説明せよ。
- rds_backup_databaseストアドプロージャによりデータベースをS3にバックアップする
- rds_restore_databaseストアドプロージャによりデータベースをS3からリストアする
DMSでLOBを移行する方法を説明せよ。
Full LOBモードのタスクとLimited LOBモードのタスクの二つを用意する。
- Full LOB:最大許容サイズを指定しない。非常に低速になる可能性がある。
- Limited LOB:最大許容サイズを100MB程度に指定する。Full LOBよりもパフォーマンスが向上する。
S3からNeptuneにデータを移行する方法を説明せよ。
- 頂点とエッジを別々のcsvファイルに格納する
- NeptuneインスタンスにS3へのアクセス許可を指定したRoleをアタッチする
- Neptuneローダを起動するためにPCエンドポイント経由でS3にHTTP POSTリクエストを送信する
DMSのレプリケーションインスタンスの配置場所はソースとターゲットのどちらに寄せるか。
ターゲットと同じリージョン・VPC・サブネット
DMSのソースにはプライマリとレプリカのどちらを指定するか。
プライマリ
CDCではbinlog_formatには何を指定するか。
ROW。変更行を矛盾なく検知するための設定。
CDCでは自動バックアップを有効にする必要はあるか。
自動バックアップは有効にする必要がある。バイナリログを有効にするため。
最も手動変換の労力が少ないターゲットエンジンを選定できるツールは何か。
AWS SCTのマルチサーバアセッサー
マネジメントとオペレーション
RDSのアイドル状態をモニタリングする方法を説明せよ。
Trusted Adviserのアイドルインスタンスレポートを利用する。
RDS for SQL Serverでリードレプリカを作成する条件を二つ述べよ。
- Multi-AZ構成であること
- 自動バックアップが有効化されていること
RDS for MySQLでポイントインタイムリカバリを利用する条件を説明せよ。
- バックアップ保持期間を明示していること
- バイナリログが有効化されていること
ただし,バイナリログを有効化するためにはバックアップ保持期間を明示する必要がある。
Redshiftをクロスリージョンでコピーする方法を簡単に説明せよ。
- ソースリージョンでクロスリージョンスナップショットを有効化し,CMKを指定する
- ターゲットリージョンでCMKを利用する権限をRedshiftに付与する
モニタリングとトラブルシューティング
RedisクラスタのバックアップでCPUリソースを高騰させないための方法を述べよ。
- レプリカからバックアップを作成する
- reserved-memory-percentで25%程度のメモリを確保する
機械学習を用いてメトリクスを分析しア,プリケーションの問題を見つけるサービスは何か。
Amazon CloudWatch Application Insights
RDS Enhanced MonitoringとRDS Performance Insightsの違いを説明せよ。
- RDS Enhanced Monitoring:インスタンス全体の性能メトリクス
- RDS Performance Insights:特定のクエリレベルのパフォーマンス
レプリケーションがアクティブでない場合,レプリカラグの値はいくつを示すか。
-1
IO:XactSyncとは何か。
DBへのコミット数が多く,書き込みトランザクションが待機しているイベントを表す。なお,Xactはトランザクションのことを指す。
IO:XactSyncの解消方法を述べよ。
- CPUのスケールアップ
- ネットワーク帯域幅の拡大
- トランザクションブロックの利用
Auroraの可用性をテストする機能は何か。
フォールトインジェクション
Performance Insightsを有効にした場合,performance_schemaにはどのような値を設定するか。
0を設定する。performance_schemaは特定のSQLクエリの実行に要する時間,テーブルへのアクセス回数,ロック状態などのメトリクスを取得して管理する機能であり,Performance Insightsはperformance_schemaのパラメータを自動的に管理するため,1に設定すると重複してしまう。そのため,0を設定するようにする。
events_statements_summary_by_digestテーブルとは何か。
SQLのダイジェスト統計を収集するテーブル。digestはハッシュのダイジェストではなく「要約」を意味する。
RDS for MySQLのレプリカ遅延を説明せよ。
レプリカがプライマリに対して同期が遅れること。レプリケーションでは二つのスレッドタイプを利用する。
- IO_THREAD:通常は遅延しない。ネットワーク帯域の使用量によっては遅延する。
- SQL_THREAD:プライマリDBで長時間実行しているクエリやストレージ不足が原因。
RDS for MySQLのレプリカ作成の遅延を説明せよ。
RDSはプライマリのスナップショットからリードレプリカを作成する。そのため,リードレプリカの作成には時間を要する。具体的には,レプリケーション開始時のスナップショットからレプリカを作成し,その時点からの増分バックアップによりプライマリと同期させる。
Auroraのフェールオーバー直後のパフォーマンスを向上させる機能は何か。
クラスタキャッシュ管理(CCM)機能。レプリカをプライマリと同じインスタンスクラスに設定し,プライマリとレプリカにフェールオーバー優先順位tier0を付ける。tierは0が一番優先度が高い。
AuroraのActivity Streamの同期モード・非同期モードを説明せよ。
- 同期モード:ワークロードへの影響を犠牲にしてストリーミングの精度を担保する
- 非同期モード:ストリーミングの精度よりもパフォーマンスを担保する
PostgreSQLの場合は両方とも利用でき,MySQLの場合は非同期モードのみが利用できる。
Auroraで権限の変更を記録するイベントは何か。
QUERY_DCL。DCLはデータ制御言語(Data Control Language)のことを指していて,GRANTやREVOKEなどが含まれている。
データベースセキュリティ
DynamoDBで特定のアイテムへのアクセス制御を行うサービスは何か。
IAMのConditionでdynamodb:LeadingKeysを利用する。policyによって特定のKeyにLeadされるイメージ。
RDSで転送中の暗号化を実現するための設定を二つ述べよ。
- クライアント・インスタンス間:パラメータグループのrequire_secure_transportをONに設定する
- RDSプロキシ・インスタンス間:プロキシ作成時にRequire Transport Layer Securityを有効化する
AuroraではSSL/TLS要求オプションを有効化した後に再起動は必要か。
不要。
ひっかけ
RDSのAutoScaling対象はインスタンスか,それともストレージか
ストレージ
6時間ごとにRDSのスナップショットを取得したい場合,どのような構成になるか。
EventBridgeで6時間おきにRDSからスナップショットを取得するlambdaを呼び出す。lambdaを使わなければ,RDSの自動スナップショットはデフォルトで1日おきに起動するため,要件と満たすことができない。
DynamoDBはオートスケーリング機能を有するか。
有する。EC2やECSと同様に,プロビジョニングされたキャパシティの最小値と最大値を指定できる。
DynamoDBの読み取り負荷が高い場合はどのサービスを利用するか。
DynamoDB Accelerator。DAXという文字が見えないからといって,他の選択肢に食いつかないように注意。DAXはDynamoDB Acceleratorの略称であることを忘れずに。また,読み取り性能から思考停止でRedisを選ばないように注意。DAXの方がシンプルでよいソリューションとなる。
RDSはクロスリージョンでリードレプリカは作成できるか。
作成できる。
リードレプリカを持つDBインスタンスは停止することはできるか。
できない。リードレプリカを削除してからプライマリを停止するしかない。
AWS Backupの最短間隔はどのくらいか。
1時間
mysqldumpはS3にダンプできるか。
できない。
RedisクラスタでOOMが発生した場合にノード数を増やすのは有効な対策か。
有効ではない。クラスタがノードに割り当てるメモリが不足していることが原因である。TTLが設定されていることを確認するほか,既存のキーを手動で削除することや,大きなノードタイプにスケールアップする対策が考えられる。
DocumentDBではCloudWatch Insightsを利用できるか。
利用できない。
AWS Glueは移行の際のデータ変換に利用されるか。
利用されない。
RDSイベントサブスクリプションではSNSトピックのメッセージングをサポートしているか。
サポートしていない。
ACLはIP制限を実現できるか。
実現できない。AWSアカウントかグループを制限する。
Redshiftのスケーラビリティを実現する設定は何か。
Redshift Concurrency Scaling
暗号化されていないAuroraから暗号化されたレプリカは作成できるか。
できない。
RDSのポイントインタイムリカバリの前後で接続情報は変わるか。
変わる。
クロスリージョンでアクティブ・アクティブ構成を実現するサービスは何か。
DynamoDB Global Table。Aurora Global DatabaseやRDSクロスリージョンリードレプリカはあくまでもリードレプリカの作成なので,アクティブ・スタンバイ構成となる。アクティブというのは,書き込みができる状態であることに注意する。
最短時間でRDSのフェールオーバーをテストする方法を説明せよ。
RDSインスタンスを手動でフェールオーバーする。フォールトインジェクションよりも手動フェールオーバーの方が最速な手段として適切。手動というのは,例えばマネコンからの操作を表す。
DynamoDBのキャッシュを実現するためにElastiCache Redisを使うのは自然なソリューションか。
自然ではない。DynamoDBではDAXが利用できるため,そちらを利用する方が自然。
DB待機イベント取得はPerformance InsightsとEnhanced Monitoringのどちらを利用するか。
Performance Insightsを利用する。Enhanced Monitoringはあくまでもリソース監視のイメージ。
RDSのオプショングループとは何か。
プラグインや拡張機能を利用するための設定。
RDS for SQL Serverで監査ログを有効化する方法を説明せよ。
- S3へのアクセスを付与するIAMロールを作成する
- RDSオプショングループで保存先のS3と作成済みのIAM Roleを指定する
- 作成したオプショングループをRDSに適用する
Auroraで監査ログを有効化する方法を説明せよ。
カスタムパラメータグループでserver_audit_loggingをONに設定する。SQL Serverの監査ログの有効化とは異なり,オプショングループを利用する訳ではないことに注意する。
スナップショット復元とdumpコマンド復元ではどちらの方がダウンタイムが少ないか。
スナップショット復元
DynamoDBのオンデマンドモードではオートスケーリングを利用できるか。
利用できない。プロビジョニングモードを利用する。
SQL ServerのAlwaysOnを説明せよ。
高可用性と災害復旧を実現するための機能で,下記の二つから構成される。
- AG(可用性グループ)
- FCI(フェールオーバークラスインスタンス)
AGは災害復旧にも効果があるが,ミラーリングを行うためネットワーク性能を求められる。十分な性能を担保できない場合は,FCIを利用する方が無難。
RDSでリードレプリカを作る際の条件を簡単に説明せよ。
- ソースのインスタンスで自動バックアップが有効化していること
- AlwaysOn AGを設定したマルチAZ配置であること
- パラメータグループでread_onlyの値が1であること,または0である場合は即座に1に戻すこと
CloudFormationのDeleteProtectionとTerminationProtectionの違いを説明せよ。
- DeleteProtection:各サービスが保護対象
- TerminationProtection:スタック全体が保護対象
RedShift SpectrumでAccess throttledエラーに対応する方法を説明せよ。
小さなファイルを64MB以上の大きなファイルにマージする。そうすることで,GETリクエストやHEADリクエストの無駄なオーバーヘッドを削減できる。
CloudFormationのMappingセクションに具体的なパラメータの値を格納することはできるか。
できない。Numberパラメータなどで定義してRef組み込み関数で参照する。
Auroraの一時ストレージはAurtoScalingできるか。
できない。スケールアップするしかない。
RDSのイベント通知ではSGの設定変更を検知できるか。
検知できる。
RDSの停止期間に上限はあるか。
ある。最大7日間停止できる。7日を過ぎると自動で再開する。
DynamoDBストリームでデータプレーン・コントロールプレーンの操作ログは取得できるか。
取得できない。CloudTrailを利用する。
RDSのリージョン移行ではDMSとフェールオーバーではどちらの方がダウンタイムが小さいか。
DMSの方がダウンタイムは小さい。
企業のADを利用してRDSのログインを実現する際に,AD Connectorは利用できるか。
利用できない。AD ConnectorはあくまでもAWSからオンプレのADにリダイレクトするサービスであり,直接ログイン機能を提供するサービスではない。
Auroraで停止以外に利用していない期間の課金発生を防ぐ方法を述べよ。
Aurora ServerlessのACU(Aurora許容単位)調整機能を利用する。
オンプレのADとAWSのADを統合して認証する際,信頼関係は一方向・双方向のどちらを結ぶべきか。
どちらでもよい。一方向の場合は,AWS側で設定する方式が一般的。
RDSの静的パラメータの反映はメンテナンスウィンドウで反映されるか。
自動で再起動されないので反映されない。
DynamoDBのオンデマンドモードとプロビジョンドモードはどちらの方がコスト最適か。
プロビジョンドモード。プロビジョンドモードの方が「性能を担保する代わりに高い」というイメージがあるが,ある程度安定したワークロードに対してはプロビジョンドモードでオートスケーリングした方が安くなる。
GSIでは強い整合性は担保できるか。
担保できない。強い整合性を必要とする要件にはLSIを利用する。
AuroraのGlobal Databaseとクロスリージョンレプリカの違いを述べよ。
クロスリージョンレプリカの方が,1分未満のレプリケーションラグが発生する可能性がある。
DMSはクロスリージョンに対応しているか。
対応していない。Global Database等を利用してアーキテクチャを工夫することにより,クロスリージョンでDMSを利用することが可能になる。
DMSで移行前後のデータ整合性検証を行う機能は何か。
DMSデータ検証。Schema Conversion Toolではないため注意する。
RDSのインスタンスクラスには最大帯域幅という概念は存在するか。
存在する。例えば読み取りスループットで大きなレイテンシーを示している場合は,より高い最大帯域幅をもつインスタンスクラスにスケールアップすることを考える。
RDSのスナップショットは別アカウントと共有できるか。
できない。スナップショットのコピーをKMS暗号化キーと併せて共有する。
RDSでストレージ容量の変更に時間制限はあるか。
6時間に1回しかストレージ容量は変更できない。
RDSに対してエイリアスレコードは設定できるか。
設定できない。
数百台のノード管理にはどのサービスを利用するか。
SSMを利用する。例えば,オンプレミスとAWS側のEC2にSSM Manager Agentをインストールし,SSMのRun Commandでインストールされたアシスタントを利用する。この場合,RDSへの移行ではなくEC2への移行となる。また,RDSへの移行であればDMSが利用できるが,EC2への移行なのでDMSは利用しない。
RDSの自動バックアップの最大保持期間は何日間か。
35日間
DynamoDBでTTL期限が過ぎているのにアイテムが存在することはあり得るか。
あり得る。TTl期限が過ぎたアイテムは,通常数日以内に削除される。そのため,クエリフィルタ式を利用してTTL期限が過ぎていないアイテムだけをGetする必要がある。
Neptuneで未使用ストレージを節約するための方法を説明せよ。
新しいNeptuneクラスタにデータをエクスポートする。スナップショットからの復元は未使用領域をそのまま保持するため不適切。同様に,レプリカからの昇格でも未使用領域をそのまま保持するため不適切。
一貫性を担保する必要があるワークロードにDAXは適しているか。
適していない。
DynamoDBのレプリカではオートスケーリングを有効化できるか。
できる。ReplicationLatencyが増加した場合はオートスケーリングが有効化されていないことを疑う。
RDS for MySQL ServerからAuroraのレプリカを作成することはできるか。
できる。RDS for MySQL ServerからAuroraへの移行では,Auroraのレプリカを作成する。
結合を行うクエリのパフォーマンスを向上させる方法を述べよ。
パラメータグループのoptimizer_switchでhash_join=onに設定することで,ハッシュ結合を有効化する。
ItemCollectionSizeLimitExceededExceptionを説明せよ。
LSIが設定されたテーブルにおいて,同じパーティションキーを持つItemの占めるサイズが10GBの上限を超えたことを表している。テーブルを分けてパーティションキーを再設計し,LSIの使用を避ける必要がある。
DynamoDBのパーティションキーを貼り直す場合,EMRの利用は妥当な選択か。
妥当な選択である。
コメント