cloudformationでは、再利用可能な文字列を作成できますか?


14

私は文字列を持っています。これは、タグやホスト名など、さまざまなものに使用するいくつかの変数から形成されています。

テンプレートを参照するだけで再利用可能な文字列を作成する方法はありますか?

これについてのご意見をいただければ幸いです。編集:例は、それらを結合するProjectNameと環境などの2つのパラメータを渡すことです

"Fn::Join" : [ "-", [ {"Ref":"ProjectName"}, {"Ref":"Environment"} ] ]

そして、多くの場所で結果を使用する


パラメーターについて話していますか?docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/…–
エドウィン

変換は、AWSがこれを提供するものだと思います。悲しいことに、彼らはまだYAMLエイリアスをサポートしていません。
jgomo3

回答:


7

残念ながら、私の実験はあなたの結論Graemeに同意することです。私はしばらくの間これに苦労しましたが、Fn :: Joinを介して文字列を計算し、テンプレートで後で使用できるようにする方法を見つけませんでした。

典型的な例を紹介できますか?

2014-09-18のように、[リソース]セクションで再利用するための文字列値を保存する最も洗練された方法は、(第2レベルの)マッピングを使用することです。さらに良いことに、条件を事前に計算し、文字列を使用するかどうかを決定できます。しかし、残念ながら、文字列の保存は機能しません。

このようなマッピングの例のスタンザは…

    "LoadBalancerBucketMap": {
        "BucketName": {
            "string": {
                "Fn::Join": [
                    "-",
                    [
                        "mylb",
                        {
                            "Ref": "Environment"
                        },
                        "logs"
                    ]
                ]
            }
        }
    },

そして、ここにリソースでのアクセス式があります

                "S3BucketName": {
                    "Fn::FindInMap": [
                        "LoadBalancerBucketMap",
                        "BucketName",
                        "string"
                    }

この例では、Environmentは、便利なデフォルトのリテラル文字列パラメーターです。したがって、これは文字列の作成と再利用の非常に明確な例です。しかし、CloudFormationプロセッサが言うことは…

テンプレート検証エラー:テンプレート形式エラー:すべてのマッピング属性は文字列またはリストでなければなりません。

したがって、テンプレートには一時的な文字列変数の効果を提供する方法がないように見えるという不満を共有します。

…私が見る限り。しかし、最初に受け取った答えは、これの反対を言いました(例はありませんが)。

だから誰かが回避策の例を持っているなら、彼らは共有してもらえますか?


2

パラメータまたはマッピングを使用して、テンプレートで使用できる文字列を保存できます。


1
これは静的な文字列に対してのみ機能します。OPは、計算された文字列を具体的に要求しましたが、これはまったく不可能なようです。
ジョー

0

残念ながら、達成しようとしていたことを実行できないことがわかりました。それは助けにはなりませんが、そこにはあります。


0

実際には、CloudFormationスタック名をの間に正確{ProjectName}-{Environment}に作成しaws cloudformation deployます。スタック名にこの命名規則を考慮しましたか?

その後、単にとして参照できます{ "Fn:Sub": "${AWS::StackName}" }

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.