标签: amazon-cloudformation

如何为 Auto Scaling 创建的 EC2 实例创建 DNS 条目?

我正在研究对由 ELB 前置的一层网络服务器使用自动缩放组。我遇到的困难之一是如何为每个新实例提供正确的 DNS 名称。例如,我希望网络服务器具有这样的名称,frontend-web-XXX.prod.example.com以便它们的名称在日志中显示正确并且易于组织。我最终想要自动缩放另外两个层,并且我希望它们api-web-XXX.prod.example.com也有这样的名称。我对 cloudformation 模板有一些经验,并且已经使用关联的 Route53 记录启动了各个实例,但我没有看到任何迹象表明如何在自动缩放组中完成此操作。

amazon-web-services autoscaling amazon-route53 amazon-cloudformation

5
推荐指数
1
解决办法
7219
查看次数

Cloud Formation 模板将入口规则添加到现有安全组

问题范围

我有一个使用多个云形成模板构建的应用程序。它们需要相互交互,但是太大/太复杂而无法在一个模板中构建。

场景细节

想象一下只有两个模板(还有更多)

  • 模板 A
  • 模板 B

模板 A 创建一个安全组(安全组 A),将自身作为唯一的入口规则。它应用于此模板中执行相同功能的一系列主机。

模板 B 创建了另一个安全组(安全组 B)和一些主机(在一个弹性 beantalk 中)。

如何使用云形成将入口规则添加到安全组 A以处理来自安全组 B 的流量?

我试过什么

我查看了文档,我想创建一个安全组 Ingress 规则并将其与安全组 A 相关联,但就我所见,这似乎不可行 - http://docs.aws.amazon.com /AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-rule.html

其他选择

我可以只使用安全组 B 中主机的 CIDR 范围,因为在构建任何这些之前已知(所有这些都在具有单独子网的 VPC 中)但是我觉得必须有一种比接受来自cidr 范围。

amazon-web-services amazon-cloudformation

5
推荐指数
1
解决办法
6244
查看次数

Amazon 提供的 ECS CloudFormation 模板中的自动扩展运行状况检查失败。

我正在尝试使用此处提供的 CloudFormation ECS 服务模板 AWS作为指南来建立一个新的 ECS 集群。我的 ECS 实例在 AutoScaling 组内启动,但未通过运行状况检查并始终终止。

输出并没有真正告诉我什么检查失败或原因。

我使用的 CloudFormation 代码几乎是 AWS 文档中提供的股票代码。我添加了一个具有更广泛权限的安全组(以便我可以在迭代时通过 SSH 进入)并将 AMI 更新到 us-east-1 中 ECS 优化的 Amazon Linux 的最新版本。

当前模板:

