2016-05-04 10 views
2

AWS CloudFormationで多数のアプリケーションリソースを作成しています。リソースが作成されると、CloudFormationは名前の最後にハッシュを追加して一意にします。CloudFormationで作成したリソースをプログラムで活用する

つまり、キネシスストリーム名MyStreamを作成する場合、実際の名前はmy-stack-MyStream-1F8ISNCLP0W4Oのようになります。

自分の名前に一致するリソースをAWSに問い合わせることなく、手作業でステップを実行することなく、ハッシュを知らなくてもプログラムでリソースにアクセスできます。誰でもあなたのアプリケーションでAWSリソースをプログラム的かつ予測可能に使用する便利な方法を知っていますか?リソース(すなわちname -> MyStream)上のタグを設定し

  1. と実際のリソース名を取得するためにAWSを照会:ここ

    は、私は考えることができるあまり理想的なオプションです。

  2. AWSにリソース名のリストを照会し、予想される名前の部分一致を探します。
  3. 、あなたのリソースを作成した後、手動であなたのスタック内のリソースのリストを取得するにはCloudFormation APIを使用することができ、あなたの設定ファイルへの実際の名前(これらのオプションの、おそらくsanest)
+0

数字3は私たちがやったことです。スタックからの出力を取得し、各キー/値のペアをbashによってソースになるファイルに書き込むだけです。これらの出力は 'process.env'オブジェクトから常に利用できます。 – idbehold

答えて

2

をコピーします。これにより、論理ID(つまり、CloudFormationテンプレート内のハッシュのない名前)と一致する物理ID(スタック名とハッシュ)のリストが表示されます。 AWS CLIを使用して、これは2つのID間のマッピングを表示します。同じクエリを実行する

aws cloudformation describe-stack-resources 
    --query StackResources[].[LogicalResourceId,PhysicalResourceId] 
    --stack-name <my-stack> 

CloudFormation APIは、Amazonが提供するすべてのさまざまな言語のSDKで提供されています。

実行時にCloudFormationを照会するか#3、ビルド時にCloudFormationを照会して結果を設定ファイルに埋め込むことで、これを#1の代わりに使用することができます。私は、CF APIを単に照会するだけで自分のタグを使用する利点はありません。 2つ以上のスタックが同じテンプレートから共存するようにするには、#2は問題を引き起こします。

私はランタイムとビルドの両方のアプローチを使用しました。ビルド時間のアプローチでは、CloudFormationの依存関係や知識を取り除くことができますが、設定ファイルにスタック固有の情報が必要です。私は、複数のスタックに同じビルドをデプロイできるようにするランタイム・アプローチが好きです。必要なものは、すべての関連リソースを見つけるためのスタック名です。

+0

私はCloudFormation API 'describe-stack-resources'で遊んだことがあります。これは、サービスを直接クエリすることで改善されたことに同意します。最後にハッシュを除外することができれば、すぐにリソース名を作成することができますが、これはまだ機能ではありません。 – EmptyArsenal

関連する問題