

# 動的参照を使用して他のサービスに格納されている値を取得する
<a name="dynamic-references"></a>

動的参照には、他のサービスに格納および管理されている外部値を指定し、Infrastructure as Code (IaC) テンプレートから機密情報を切り離すことができる便利な方法があります。CloudFormation は、スタックオペレーションおよび変更セットオペレーション中に、必要に応じて指定された参照の値を取得します。

動的参照を使用すると、次のことができます。
+ **SecureString を使用する** – 機密データの場合、保管中のデータが暗号化されるように、常に AWS Systems Manager Parameter Store または AWS Secrets Manager のシークレットで SecureString パラメータを使用します。
+ **アクセスを制限する** – Parameter Store パラメータまたは Secrets Manager シークレットへのアクセスを、認可されたプリンシパルとロールのみに制限します。
+ **認証情報をローテーションする** – Parameter Store または Secrets Manager に保存されている機密データを定期的にローテーションして、高いレベルのセキュリティを維持します。
+ **ローテーションを自動化する** – Secrets Manager の自動ローテーション機能を活用して、機密データを定期的に更新し、アプリケーションや環境で分散します。

## 一般的な考慮事項
<a name="dynamic-references-considerations"></a>

CloudFormation テンプレートで動的参照を指定する前に考慮すべき一般的な考慮事項を次に示します。
+ リソースのプライマリ識別子の一部であるリソースプロパティに、動的参照や機密データを含めないでください。CloudFormation は、プライマリリソース識別子で実際のプレーンテキスト値を使用する場合がありますが、これはセキュリティリスクとなる可能性があります。このリソース ID は、派生した出力または送信先に表示されます。

  リソースタイプのプライマリ識別子を構成するリソースプロパティを確認するには、「[AWS リソースおよびプロパティタイプのリファレンス](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-template-resource-type-ref.html)」でそのリソースのリソースリファレンスドキュメントを参照してください。**[Return values]** (戻り値) セクションの `Ref` 関数の戻り値は、リソースタイプのプライマリ識別子を構成するリソースプロパティを表します。
+ スタックテンプレートには最大 60 個の動的な参照を含めることができます。
+ 変換 (`AWS::Include` や `AWS::Serverless` など) を使用している場合、CloudFormation は変換を適用する前に動的参照を解決しません。代わりに、動的参照のリテラル文字列を変換に渡し、テンプレートを使用して変更セットを実行する際に参照を解決します。
+ カスタムリソース内の安全な値 (Parameter Store や Secrets Manager に保存されている値など) に動的参照を使用することはできません。
+ また、動的参照は `AWS::CloudFormation::Init` メタデータと Amazon EC2 `UserData` プロパティでもサポートされていません。
+ バックスラッシュ (\$1) で終わる動的参照を作成しないでください。CloudFormation はこれらの参照を解決できず、スタックオペレーションが失敗します。

次のトピックでは、動的参照の使用に関する情報と他の考慮事項について説明します。

**Topics**
+ [一般的な考慮事項](#dynamic-references-considerations)
+ [Systems Manager Parameter Store からプレーンテキスト値を取得する](dynamic-references-ssm.md)
+ [Systems Manager Parameter Store から SecureString 値を取得する](dynamic-references-ssm-secure-strings.md)
+ [Secrets Manager からシークレットまたはシークレット値を取得する](dynamic-references-secretsmanager.md)