IaC ジェネレーターと書き込み専用プロパティ
書き込み専用プロパティは、書き込みはできても AWS CloudFormation で読み取ることができないリソースです。(例: データベースパスワード)。そのため、既存のリソースからテンプレートを生成する場合に問題が発生します。通常、書き込み専用プロパティは、生成されたテンプレートのパラメータに変換されます。これにより、インポートオペレーション中にこのプロパティをパラメータ値として入力することが可能になります。ただし、以下の場合は、書き込み専用プロパティをパラメータに変換することはできません。
-
排他的なプロパティのセットが複数あり、そのうちの一部が書き込み専用である場合。IaC ジェネレーターは、作成時にリソースに適用されたのはどのプロパティのセットであるかを特定することはできません。例えば、以下のプロパティセットのいずれか 1 つを使うと、
AWS::Lambda::Function
のコードを指定できます。-
Code/S3Bucket
、Code/S3Key
、オプションでCode/S3ObjectVersion
-
Code/ImageUri
-
Code/ZipFile
これらのプロパティはすべて書き込み専用です。IaC ジェネレーターは、排他的なプロパティセットのうち 1 つを選択し、それを生成されたテンプレートに追加します。それぞれの書き込み専用プロパティにパラメータが追加されます。パラメータ名には
OneOf
が含まれ、パラメータの説明には、対応するプロパティは他の排他的なプロパティに置き換えることが可能であることが示されています。IaC ジェネレーターは、含まれているプロパティにMUTUALLY_EXCLUSIVE_PROPERTIES
のType
の警告を設定します。 -
-
書き込み専用プロパティは、複数あるデータタイプのいずれにも設定できます。例えば、
AWS::ApiGateway::RestApi
のBody
プロパティは、object
かstring
にすることができます。この場合、IaC ジェネレーターはMUTUALLY_EXCLUSIVE_TYPES
のType
の警告を設定し、生成されたテンプレートにstring
のタイプを使用してプロパティを含めます。 -
書き込み専用プロパティのタイプは
array
です。パラメータは、スカラー値にしかできないため、パラメータを配列のテンプレートに追加することはできません。この場合、IaC ジェネレーターは、生成されたテンプレートにプロパティを含めずにUNSUPPORTED_PROPERTIES
の警告Type
を設定します。 -
書き込み専用プロパティはオプションです。IaC ジェネレーターは、リソースの設定時に書き込み専用プロパティが使用されたかどうかを検出することはできません。この場合、IaC ジェネレーターは、生成されたテンプレートにプロパティを含めずに
UNSUPPORTED_PROPERTIES
の警告Type
を設定します。
生成されたテンプレートに書き込み専用プロパティを持つリソースが含まれる場合、IaC ジェネレーターのコンソールに、問題のタイプの概要を示す警告が表示されます。例:
![IaC ジェネレーターのコンソールに表示された、生成されたテンプレートの書き込み専用プロパティに関する警告](images/IaC-generator-write-only-property-warning.png)
[警告の詳細を表示] をクリックすると、詳細が表示されます。書き込み専用プロパティを持つリソースは、生成されたテンプレートとリソースタイプで使用される論理 ID によって特定されます。
![IaC ジェネレーターのコンソールに表示された、生成されたテンプレートの書き込み専用プロパティに関する警告の詳細](images/IaC-generator-write-only-property-resource-warning.png)
警告のリストを使用して、書き込み専用プロパティを持つリソースを特定し、各リソースを調べて、生成されたテンプレートに加えるべき変更 (もしある場合) を判断します。生成されたテンプレートをダウンロードするには、[ダウンロード] をクリックします。変更が完了したら、[編集したテンプレートのインポート] をクリックして次に進みます。
重要
現在、AWS リソースおよびプロパティタイプのリファレンス ドキュメントには、プロパティが書き込み専用であるか、あるいは複数のタイプをサポートしているかどうかは記されていません。どのプロパティが書き込み専用であるかを特定するには、IaC ジェネレーターのコンソールまたはリソースプロバイダーのスキーマから返される警告を確認する必要があります。
詳細については、「CloudFormation Command Line Interface ユーザーガイド」の「CloudFormation リソースプロバイダースキーマ」を参照してください。リソースプロバイダースキーマのダウンロード方法については、「CloudFormation リソースプロバイダースキーマ」を参照してください。