{
  "AWSTemplateFormatVersion" : "2010-09-09",
  "Description": "Deploys PoC ECS infrastructure.",  

  "Parameters" : {
    "KeyName": {
      "Description": "Name of an existing EC2 KeyPair to enable SSH access to the Elastic Beanstalk and Bastion hosts",
      "Type": "String",
      "MinLength": "1",
      "MaxLength": "255",
      "AllowedPattern": "[\\x20-\\x7E]*",
      "ConstraintDescription": "can contain only ASCII characters.",
      "Default": "smx-test-key"
    }, …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-cloudformation amazon-ecs

5
推荐指数
1
解决办法
4033
查看次数

将参数传递给 AWS Lambda

我正在尝试编写一个 CloudFormation 模板,该模板将 Lambda 函数订阅到 CloudWatch Logs LogGroup。然后,此 Lambda 函数应解析日志并将它们放入 Amazon ES 集群。

订阅等都运行良好,但我无法理解的一点是如何将 Amazon ES 集群端点传递给 Lambda 函数。当您浏览控制台时,AWS 提供的模板包括一行:

var endpoint = 'my-aws-es-endpoint.amazonaws.com';
Run Code Online (Sandbox Code Playgroud)

每次运行 CloudFormation 模板时,我显然都需要更新它,因为每次我都会得到一个具有不同端点的不同集群。我不想手动更新它,但希望能够使用像“Fn::GetAtt”这样的 CloudFormation 函数来获取终点并将其传递给 Lambda。我就是不知道怎么做。

amazon-cloudformation amazon-elasticache amazon-lambda

5
推荐指数
1
解决办法
8573
查看次数

在 CloudFormation 模板中为 EC2 实例指定 VPC

我正在通过 CloudFormation 模板启动一个 EC2 实例,但是,指定的实例t2.micro需要一个 VPC。

如何在 CloudFormation 模板中指定 VPC?

这是我的模板:

{
    "Description" : "Single Instance",

    "Resources" : {
        "EC2Instance" : {
            "Type" : "AWS::EC2::Instance",
            "Properties" : {
                "ImageId" : "ami-b73b63a0",
                "InstanceType" : "t2.micro",
                "KeyName" : "my-key",
                "Tags" : [
                    {
                        "Key" : "Name",
                        "Value" : "test"
                    }
                  ]
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-cloudformation amazon-vpc

5
推荐指数
1
解决办法
2643
查看次数

如果托管区域包含不需要的记录,CloudFormation 将无法删除堆栈,如何避免?

我编写了一个 CloudFormation 模板,它创建了一个完整的环境,其中包括 VPC、HostedZone、子网、自动缩放组等的创建...

创建的 ASG 成员服务器在第一次启动时运行用户数据脚本,与许多其他任务一起,每个实例也在新创建的 HostedZone 中注册自己。

一切都很完美。

问题是,当我将堆栈标记为删除时,它会失败 (DELETE_FAILED),原因是 CloudFormation 无法删除 HostedZone。

即使您尝试手动删除包含多于必需记录(NS 记录)的托管区域,您也会收到一条错误消息,提示您需要先删除该区域中的所有非必需记录,然后才能删除该区域。

CloudFormation 中也会发生这种情况,这就是“删除失败”的原因。

CloudFormation 中的错误如下所示:

The specified hosted zone contains non-required resource record sets and so cannot be deleted.
Run Code Online (Sandbox Code Playgroud)

我想知道是否有解决方法可以避免收到“删除失败”消息并且堆栈将被正确删除?

amazon-web-services amazon-route53 amazon-cloudformation

5
推荐指数
0
解决办法
1126
查看次数

我们可以通过cloudformation在AWS Route 53中注册域吗?

我是新的 Cloudformation,我正在尝试找到一个 Cloudformation 脚本来注册域,例如 Route53 下的 example.com。我查看了cloudformation pdf,没有发现与route53下的域名注册相关的内容。

任何指示/帮助将不胜感激

domain amazon-web-services amazon-route53 amazon-cloudformation

5
推荐指数
1
解决办法
2293
查看次数

AWS::CloudFormation::Init 不执行命令

我正在尝试在实例上安装 ansible。我想我可以AWS::CloudFormation::Init用来执行sudo pip install ansible. 不过,这似乎不起作用。这是我的实例资源:

ansibleInstance:
  Type: 'AWS::EC2::Instance'
  Metadata:
    'AWS::CloudFormation::Init':
      commands:
        ansible:
          command: "sudo pip install ansible"
          test: "pip --version"
          ignoreErrors: 'false'
  Properties:
    ImageId: ami-467ca739
    KeyName: Candidate-EyMm7zuOcn
    InstanceType: t2.micro
    SubnetId: !Ref subnetTest
    SecurityGroupIds:
    - !Ref allowSSH
    Tags:
      - Key: Name
        Value: Test
Run Code Online (Sandbox Code Playgroud)

有没有办法查看尝试执行此操作时发生的情况,以便我可以找出失败的位置/原因?有没有其他人可能会建议考虑解决这个问题?

EDIT1:我删除了sudo以防万一,以防万一,无论出于何种原因(我认为不会,但我还是想完全消除它)。那没有影响。我还验证了aws-cli工具已安装,这是预期的,因为它AWS Linux AMI

EDIT2:这是 ansibleInstance 资源的一个版本,我试图在其中通过UserData以下方式执行命令:

ansibleInstance:
  Type: 'AWS::EC2::Instance'
  Properties:
    ImageId: ami-467ca739
    KeyName: Candidate-EyMm7zuOcn
    InstanceType: t2.micro
    SubnetId: !Ref subnetTest
    SecurityGroupIds:
    - !Ref …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-cloudformation

5
推荐指数
1
解决办法
5818
查看次数

Cloudformation 内在函数 Fn::Sub 映射

我不明白为什么Fn::Sub在这个模板中不起作用。我收到以下错误:

模板包含错误。:模板错误:一个或多个 Fn::Sub 内部函数未指定预期参数。指定一个字符串作为第一个参数,并指定一个可选的第二个参数来指定要在字符串中替换的值的映射

Resources:
  LambdaSubmitJob:
    Type: 'AWS::Lambda::Function'
    Properties:
      Handler: index.lambda_handler
      Runtime: python2.7
      Timeout: 10
      Code:
        ZipFile: |
          import json
          import boto3
  LambdaJobStatusPoll:
    Type: 'AWS::Lambda::Function'
    Properties:
      Handler: index.lambda_handler
      Runtime: python2.7
      Timeout: 10
      Code:
        ZipFile: |
          import json
          import boto3
  MyStepF:
    Type: 'AWS::StepFunctions::StateMachine'
    Properties:
      DefinitionString: !Sub 
        - |-
          {
            "Comment": "A state machine that submits a Job to AWS Batch and monitors the Job until it completes.",
            "StartAt": "Submit Job",
            "States": {
              "Submit Job": {
                "Type": "Task",
                "Resource": "${Lambda1}", …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-cloudformation

5
推荐指数
1
解决办法
6794
查看次数

收到 0 个 SUCCESS 信号(共 1 个)。无法满足 100% MinSuccessfulInstancesPercent 要求

我在云形成中运行此模板,以在 ubuntu-18.04 计算机中创建自动缩放,它将自动回滚由此模板创建的所有实例,并给出此类错误。

收到 0 个 SUCCESS 信号(共 1 个)。无法满足 100% MinSuccessfulInstancesPercent 要求 无法创建以下资源:[WebServerGroup]。。用户请求回滚。

{
    "AWSTemplateFormatVersion": "2010-09-09",

    "Parameters": {
        "VpcId": {
            "Type": "AWS::EC2::VPC::Id",
            "Description": "VpcId of your existing Virtual Private Cloud (VPC)",
            "ConstraintDescription": "must be the VPC Id of an existing Virtual Private Cloud."
        },
        "Subnets": {
            "Type": "List<AWS::EC2::Subnet::Id>",
            "Description": "The list of SubnetIds in your Virtual Private Cloud (VPC)"
        },
        "InstanceType": {
            "Description": "WebServer EC2 instance type",
            "Type": "String",
            "Default": "t2.small",
            "AllowedValues": [
                "t1.micro",
                "t2.nano",
                "t2.micro",
                "t2.small",
                "t2.medium",
                "t2.large", …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-cloudformation ubuntu-18.04 devops

5
推荐指数
1
解决办法
1万
查看次数