Q19 — AWS DVA-C02 第1章

第 19/100 問 | ← 第1章

企業は、AWS CloudFormationテンプレートを使用して、すべてのAmazon RDSデータベースインスタンスをデプロイする必要があります。これは、AWS CodePipelineによる継続的インテグレーション/継続的デリバリー(CI/CD)自動化の一部として実施されます。データベースインスタンスのマスターパスワードは、デプロイプロセス中に自動生成される必要があります。この要件を満たすために、開発作業量を最小限に抑えるソリューションはどれですか?

正解: B. CodePipelineのAWS CodeBuildアクションを使用し、以下のAWS CLIコマンドで安全な文字列を生成します:aws secretsmanager get-random-password。生成された安全な文字列をCloudFormationパラメータとして渡し、NoEcho属性をtrueに設定します。このパラメータ参照を用いてデータベースインスタンスを作成します。

解説

選択肢A:AWS Lambda対応のCloudFormationカスタムリソースを作成し、安全な文字列を生成するLambdaコードを記述し、CloudFormationのFn::GetAtt組み込み関数でその値を取得してデータベースインスタンスを作成する。この方法は可能ですが、追加の複雑性と開発作業量が発生します。 選択肢B:AWS CLIとAWS Secrets Managerを活用して安全な文字列を生成・管理し、CloudFormationパラメータとしてデータベースインスタンス作成プロセスに渡す。この方法はシンプルかつ直接的であり、追加のカスタムリソースやLambda関数を必要とせず、CI/CDパイプラインへの統合も容易です。 選択肢C:選択肢Aと同様にAWS Lambda対応のCloudFormationカスタムリソースを使用しますが、さらにAWS Secrets Managerでシークレットを作成して安全な文字列を保存します。機能的には強力ですが、選択肢Bと比較して複雑性と不要な手順が増加します。 選択肢D:選択肢Cと同様にAWS Secrets Managerを使用しますが、安全な文字列をシークレットとして保存し、動的参照で使用します。これにより、管理と権限設定の複雑性が増し、最もシンプルなソリューションではありません。 したがって、選択肢Bが最適な選択であり、AWS CLIとAWS Secrets Managerを活用して安全な文字列を生成・渡すことで、CI/CDパイプラインへの統合が容易であり、追加のカスタムリソースやLambda関数を必要としません。