スタックを作成するためのCloudFormationスクリプトが複数あります。
ここで、更新された1特定のリソース(ビジネス要件)にのみ使用される新しいスクリプトを記述(自動化)します。
私が行き詰まっているのは、更新スクリプトの既存のリソースをreferする方法ですか?私はREF
関数があることを知っていますが、これは同じスクリプトでリソースを参照するためだけに使用されていると思います。 AWSが既存のリソースを参照するために提供するものはありますか?
私はparameters
を使用できることを読みましたが、他のオプションはありますか?
私は最近、共有サービスを参照するいくつかの階層化されたデプロイメントに対してこれを行う必要がありました。パラメータに加えて、ここにいくつかの他のオプションがあります:
名前付きエクスポート :これは、別のCloudFormationスタックによって作成されたリソースがあり、それらを参照するだけの場合(たとえば、インフラストラクチャ管理者がアプリケーションの下位レベル部分を設定する場合)に適したオプションです。上に展開するチーム)。
Substitution :多くの場合、定数である既知の名前を参照する必要があるだけですが、ARNはAWSアカウントIDによって異なります。 Fn::Sub
を使用して、アカウントIDや地域など、いくつかの "pseudo-parameters" を展開できます。
"TaskRoleArn": { "Fn::Sub": "arn:aws:iam::${AWS::AccountId}:role/YourSharedServiceTaskRole" }
SSMパラメータ :SSMプロパティを取得する動的参照を持つことができます。これは、その値のソースから完全に抽象化するのに便利です。CloudFormationで作成することもできますが、文字どおり、1回限りのコマンドラインスクリプトを実行しているユーザーである可能性があります。ターゲットサービス以外のユーザーによる取得(EC2/ECS IAMインスタンスロールなど)—たとえば、これを使用してSES資格情報を保存しました。
aws ssm put-parameter --type String --name "/project/mail/EmailHost" --value email-smtp.us-east-1.amazonaws.com aws ssm put-parameter --type String --name "/project/mail/EmailUser" --value <SES_ACCESS_KEY> aws ssm put-parameter --type SecureString --key-id alias/your-well-known-iam-kms-alias --name "/project/mail/EmailPassword" --value <SES PASSWORD>`
Macros :これは最近発表され、テンプレートに含めるために任意のJSONを返すLambda関数を持つことができる非常に強力なメカニズムです。 CloudFormationスタックの作成者が直接作成する権限のない追加のリソースのプロビジョニングから、データベース内の値を検索して、たとえば、VPC CIDR割り当てで構成されたテンプレートを返すことで、より大きな予約プールからほとんどすべてのことを行うことができます。親組織によって管理されます。
Amazons CDK (現在、開発者のプレビュー段階にあります)は、既存のリソースをインポートする方法を提供します。
Amazon S3バケットやVPCなど、CDKアプリの外部で定義されているリソースを参照する必要がある場合は、AWS構成で利用可能なXxxx.import(...)静的メソッドを使用できます。たとえば、Bucket.import()メソッドを使用してBucketRefオブジェクトを取得できます。これは、バケットが必要なほとんどの場所で使用できます。このパターンにより、アプリの外部で定義されたリソースをアプリの一部であるかのように扱うことができます。
ソース: https://docs.aws.Amazon.com/CDK/latest/userguide/aws_construct_lib.html
既存のCloudFormationテンプレートをインポートすることもできます: https://docs.aws.Amazon.com/CDK/latest/userguide/use_cfn_template.html
これがお役に立てば幸いです。