【问题标题】:Create Aws Cloudformation Ec2 t2.micro Template创建 Aws Cloudformation Ec2 t2.micro 模板
【发布时间】:2020-02-14 20:46:07
【问题描述】:

我想创建一个实例类型为“t2.micro”的 CloudFormation 模板。但是,我找不到有关此实例类型的任何示例。类型为“t2.micro”的ec2需要VPC等

谢谢。

【问题讨论】:

    标签: amazon-ec2 amazon-cloudformation aws-ec2


    【解决方案1】:

    您可以使用以下模板 sn-p。
    它将输出 EC2 实例的公共 DNS 名称。

    注意:我没有测试过这个模板!

    {
        "AWSTemplateFormatVersion": "2010-09-09",
        "Description": "CloudFormation template for creating an ec2 instance",
        "Parameters": {
            "KeyName": {
                "Description": "Key Pair name",
                "Type": "AWS::EC2::KeyPair::KeyName",
                "Default": "my_keypair_name"
            },
            "VPC": {
                "Type": "AWS::EC2::VPC",
                "Properties":{
                    "CidrBlock": "10.0.0.0/16",
                    "EnableDnsHostnames": "true"
                }
            },
            "Subnet":{
                "Type": "AWS::EC2::Subnet",
                "Properties": {
                    "VpcId": {"Ref": "VPC"},
                    "CidrBlock": "10.0.0.0/24",
                    "AvailabilityZone": "us-east-1a"
                }
            },
            "InstanceType": {
                "Description": "Select one of the possible instance types",
                "Type": "String",
                "Default": "t2.micro",
                "AllowedValues": ["t2.micro", "t2.small", "t2.medium"]
            }
        },
        "Resources":{
            "SecurityGroup":{
                "Type": "AWS::EC2::SecurityGroup",
                "Properties": {
                    "GroupDescription": "My security group",
                    "VpcId": {"Ref": "VPC"},
                    "SecurityGroupIngress": [{
                        "CidrIp": "0.0.0.0/0",
                        "FromPort": 22,
                        "IpProtocol": "tcp",
                        "ToPort": 22
                    }]
                }
            },
            "Server": {
                "Type": "AWS::EC2::Instance",
                "Properties": {
                    "ImageId": "ami-123456",
                    "InstanceType": {"Ref": "InstanceType"},
                    "KeyName": {"Ref": "KeyName"},
                    "SecurityGroupIds": [{"Ref": "SecurityGroup"}],
                    "SubnetId": {"Ref": "Subnet"}
                }
            }
        },
        "Outputs": {
            "PublicName": {
                "Value": {"Fn::GetAtt": ["Server", "PublicDnsName"]},
                "Description": "Public name (connect via SSH)"
            }   
        }
    }
    

    欲了解更多信息,请参阅:http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html

    【讨论】:

      【解决方案2】:

      栈下允许创建 EC2 实例,只需指定 VPC id、子网 ID、SG id、实例类型、ami id 等参数,例如你可以在此定义实例类型,默认为 t2,micro。这已成功测试并运行无错误。如果您有任何疑问,请发表评论。######由 MARK Machines 创建 是这样的:

          {"Description": "CloudFormation template for creating an ec2 instance",
      "Parameters": {
          "KeyName": {
              "Description": "Key Pair name",
              "Type": "AWS::EC2::KeyPair::KeyName",
              "Default": "xxx-xxx"
          },
          "VPC": {
              "Type": "AWS::EC2::VPC::Id",
              "Default":"givevpcid"
          },
          "Subnet":{
              "Type": "AWS::EC2::Subnet::Id",
              "Default": "givesubnetid"
          },
          "InstanceType": {
              "Description": "Select one of the possible instance types",
              "Type": "String",
              "Default": "t2.micro",
              "AllowedValues": ["t2.micro", "t2.small", "t2.medium"]
          },
          "SecurityGroup":{
               "Type": "AWS::EC2::SecurityGroup::Id",
               "Default" : "givesecuritygroupid",
               "AllowedValues": ["sg-xxxxx", "sg-yyy", "sg-zzz"]
          } 
      },
      "Resources":{
          "Server": {
              "Type": "AWS::EC2::Instance",
              "Properties": {
                  "ImageId": "ami-098789xxxxxxxxx",
                  "InstanceType": {"Ref": "InstanceType"},
                  "KeyName": {"Ref": "KeyName"},
                  "SecurityGroupIds": [{"Ref": "SecurityGroup"}],
                  "SubnetId": {"Ref": "Subnet"}
              }
          }
      },
      "Outputs": {
          "PublicName": {
              "Value": {"Fn::GetAtt": ["Server", "PublicDnsName"]},
              "Description": "Public name (connect via SSH)"
          }   
      }
      

      }

      【讨论】:

        【解决方案3】:

        您可以使用我的以下模板,它工作正常。

        single-instance.yml

        AWSTemplateFormatVersion: 2010-09-09
        Description: >-
          AWS CloudFormation Sample Template EC2InstanceWithSecurityGroupSample: Create
          an Amazon EC2 instance running the Amazon Linux AMI. The AMI is chosen based
          on the region in which the stack is run. This example creates an EC2 security
          group for the instance to give you SSH access. **WARNING** This template
          creates an Amazon EC2 instance. You will be billed for the AWS resources used
          if you create a stack from this template.
        Parameters:
          KeyName:
            Description: Name of an existing EC2 KeyPair to enable SSH access to the instance
            Type: 'AWS::EC2::KeyPair::KeyName'
            ConstraintDescription: must be the name of an existing EC2 KeyPair.
          InstanceType:
            Description: WebServer EC2 instance type
            Type: String
            Default: t2.micro
            ConstraintDescription: must be a valid EC2 instance type.
          SSHLocation:
            Description: The IP address range that can be used to SSH to the EC2 instances
            Type: String
            MinLength: '9'
            MaxLength: '18'
            Default: 0.0.0.0/0
            AllowedPattern: '(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/(\d{1,2})'
            ConstraintDescription: must be a valid IP CIDR range of the form x.x.x.x/x.
        Mappings:
          AWSInstanceType2Arch:
            t2.micro:
              Arch: HVM64
          AWSInstanceType2NATArch:
            t2.micro:
              Arch: NATHVM64
          AWSRegionArch2AMI:
            us-east-1:
              HVM64: ami-0080e4c5bc078760e
              HVMG2: ami-0aeb704d503081ea6
        Resources:
          EC2Instance:
            Type: 'AWS::EC2::Instance'
            Properties:
              InstanceType: !Ref InstanceType
              SecurityGroups:
                - !Ref InstanceSecurityGroup
              KeyName: !Ref KeyName
              ImageId: !FindInMap 
                - AWSRegionArch2AMI
                - !Ref 'AWS::Region'
                - !FindInMap 
                  - AWSInstanceType2Arch
                  - !Ref InstanceType
                  - Arch
          InstanceSecurityGroup:
            Type: 'AWS::EC2::SecurityGroup'
            Properties:
              GroupDescription: Enable SSH access via port 22
              SecurityGroupIngress:
                - IpProtocol: tcp
                  FromPort: '22'
                  ToPort: '22'
                  CidrIp: !Ref SSHLocation
        Outputs:
          InstanceId:
            Description: InstanceId of the newly created EC2 instance
            Value: !Ref EC2Instance
          AZ:
            Description: Availability Zone of the newly created EC2 instance
            Value: !GetAtt 
              - EC2Instance
              - AvailabilityZone
          PublicDNS:
            Description: Public DNSName of the newly created EC2 instance
            Value: !GetAtt 
              - EC2Instance
              - PublicDnsName
          PublicIP:
            Description: Public IP address of the newly created EC2 instance
            Value: !GetAtt 
              - EC2Instance
              - PublicIp 
        

        然后运行以下命令:

        aws cloudformation create-stack --template-body file://single-instance.yml --stack-name single-instance --parameters ParameterKey=KeyName,ParameterValue=sample ParameterKey=InstanceType,ParameterValue=t2.micro
        

        【讨论】:

        • 对于 imageid,aws 在参数存储条目中维护推荐的 id,例如aws ssm get-parameters --name /aws/service/ecs/optimized-ami/amazon-linux-2/recommended/image_id --query 'Parameters[0].Value' --output text
        猜你喜欢
        • 2023-03-10
        • 1970-01-01
        • 1970-01-01
        • 2015-09-13
        • 2016-03-31
        • 2018-10-12
        • 2019-09-22
        • 2018-01-08
        • 2016-05-19
        相关资源
        最近更新 更多