Migrating to Version 3 of the Amazon SDK for .NET
This topic describes changes in version 3 of the Amazon SDK for .NET and how to migrate your code to this version of the SDK.
About the Amazon SDK for .NET Versions
The Amazon SDK for .NET, originally released in November 2009, was designed for .NET Framework 2.0. Since that release, .NET has improved with .NET Framework 4.0 and .NET Framework 4.5, and added new target platforms: WinRT and Windows Phone.
Amazon SDK for .NET version 2 was updated to take advantage of the new features of the .NET platform and to target WinRT and Windows Phone.
Amazon SDK for .NET version 3 has been updated to make the assemblies modular.
Architecture Redesign for the SDK
The entire version 3 of the Amazon SDK for .NET is redesigned to be modular. Each service is now implemented in its own assembly, instead of in one global assembly. You no longer have to add the entire Amazon SDK for .NET to your application. You can now add assemblies only for the Amazon services your application uses.
Breaking Changes
The following sections describe changes to version 3 of the Amazon SDK for .NET.
AWSClientFactory Removed
The Amazon.AWSClientFactory
class was removed. Now, to create a service client,
use the constructor of the service client. For example, to create an AmazonEC2Client
:
var ec2Client = new Amazon.EC2.AmazonEC2Client();
Amazon.Runtime.AssumeRoleAWSCredentials Removed
The Amazon.Runtime.AssumeRoleAWSCredentials
class was removed because it was in a core
namespace but had a dependency on the Amazon Security Token Service, and because it has been obsolete in the SDK for some
time. Use the Amazon.SecurityToken.AssumeRoleAWSCredentials
class
instead.
SetACL Method Removed from S3Link
The S3Link
class is part of the Amazon.DynamoDBv2
package and is used for
storing objects in Amazon S3 that are references in a DynamoDB item. This is a useful feature, but we didn’t
want to create a compile dependency on the Amazon.S3
package for DynamoDB. Consequently,
we simplified the exposed Amazon.S3
methods from the S3Link
class,
replacing the SetACL
method with the MakeS3ObjectPublic
method. For
more control over the access control list (ACL) on the object, use the Amazon.S3
package
directly.
Removal of Obsolete Result Classes
For most services in the Amazon SDK for .NET, operations return a response object that contains metadata for the operation, such as the request ID and a result object. Having a separate response and result class was redundant and created extra typing for developers. In version 2 of the Amazon SDK for .NET, we put all the information in the result class into the response class. We also marked the result classes obsolete to discourage their use. In version 3 of the Amazon SDK for .NET, we removed these obsolete result classes to help reduce the SDK’s size.
Amazon Config Section Changes
It is possible to do advanced configuration of the Amazon SDK for .NET through the App.config
or
Web.config
file. You do this through an <aws>
config section like the following,
which references the SDK assembly name.
<configuration> <configSections> <section name="aws" type="Amazon.AWSSection, AWSSDK"/> </configSections> <aws region="us-west-2"> <logging logTo="Log4Net"/> </aws> </configuration>
In version 3 of the Amazon SDK for .NET, the AWSSDK
assembly no longer exists. We put the common
code into the AWSSDK.Core
assembly. As a result, you will need to change the references
to the AWSSDK
assembly in your App.config
or Web.config
file to the
AWSSDK.Core
assembly, as follows.
<configuration> <configSections> <section name="aws" type="Amazon.AWSSection, AWSSDK.Core"/> </configSections> <aws region="us-west-2"> <logging logTo="Log4Net"/> </aws> </configuration>
You can also manipulate the config settings with the Amazon.AWSConfigs
class. In
version 3 of the Amazon SDK for .NET, we moved the config settings for DynamoDB from
the Amazon.AWSConfigs
class to the Amazon.AWSConfigsDynamoDB
class.