如何解决 AWS Cloudformation 中的循环依赖关系

2024-01-16

我创建了一个 AWS Cloudformation 模板,但在克服循环依赖项时遇到问题。我正在创建一个 EC2 实例和一个负载均衡器,负载均衡器依赖于 EC2 实例,因为它在其实例属性中引用它。一切都工作正常,直到我必须在 EC2 实例 Init 部分中引用负载均衡器的 DNSName 属性。

"AppServer": {
  "Type": "AWS::EC2::Instance",
  "Metadata": {
    "AWS::CloudFormation::Init" : {
      "configSets" : {
        "Install" : [ "Install" ]
      },
       ...
       ...
       ...
      "Install" : {
        "commands" : {
           "update hostname rmi" : {
            "command" : { "Fn::Join" : [ "", [ "runuser -lm rlt -c \"/home/ec2-user/awscf/update-rmi.sh ", { "Fn::GetAtt" : [ "WebLoadBalancer", "DNSName" ] }, "\"" ] ] }
          },
         }

因此,这里的问题是 EC2 实例无法引用负载均衡器,因为它尚未创建,并且无法首先创建负载均衡器,因为它需要 EC2 实例 ID 才能与其关联。

我查看了 WaitConditions 和 CreationPolicy,但除非我误解了它们的工作方式,否则我认为它们不会帮助我。本质上我需要的是 a) 创建 EC2 实例,但在创建 LoadBalancer 之前不要执行 UserData 或 b) 首先创建 LoadBalancer 并且不要将其与 EC2 实例关联,创建 EC2 实例后返回并更新 LoadBalancer 以将其与 EC2 实例关联。有谁知道这样的事情是否可能?除了创建完整堆栈然后返回并手动更新之外?理想情况下,我希望这发生在堆栈的单个创建上。


您可以考虑使用 EC2 实例中的 cfn-get-metadata 帮助程序脚本来检索 Stack::Resource 信息。

http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-get-metadata.html http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-get-metadata.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何解决 AWS Cloudformation 中的循环依赖关系 的相关文章

  • Laravel 作业推送至 Amazon SQS 但未处理

    我正在运行 Laravel 5 3 我正在尝试测试队列作业 并且我已将队列配置为使用 Amazon SQS 我的应用程序能够将作业推送到队列中 并且我可以在 SQS 中看到该作业 但它留在那里 从未被处理 我尝试过跑步php artisan
  • 使用 python 写入 aws lambda 中的 /tmp 目录

    Goal 我正在尝试将 zip 文件写入 python aws lambda 中的 tmp 文件夹 因此我可以在压缩之前提取操作 并将其放入 s3 存储桶中 Problem 操作系统 Errno30 只读文件系统 这段代码在我的计算机上进行
  • 来自自定义 EBS 支持的实例的实例存储 AMI

    抱歉 如果这应该很容易从文档中理解 但我没有 如果我使用易于使用的 Ubuntu EBS boot AMI 之一启动 EC2 实例 请安装一堆东西并在 下移动一些文件 然后我使用以下命令创建一个实例存储 AMIec2 bundle vol
  • S3.getSignedUrl 接受多种内容类型

    我正在使用react s3 uploader节点包 它接受一个signingUrl用于获取用于将对象存储到 S3 中的signedUrl 目前 我已经配置了一个 lambda 函数 带有 API 网关端点 来生成此signedUrl 经过一
  • 在describe-vpcs中按标签过滤的正确语法是什么?

    我试图理解 aws ec2 cli 调用 我希望描述所有 VPC 然后在自定义标记上描述文件管理器 vpcname myvpc 但是在尝试多种组合后 我不断收到有关 filters 的格式和使用的冲突错误 使用作为参考 http docs
  • Amazon SageMaker 不支持的内容类型应用程序/x-image

    我在 Sagemaker 中部署了基于 TensorFlow keras 的 CNN 模型 现在为了调用推论 我遵循了这个tutorial https aws amazon com blogs machine learning classi
  • 为什么此 HTTP 请求在 AWS Lambda 上不起作用?

    我正在开始使用 AWS Lambda 并尝试从我的处理程序函数请求外部服务 根据这个答案 https stackoverflow com a 27932216 473467 HTTP 请求应该可以正常工作 而且我还没有找到任何其他说明的文档
  • AWS Lambda。延迟调用

    我需要使用亚马逊工具构建 任务调度程序 主要问题是我需要执行一次任务 延迟很大 可能是几个小时或几周 我尝试研究如何使用 CloudWatch 和 Lambda 函数构建它 据我了解 我需要使用单独的规则来执行一次超时 但 AWS 只允许我
  • 查询CloudSearch中字段是否存在

    假设我在 CloudSearch 中索引的文档列表中有一个名为 xyz 的可选字段 如何查询 CloudSearch 以使其仅返回包含 xyz 的文档 如果我预先知道它是一个正整数 我可能可以这样做来获取所需的列表 q xyz 0 q pa
  • 使用随机目录结构重命名传入的 S3 文件

    我有一个可以将文件发送到 s3 存储桶的应用程序 不幸的是 我无法更改它在 s3 中发送到的路径 因此我必须找到一种方法来获取该文件 mys3bucket apps region 020 07 14T22 24 34Z details cs
  • 关于AWS RDS多可用区的两个问题

    据我所知 当从单可用区升级到多可用区 rds 时 会发生 breef i o freeze 这到底是什么意思呢 当升级到多可用区部署时 例如从小到大 生产数据库是否会受到影响 是否能够使用备份数据库 然后进行故障转移 您的问题的答案已写下来
  • 我可以更改 CloudWatch 上的公制单位吗?

    我正在将指标数据发送到 CloudWatch 它们被发送到 AWSStandardUnit Count单位 但后来我把它们改为StandardUnit Milliseconds 在 AWS 的仪表板上 我仍然看到以下数据Count unit
  • 使用实例配置文件凭证的 AWS CLI

    在我的 EC2 实例中使用 AWS CLI 时 如何指定要使用实例配置文件凭证 文档说 Instance profile credentials these credentials can be used on EC2 instances
  • 从 AWS CloudWatch 指标数学 SEARCH 函数获取单个时间序列

    我正在尝试创建一个 CloudWatch 警报 以判断组中的任何实例是否超过所用内存的 x 并构建了以下指标数学查询来执行此操作 SEARCH CWAgent InstanceId MetricName mem used percent M
  • AWS ELB 和 GoDaddy 域正在运行

    我已在 goDaddy com 中注册了一个域 并希望将流量发送到 AWS Route53 我创建了一个 ELB 我执行了以下步骤 在 Route 53 中 为我的 godaddy 域名创建一个托管区域 这反过来又为我提供了一条包含 4 个
  • 如何使用 boto3 让 ec2 实例访问 s3

    By googling I found this tutorial on accessing S3 from EC2 instance without credential file http parthicloud com how to
  • 如何登录ec2机器?

    我获得了 EC2 机器的一些登录信息 基本上是 ec2 X X X compute X amazonaws com 加上用户名和密码 如何访问机器 我尝试过 ssh ssh email protected cdn cgi l email p
  • 如何将stepfunctionexecutionId解析为SageMaker批量转换作业名称?

    我创建了一个步骤函数 该状态机的定义如下 step function json 在 terraform 中使用 使用本页中的语法 https docs aws amazon com sagemaker latest APIReference
  • 如何在没有 SDK 的情况下在 Objective C 中为 S3 创建预签名 URL?

    我正在构建一个 mac 应用程序not使用 AWS iOS 开发工具包 我尝试构建的 GET 请求应遵循以下通用格式 Authorization AWS AWSAccessKeyId base64 hmac sha1 VERB n CONT
  • 如何使用 AWS Lambda Python 读取 AWS S3 存储的 Word 文档(.doc 和 .docx)文件内容?

    我的场景是 我尝试使用 python 实现从 Aws Lambda 读取 AWS 存储的 S3 word 文档 doc 和 docx 文件内容 下面的代码是我使用的 我的问题是我可以获取文件名 但无法读取内容 def lambda hand

随机推荐