Q82 — AWS SOA-C02 第1章
第 82/100 問 | ← 第1章
ある会社が、AWS::EC2::InstanceリソースとカスタムCloudFormationリソースから構成されるAWS CloudFormationテンプレートを作成しました。このカスタムCloudFormationリソースは、Amazon EC2インスタンス上で自動化処理を実行しようとするAWS Lambda関数です。テスト中に、Lambda関数がEC2インスタンスが起動する前に実行を試みるため、失敗します。 この問題を解決するには、どのソリューションを採用すべきですか?
- A. カスタムリソースにDependsOn属性を追加し、DependsOn属性でEC2インスタンスを指定する。 ✓
- B. カスタムリソースのサービストークンを有効なLambda関数を指すように更新する。
- C. Lambda関数を更新してcfn-responseモジュールを使用し、カスタムリソースに対してレスポンスを送信する。
- D. Fn::If組み込み関数を使用して、カスタムリソースが実行される前にEC2インスタンスの存在を確認する。
正解: A. カスタムリソースにDependsOn属性を追加し、DependsOn属性でEC2インスタンスを指定する。
解説
AWS CloudFormationテンプレート内のリソースはデフォルトで並列に作成されますが、特定の順序を保証するには依存関係を利用する必要があります。AWS公式ドキュメントによると、`DependsOn`属性はリソース間の明示的な依存関係を指定するために使用され、依存先リソースが作成完了後にのみ対象リソースが作成されます。本問では、カスタムリソース(Lambda)がEC2インスタンスの起動後に実行される必要があるため、カスタムリソースに`DependsOn`属性を追加し、EC2インスタンスを指定することで時系列の問題を解決できます。選択肢Bのサービストークン設定はリソース起動順序とは無関係です。選択肢Cの`cfn-response`モジュールはカスタムリソースのレスポンス処理に使用され、依存順序には影響しません。選択肢Dの`Fn::If`は条件判断に使用され、リソース作成順序を保証できません。選択肢AはAWS推奨の依存関係管理手法に直接合致します。