AWS CloudFormation is a wonderful service for automating your AWS builds – my colleagues have done a number of detailed walk-throughs in other blog posts.
AWS also provides a toolkit for Visual Studio as an extension of the IDE. To get started, configure the extension with your AWS IAM Access Key ID and Secret Key and you will be able to use the new AWS explorer pane to explore all AWS services such as VPC, EC2, RDS, etc.
By installing the toolkit, it also automatically installed the AWS .NET SDK which included libraries to develop apps using AWS services using .NET classes. With the AWS SDK support on the .NET platform, building applications and infrastructure leveraging AWS services using .NET easier.
Create and deploy your CloudFormation template in Visual Studio
To create a new CloudFormation template in Visual Studio, you simply add a new project: select AWS — File — New — Project. Navigate to Templates — AWS and select AWS CloudFormation Project.
Once the project is created, you will be presented with the goodness of Visual Studio including Intellisense!
To deploy the template, right click the template and select Deploy to AWS CloudFormation
I came across an error whenever I deployed a new AWS CloudFormation template created in Visual Studio (I am using Visual Studio 2012 Premium edition). The error indicated a syntax error; and after validating my template – it is clear that it is not a formatting error.
Deploying the same template directly on the AWS console or via an AWS Powershell command (test-cfntemplate) rendered the same result:
Test-CFNTemplate : Template format error: JSON not well-formed. (line 1, column 2) At line:1 char:1 + Test-CFNTemplate -TemplateURL "https://s3-ap-southeast-1.amazonaws.com/vicperdan ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (Amazon.PowerShe...NTemplateCmdlet:TestCFNTemplateCmdlet) [Test-CFNTem plate], InvalidOperationException + FullyQualifiedErrorId : Amazon.CloudFormation.AmazonCloudFormationException,Amazon.PowerShell.Cmdlets.CFN.TestCF NTemplateCmdlet
Finding the solution took some searching, until I found a post indicating that this is caused by the default encoding used by Visual Studio: UTF-8 with BOM (Byte-Order-Mark). Changing the default to UTF-8 without BOM fixed the issue. This can be changed by selecting File — Advanced Save Options in Visual Studio.