Data is the key to almost all solutions. Obviously, at some point, we will need to move it. And this is when AzCopy will come to the rescue. In this short post/video I will share how you can securely copy a Zip file (aka. data), from one location (blob storage, AWS) to a blob storage in an Azure subscription (the
same subscription or a different one).
What is AzCopy
AzCopy is a command-line utility that you can use to copy blobs or files to or from a storage account. It can run on
Windows, Mac, and Linux. And... It's already available pre-install inside Cloud Shell!
How it works
AzCopy can do many things but let's focus on the "copy" feature. To copy a file from a location to another one here
the command to execute:
It looks simple, right? And it is. To keep it secure AzCopy can use Shared Access Signature (SAS) tokens. To get those
in Azure, you can execute a command (ex: az storage container generate-sas) or use the Azure Portal.
Once you are in the Azure portal open the account storage of your source or destination (you will have to do both).
From the option on the left search for Shared
access signature or just sas and click on it. Select the type of options you need. A best practice is to
allow the minimum requirements. If you know you are only moving files then unchecked the File, Queue, and Table. Same
things for the resources types, permissions, and expiry date/time. Once you are done click the Generate SAS and
connection string button.
Use those URLs with the SAS token in your command, and voila!
Copy, Download or Upload from-to any combination of Windows, Linux, OS X, or the cloud
Data is and will always be our primary concern. Whether shaped as text files, images, VM VHDs or any other ways, at some point in time, our data will need to be moved. I already wrote about it previously, and the content of this post is still valuable today, but I wanted to share new options and convert all ground (meaning Linux, Windows and OS X).
Scenarios
Here few scenarios why you would want to move data.
Your Microsoft Azure trial is ending, and you wish to keep all the data.
You are creating a new web application, and all those images need to be moved to the Azure subscription.
You have a Virtual Machine that you would like to move to the cloud or to a different subscription.
...
AZCopy
AzCopy is a fantastic command-line tool for copying data to and from Microsoft Azure Blob, File, and Table storage. At the moment, to write this post AzCopy is only available for Windows users. Another solution will be introduced later in this post for Mac and Linux users. Before AzCopy was only available on Windows. However, recently a second version built with .NET Core Framework is available. The commands are very similar but not exactly the same.
AzCopy on Windows
In his simplest expression, an AzCopy command looks like this:
If you earlier have installed an Azure SDK on your machine, you already have it. By default, AzCopy is installed to %ProgramFiles(x86)%\Microsoft SDKs\Azure\AzCopy (64-bit Windows) or %ProgramFiles%\Microsoft SDKs\Azure\AzCopy (32-bit Windows).
If you need only AzCopy for a server, you can download the latest version of AzCopy.
Let's see some frequent usage. First let's say you need do move all those images from your server to an Azure blob storage.
These examples were simple, but AzCopy is a very powerful tool. I invite you to type one of the following commands to discover more about using AzCopy:
For detailed command-line help for AzCopy: AzCopy /?
For command-line examples: AzCopy /?:Samples
AzCopy on Linux
Before you could install AzCopy you will need to install .Net Core. This is done very simply with few commands.
It is very similar to the original version, but parameters are using -- and - instead of the / and where a : was required, it's now a simple space.
Uploading to Azure
Here an example, to copy a single file GlobalDevopsBootcamp.jpg to an Azure Blob Storage. We pass the full local path to the file into --source, the destination is the full URI, and finally the destination blob storage key. Of course, you could also use SAS token if you prefer.
To copy the image to a second Azure subscription, we use the command the source is now an Azure Storage URI, and we pass the source and the destination keys:
Azure CLI is a set of cross-platform commands for the Azure Platform. It gives tools to manipulate all Azure components, but this post will focus on azure storage features.
There are two versions of the Azure Command-Line Interface (CLI) currently available:
Azure CLI 2.0: written in Python, conpatible only with the Resource Manager deployment model.
Azure CLI 1.0: written in Node.js, compatible with both the classic and Resource Manager deployment models.
Azure CLI 1.0 is deprecated and should only be used for support with the Azure Service Management (ASM) model with "classic" resources.
Installing Azure CLI
Let's start by installing Azure CLI. Of course, you can download an installer but since everything is evolving very fast with not getting it from Node Package Manager (npm). The install will be the same, you just need to specify the version if you absolutely need Azure CLI 1.0.
sudo npm install azure-cli -g
To keep the previous scenario, let's try to copy all images to a blob storage. Unfortunately, Azure CLI doesn't offer the same flexibility as AzCopy,and you must upload the file one by one. However, to upload all images from a folder, we can easily put the command in a loop.
for f in Documents/images/*.jpg
do
azure storage blob upload -a frankysnotes -k YoMjXMDe+694FGgOaN0oaRdOF6s1ktMgkB6pBx2vnAr8AOXm3HTF7tT0NQWvGrWnWj5m4X1U0HIPUIAA== $f blogimages
done
In the previous command -a was the account name, and -k was the Access key. This two information can easily be found in the Azure portal. From the portal (https://portal.azure.com), select the storage account. In the right band click-on Access keys.
To copy a file (ex: a VM disk aka VHD) from one storage to another one in a different subscription or region, it's really easy. This time we will use the command azure storage blob copy start and the -a and -k are related to our destination.
The nice thing about this command is that it's asynchronous. To see the status of your copy just execute the command azure storage blob copy show
azure storage blob copy show -a frankshare -k YoMjXMDe+694FGgOaN0oPaRdOF6s1ktMgkB6pBx2vnAr8AOXm3HTF7tT0NQVxsqhWvGrWnWj5m4X1U0HIPUIAA== imagesbackup 20151011_151451.MOV
Azure CLI 2.0 (Windows, Linux, OS X, Docker, Cloud Shell)
The Azure CLI 2.0 is Azure's new command-line optimized for managing and administering Azure resources that work against the Azure Resource Manager. Like the previous version, it will work perfectly on Windows, Linux, OS X, Docker but also from the Cloud Shell!
Cloud Shell is available right from the Azure Portal, without any plugging.
Uploading to Azure
The command if the same as the previous version except that now the command is named az. Here an example to upload a single file into an Azure Blob Storage.
Let's now copy the file to another Azure subscription. A think to be aware is that --account-name and --account-key are for the destination, even if it's not specified.
If you prefer, I also have a video version of that post.
One More Thing
Sometimes, we don't need to script things, and a graphic interface is much better. For this kind of situation, the must is the Azure Storage Explorer. It does a lot! Upload, download, and manage blobs, files, queues, tables, and Cosmos DB entities. And it works on Windows, macOS, and Linux!
It's just the beginning
This post was just an introduction to two very powerful tools. I strongly suggest to go read in the official documentation to learn more. Use the comment to share all your questions and suggestion.
Recently I add to upgrade an web site running in Azure Webrole from Azure OS famille 1.6 to a more recent version. While the migration was not complicated I encounter some little particularity that I found could be interesting to share.
The Context
The website was a Visual Studio 2010 project using Azure SDK 1.6 and a library call AspNetProvider that was part of Microsoft's sample few years ago to manage session and membership. Using the AspNetProvider library the session was saved in Azure blob storage, and the membership was saved in an SQL database.
The Goal
The application must stay a Visual Studio 2010 project, but using the most-recent Azure SDK and Azure Storage Client as possible.
The Solution
Azure SDK 2.1
Azure.StorageClient 4.0
Universal Provider version 2.1
OS famille 4
The Journey
Migration from SDK 1.6 to SDK 2.1
Azure SDK version 2.1 is the higher version compatible with Visual Studio 2010. And can be downloaded from Microsoft's website. Once it is installed, just open the project in Visual Studio and right-click on the Azure Project. By clicking on the upgrade button the magic will happen. Some errors could stay but the hard work will be done for you.
Migration from AspNetProvider to UniversalProvider
we need to remove all reference to the AspNetProvider library. Just expand the resources node in the Solution Explorer and delete the reference. One thing important is that since we are using Visual Studio 2010 the latest version of the UniversalProvider we can use is 1.2. More recent version are using .Net 4.5 and this is not compatible with the present solution. To get the reference added to the project just execute the following Nugget command:
Install-Package UniversalProvider -version 1.2
Check the web.config file to clean the membership connections.
Migration of the Azure Storage Client
This one is the easiest, just remove the reference in the reference node and then execute the following Nugget Command:
Install-Package Azure.Storage.Client
Migration of the membership data
The AspNetProvider was using prefixed SQL tables: aspnet_user, aspnet_membership, etc. The new membership manager is using another sets of tables. We must migrate the data from one set to the other one. Here a SQL script that will to exactly that. The script can be run multiple times because it will only copie the unmoved data.
-- ========================================================
-- Description: Migrate data from asp_* tables
-- to the new table used by Universal provider
-- ========================================================
DECLARE @CNT_NewTable AS INT
DECLARE @CNT_OldTable AS INT
-- --------------------------------------------------------
-- Applications -------------------------------------------
INSERT INTO dbo.Applications (ApplicationName, ApplicationId, Description)
SELECT n.ApplicationName, n.ApplicationId, n.Description
FROM dbo.aspnet_Applications o
LEFT JOIN dbo.Applications n ON o.ApplicationId = n.ApplicationId
WHERE n.ApplicationId IS NULL
SELECT @CNT_NewTable = Count(1) from dbo.Applications
SELECT @CNT_OldTable = Count(1) from aspnet_Applications
PRINT 'Application Count: ' + CAST(@CNT_NewTable AS VARCHAR) + ' = ' + CAST(@CNT_OldTable AS VARCHAR)
-- --------------------------------------------------------
-- Roles --------------------------------------------------
INSERT INTO dbo.Roles (ApplicationId, RoleId, RoleName, Description)
SELECT o.ApplicationId, o.RoleId, o.RoleName, o.Description
FROM dbo.aspnet_Roles o
LEFT JOIN dbo.Roles n ON o.RoleId = n.RoleId
WHERE n.RoleId IS NULL
SELECT @CNT_NewTable = Count(1) from dbo.Roles
SELECT @CNT_OldTable = Count(1) from aspnet_Roles
PRINT 'Roles Count : ' + CAST(@CNT_NewTable AS VARCHAR) + ' = ' + CAST(@CNT_OldTable AS VARCHAR)
-- --------------------------------------------------------
-- Users --------------------------------------------------
INSERT INTO dbo.Users (ApplicationId, UserId, UserName, IsAnonymous, LastActivityDate)
SELECT o.ApplicationId, o.UserId, o.UserName, o.IsAnonymous, o.LastActivityDate
FROM dbo.aspnet_Users o LEFT JOIN dbo.Users n ON o.UserId = n.UserID
WHERE n.UserID IS NULL
SELECT @CNT_NewTable = Count(1) from dbo.Users
SELECT @CNT_OldTable = Count(1) from aspnet_Users
PRINT 'Users count: ' + CAST(@CNT_NewTable AS VARCHAR) + ' >= ' + CAST(@CNT_OldTable AS VARCHAR)
-- --------------------------------------------------------
-- Memberships --------------------------------------------
INSERT INTO dbo.Memberships (ApplicationId, UserId, Password,
PasswordFormat, PasswordSalt, Email, PasswordQuestion, PasswordAnswer,
IsApproved, IsLockedOut, CreateDate, LastLoginDate, LastPasswordChangedDate,
LastLockoutDate, FailedPasswordAttemptCount,
FailedPasswordAttemptWindowStart, FailedPasswordAnswerAttemptCount,
FailedPasswordAnswerAttemptWindowsStart, Comment)
SELECT o.ApplicationId, o.UserId, o.Password,
o.PasswordFormat, o.PasswordSalt, o.Email, o.PasswordQuestion, o.PasswordAnswer,
o.IsApproved, o.IsLockedOut, o.CreateDate, o.LastLoginDate, o.LastPasswordChangedDate,
o.LastLockoutDate, o.FailedPasswordAttemptCount,
o.FailedPasswordAttemptWindowStart, o.FailedPasswordAnswerAttemptCount,
o.FailedPasswordAnswerAttemptWindowStart, o.Comment
FROM dbo.aspnet_Membership o
LEFT JOIN Memberships n ON o.ApplicationId = n.ApplicationId
AND o.UserId = n.UserId
WHERE n.UserId IS NULL AND n.ApplicationId IS NULL
SELECT @CNT_NewTable = Count(1) from dbo.Memberships
SELECT @CNT_OldTable = Count(1) from aspnet_Membership
PRINT 'Memberships count: ' + CAST(@CNT_NewTable AS VARCHAR) + ' >= ' + CAST(@CNT_OldTable AS VARCHAR)
-- -------------------------------------------------------
-- UsersInRoles ------------------------------------------
TRUNCATE TABLE dbo.UsersInRoles
INSERT INTO dbo.UsersInRoles SELECT * FROM dbo.aspnet_UsersInRoles
SELECT @CNT_NewTable = Count(1) from dbo.UsersInRoles
SELECT @CNT_OldTable = Count(1) from aspnet_UsersInRoles
PRINT 'UsersInRoles count: ' + CAST(@CNT_NewTable AS VARCHAR) + ' >= ' + CAST(@CNT_OldTable AS VARCHAR)
Migration from OSFamilly 1 to 4
Open the file .cscfg and edit the OS Family attribute. It's in the ServiceConfiguration node.
The only step left is to deploy in the staging environment to see if everything is working as expected. would recommend also to plan to upgrade as soon as possible because the Azure SDK 2.1 official retirement date is November 2015. I hope this post could help you, even if you are migrating from and to a different version. Any comments, suggestions and/or questions are welcome.
An Introduction to NuGet - Nice post that explain quickly what is NuGet and witch tools are available.
Why I Hate Unit Testing - What a nightmare! I'm not sure that this post will help the undecided to join the unit testing but this JusMock tool deserved a look.
A Super-Efficient Email Process (Peter) - Explain a simple method to be more productive and efficient with e-mail management.
the Continuous Client (Joshua Topolsky) - So true, I'm looking for a continuous Twitter client for a long time now. I don't understand why this isn't in all application. Congratulation to Kindle for this! You can start reading on one device and continue to another one without effort.
5 Things to Ask Your Cloud Backup Services Provider - I'm a Mozy user and really happy with it. Of course this post is also a sales pitch but the questions are the good one and should be considered when selecting your backup solution. When did you do your last backup?
“You Complete Me” Says SharePoint to Windows Azure (Jonathan Rozenblit) - Really nice post that just open the possibilities on how could be implanted Azure with other application and in this case with SharePoint.
Why Infrastructure As A Service Is A Bad Deal - It could be difficult to have a idea of the saving you could do going in the cloud. This post only looks the storage scenario. You could be surprise of the result, but I bet that the arrival of Google Drive and is aggressive pricing will makes thing moved.
Windows Azure Diagnostics–From the Ground Up (Greg Oliver) - Really nice post with a lot of good references and a lot of information. Perfect to get started or have a better understanding of Azure diagnostics.
Fun with the Service Bus (Part 1) - What a great tutorial! This post is covering a lot a material by doing for a to z an application where the heart is Azure Service Bus.
Code First model builder versions (Arthur Vickers) - This post explain how to configure EF code first to avoid any breaking code when updating the framework to a newer version. Nice work.
Créer son propre Gem et le publier - Very nice tutorial (in French) that explain in detail with a simple case how to create and also publish a Ruby Gem.
Hit the Presentation Sweet Spot - Twenty minutes is very short. Maybe it is a good idea for a specific type of presentation... How do you plan a 2-3 formation?
Your Personal Brand as a Developer: Implementing (Part 2 of 2) (Jonathan Rozenblit) - Part 2 on an unusual topic but important. Our brand, as a person. On the internet everything is amplified and could be seen by a lot of people very quickly. A post to read "before it is too late".
Coping with Email Overload (Peter) - This could be a good advice for a lot of people. While I'm working on a project where co-workers are across the country I not sure I can do this but maybe tweaking it with rules for only those people.
Quantifying and Avoiding Risk on the Windows Azure platform (Richard S. Parker) - Great post that identifies different types of risk and help to understand each of them. It’s also explained how you should manage the risk by not being dependant of Microsoft SLA.
Announcing SQL Azure Data Sync Preview Update (GregoryLeake) - This is a great news! not being able to update sync group was REALLY painful... Otherwise Azure Data Sync is a great application.
How We're Using Amazon Web Services - Moustach.io is sharing their experience of the cloud by showing how they use the AWS. Nice true story.
Exploring Cloud Architecture - A really nice recap of different architectures in the cloud. Putting them in context with cost efficiency.
[…]cost efficiency doesn’t equate to cheap or even free. You can determine the cost to be efficient when the equation can’t be changed to reduce cost without also reducing the services or functionality—meaning[…]
Getting Acquainted with NoSQL on Windows Azure (Bruce Kyle) - A real good post. It compares different noSQL databases and explains how they work. A lot of other good posts and tutorials are also referred. Definitely perfect to get started.
Announcing SQL Azure Data Sync Preview Update (Gregory Leake) - This is a great news. Not being able to edit the sync group in my previous projects was really painful. I can’t wait to try the new version...
An Up-Close Examination of the Microsoft RDP Vulnerability (Guest Author) - Important RDP vulnerability was fixed in the March patch. Since in Azure the remote is disables by default and that some firewall rules protect some connections, if you use Azure you are now safe and probably you were never really in danger. But if you are using an image on AWS you probably should apply you Windows Updates...
I'm Sure It Will Only Take You A Few Days To Code - Interesting, I didn't think our usual or natural sensor to estimate the complexity of something cannot be use when it comes to estimate software... but it makes senses!
[…]HTTPS (SSL) doesn't mean "I can trust this site," it means "this conversation is private." You still might be having a private conversation with Satan. - Scott Hanselman Trust[…]
Best practices for migration to the cloud - Nice post that contain all the link you need in one place to read all the best practice and useful information on migration to the cloud.
A Social, Mobile, and Cloudy Modern Web Application (David Pallmann) - First of a series, this nice post present a well done application that combines HTML5, mobility, social networking and cloud computing.
Microsoft Reinvents its Cloud Strategy (Martin Tantow) - Nice post comparing the new cloud positioning strategy o Microsoft with the majors players when looking for CRM
Protecting Windows Azure Web and Worker roles from malware (maartenba) - Not long time ago Microsoft release the Microsoft Endpoint Protection for Windows Azure Customer Technology Preview (EP for friends) and in this great post you will know how to install it, configure it and how to use it.
A Comprehensive Introduction to Cloud Computing - I did already mention is great introduction post in some Reading Notes, but at this time the author was rebuilding is blog and the article was removed. So if you didn't have the time to read it the first time, here is your chance.
ASP.NET MVC, Web API, Razor and Open Source (Scott Gu) - The post by The Scott Gu announcing the release of Asp.Net MVC as open source project and some features of the version 4.0.
Introduction to Ruby code optimization - Nice post that present few tools to help when you need optimization. Those tools are good specially if you don't know where is the bottle neck.
I wish I knew about string.Join a long time ago (Carlos Figueira) - Nice refactoring. As Carlos is saying looking into the code you write on year ago is good. Some mistake wear done, but at least we learn.
Miscellaneous
10 Good Reasons to Get a Mentor - Interesting thoughts. I'm sure a lot of people would gain a lot by having a mentor. Starting with me!
[…]shows a friendly face to customers and still provides the detailed technical information developers will need in his article Rich Custom Error Handling with ASP.NET. […]
The Hidden Risk of a Meltdown in the Cloud - Interesting post that explain why companies should think about moving to the cloud to see if they saw (and understand) all the pros and cons.
New Tools for Windows Identify Foundation and ACS (Wade Wegner) - Great show (Cloud cover Show) again this week, with Wake and David that present a lot of nice functionalities of the Windows Identity Foundation (WIF).
Windows Azure™ and X509 Certificates (Chris Clayton) - A very useful post from Chris that specify all steps you need to do (screenshots and code snippet) in order to setup your X509 certificates.
My Disappointments with Amazon DynamoDB - DynamoDB is a pretty young product, but still some of the limitations look disappointing. However I think that is this king of database binaries, images and big files shouldn't be in. They should be in storage and the url/path is in the db.
Leaving Microsoft (Wade Wegner) - Another big evangelist of Windows Azure is leaving Microsoft. Wade is someone to follow.
Using CSPack and CSRun With a Worker Role (Jason Haley) - Nice post where Jason try to fix a result discrepancy between using Visual Studio or CSPack-CSRun to create a Azure project. But the question remains...
Beware Fake Clouds - Good post that help to demystify what the cloud is computing and what is not be by hi-lighting the differences.
Why do I need two Instances in Windows Azure? - This is a really important fact to understand when planning/developing a project with Windows Azure. A clear answer for a good question.
The Microsoft Private Cloud whitepaper (Nikosan) – A reference to a PDF document that contains a lot a info about all the options you have if you planning to go with Private cloud.
Best practices for migration to the cloud - Nice post that contain all the link you need in one place to read all the best practice and useful information on migration to the cloud.
Can we pronounce “The Cloud” hype over yet? - Nice post that raise some objection that the cloud is for everything. Some people seem to still think this way, but its true cloud is not the answer to all situations.
Optimizing apps for cloud (Tim O'Brien) - Great post that explain few principles of cloud architecture to be able of building a more structured application.
Why So Many Azure Storage Transactions? - Nice advice! Good think that since last release, when you are busting your limits they just deactivate the web application instead of giving a big bill.
Windows Azure Security Best Practices - Part 2: What Azure Provides Out-of-the-Box (Bruce Kyle) - Amazing post that describes perfectly the architecture of Windows Azure and the security in it. It also explains what we should do to keep a good security level. This is the second post of the series a third one is already out... more to come.
HTML5 + Cloud = Personal Cloud (David Pallmann) - Nice post (the fourth of a series) explain the cloud is personal and why HTML5 could be a better tools to present this personal cloud.
Windows Azure PowerShell Cmdlets (v2.2.2) (Michael WashamMS) - Present the new features of the last release of Windows Azure PowerShell. A lot of great new functionalities, but before downloading it be aware of some breaking changes.
How to Download Windows Azure Blob Containers - We often found code sample to upload files to the cloud but here it is to download. This is well done demo to replicate the structure of an Azure Blob Container on premise.
What Size VM Should I Go With? - Point a article here this question is answered by 2 authors well presented in this article.
[…]questions Joel & Stephen attempt to answer in the article. […]
Book Review: Just for fun (Jan Van Ryswyck) - That look like a book that will easily find a place in my to read list.
Microsoft Private Cloud Part 1 - Nice first post of a series comparing Azure with private cloud. This one is more about being prepare to the real comparison and define what is private cloud.
Windows Azure Storage and Concurrent Access (Larry Franks) - Known a to read/write in Azure Storage is not enough when doing multi-instance. Learn how-to manage this situation in this post.
Exploring Cloud Architecture - Nice article that present different cloud architecture to follow your cost/efficiency strategies.
BizTalk in the Cloud, One Step Closer Part 1 (Jean-Paul Smit) - Great post (first part of series of two) that present the new interface of schemas and mapping in the new CTP release of Azure Service bus EAI and compare them to the BizTalk ones.
BizTalk in the Cloud, One Step Closer Part 2 (Jean-Paul Smit) - A really great post that continue to pass all the functionalities of the new (still in CTP) Azure Service Bus EAI and making the correlation with the BizTalk equivalence.
Programming
Mercurial vs Git: Why Mercurial? - Great posts series about source control. Because source control is so important, knowing why to pick git or mercurial is really important.
WebAPI and Ninject (Shawn Wildermuth) - Nice trick with Ninject...as the author said easy when you know how to.
Moving apps to the cloud - This great post help you to build a check list before, during and after moving to the cloud. Ask the good questions, found your spot in the cloud.
Part 1 Introduction and Architecture (Dave Crook) - A really nice post that demystify what are the part of the Azure architecture and what is the impact of each of them in a developer life.
Windows Azure Blob Upload Scenarios (Avkash Chauhan) - Think to know before coding application that will upload file into Azure blob storage. Different scenarios are possible with pros and cons for each of them.
Implementing MERGE command using SQL Azure Migration Wizard (Cihan Biyikoglu) - Quick post to introduce what should be Merge At command in an Azure Sql Federation database. Also this post refer to a lot more detail article on the how-to.
The Evolution of PaaS (davidchappellopinari) - Nice post that compare the features of the "usual" PaaS with some "new" version of this like Cloud Foundry.
Microsoft Private Cloud Part 1 - Nice first post of a series comparing Azure with private cloud. This one is more about being prepare to the real comparison and define what is private cloud.
Programming
Structurez votre code Ruby (Bruno Michel) - This nice post introduce the unused Struct. A simple but power class in Ruby.
Soyez unique, utilisez des Sets (Bruno Michel) - Wow I didn't know the Set class in Ruby. I got to edit one of my script immediately.
Asp.Net MVC 4 beta - Nice post that quickly present some of the main new features in the brand new ASP.Net MVC 4. Also video and slide reference.
Spending limits are a new feature we added to Windows Azure last month, and ensure that you never have to worry about accidentally going over the resources included in a free offer and being charged.
You can learn more about the spending limit feature here.
The ASP.NET MVC 4 Beta release works with VS 2010 and .NET 4.0, and is side-by-side compatible with prior releases of ASP.NET MVC
Bundling and Minification
Database Migrations – ASP.NET MVC 4 includes the new Entity Framework 4.3 release,
Web API
new support for building mobile web applications and mobile web sites,
Razor Enhancements – ASP.NET MVC 4 includes V2 of our Razor View engine.
Amazon S3 Price Reduction - A reaction to a post that was comparing price between cloud and on premise solution. The cloud could be even more attractive by taking those advices.
Using Data Transaction Commitment Models for Design (BuckWoody) - In this nice post the author present different ways to store data in Azure. Depending on the situation one type of architecture could be preferred.
Moving apps to the cloud - This great post help you to build a check list before, during and after moving to the cloud. Ask the good questions, found your spot in the cloud
Thinking LESS of this blog - This post present the open source project LESS that generate some css base on pre-compile instruction. It could run server or client side.
So You Want To Be a Developer (Part 1) - Most of the developer I know love games. I'm sure part of it already at one point thing of joining this to "passion".
Miscellaneous
Why we love our MVP’s (Paul Laberge) - Good post to learn more about our Canadian MVP and about the MVP programme.