开发应用程序以从cloudformation模板创建堆栈

时间:2018-07-13 18:16:11

标签: amazon-web-services amazon-ec2 aws-sdk amazon-cloudformation

我是AWS的新手,目前正在从事简单的任务。

我使用cloudformation模板创建了一个免费的EC2实例。现在,我的下一个任务是编写一个简单的应用程序,该应用程序使用相应的AWS开发工具包调用CloudFormation API,以从模板创建堆栈。

这是cloudformation模板:

{
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "Ec2 Template",
"Metadata": {
    "Copyright":[
        "Copyright 2017, All rights reserved"
        ],
        "Comments":[
            "Create an EC2"
        ]
},
"Parameters": {
    "KeyName": {
        "Type": "AWS::EC2::KeyPair::KeyName",
        "Description": "Name of an existing EC2 KeyPair to enable access to join ECS instances."
    },
"InstanceTypeParameter":{
    "Type": "String",
    "Default": "t2.micro",
    "AllowedValues": [
    "t2.micro",
    "m1.small",
    "m1.large"
    ],
    "Description": "Enter t2.micro, m1.small, or m1.large. Default is t2.micro."
},
"EcsSecurityGroupLb":{
    "Type": "AWS::EC2::SecurityGroup::Id",
    "Description":"The ECS ELB Security Group."
},
"vpcid":{
    "Type": "AWS::EC2::VPC::Id"
},
"mySubnetIDs": {
    "Description":"Subnet IDs",
    "Type":"AWS::EC2::Subnet::Id"
}
   },
    "Resources":{
        "Ec2Instance":{
            "Type":"AWS::EC2::Instance",
            "Properties":{
                "ImageId": "ami-bf4193c7",
                "KeyName": {
                "Ref": "KeyName"
            },
            "InstanceType":{
                "Ref": "InstanceTypeParameter"
            },

            "NetworkInterfaces":[
              { 
                "AssociatePublicIpAddress":"true",
                "DeviceIndex":"0",
                "SubnetId":{
                    "Ref":"mySubnetIDs"
                },
                "GroupSet":[
                    {
                        "Ref": "EcsSecurityGroupLb"
                    }
                ]
            }
        ],
            "BlockDeviceMappings":[
                {
                    "DeviceName": "/dev/sdc",
                    "VirtualName":"ephemeral0"
                }
            ]
        }
    }
},
"Outputs":{
   "Ec2Instance":{
    "Description": "InstanceId of newly created EC2 instance",
    "Value": {
        "Ref": "Ec2Instance"
        }
    },
    "InstanceIPAddress":{
    "Value":{ "Fn::GetAtt": ["Ec2Instance", "PublicIp"]},
    "Description": "Public IP address of instance"
    }        
  }
}           

我已经阅读了很多文档,但是对于如何进行操作并没有真正的了解。我想知道是否有任何好的教程。

也在寻找有关步骤的建议。

谢谢!

1 个答案:

答案 0 :(得分:1)

由于必须(作为一项任务要求)自己编写应用程序,因此需要使用可用的one of the AWS SDKs

您选择的SDK将取决于您最喜欢使用哪种编程语言(或您的任务所需)。

大致上,您的程序将需要执行以下操作:

  1. 使用AWS开发工具包,创建一个使用您IAM用户的API密钥的AWS会话。
  2. 从您的本地系统中获取Cloudformation模板。
  3. 使用AWS开发工具包,调用Cloudformation以使用模板创建资源堆栈。
  4. (可选)等待堆栈完成,然后输出有关堆栈状态的报告。

祝你好运!