Update: NuGet can also be used if you are running Mono 3.2+, see this post
1. Install mono and associated tools (on Ubuntu/Debian), mozroots downloads root certificates to enable SSL via mono:
sudo apt-get update
sudo apt-get install mono-complete git
mozroots --import --sync
2. Create a working directory and change to it:
mkdir mono-aws
mkdir mono-aws/lib
cd mono-aws
3. Retrieve the SDK source:
git clone https://github.com/aws/aws-sdk-net.git
4. Fix some file names (case is important to real operating systems). Update: this should be fixed in the next release of the SDK in which case it can be skipped:
cd aws-sdk-net/AWSSDK_DotNet35/
mv Amazon.S3/Model/PUtACLResponse.cs Amazon.S3/Model/PutACLResponse.cs
mv Amazon.S3/IAmazonS3.extensions.cs Amazon.S3/IAmazonS3.Extensions.cs
5. Compile core library, the command line parameters are to default the compile to use .NET 3.5 and not warn on anything other than compile errors (still in aws-sdk-net/AWSSDK_DotNet35):
xbuild /p:TargetFrameworkProfile="" /p:WarningLevel=0
6. Compile extensions (still in aws-sdk-net/AWSSDK_DotNet35):
cd ../AWS.Extensions/
xbuild /p:TargetFrameworkProfile="" /p:WarningLevel=0
7. Install libraries (from aws-sdk-net/AWS.Extentions):
cd ../..
cp aws-sdk-net/AWS.Extensions/SessionProvider/bin/Debug\ v3.5/AWS.SessionProvider.dll lib
cp aws-sdk-net/AWS.Extensions/TraceListener/bin/Debug\ v3.5/AWS.TraceListener.dll lib
cp aws-sdk-net/AWSSDK_DotNet35/bin/Debug/AWSSDK.dll lib
8. Create a command line program for example in s3.cs:
using System;
using Amazon.S3;
using Amazon.S3.Model;
class Upload
{
public static void Main(string[] args)
{
// Create a client
AmazonS3Client client = new AmazonS3Client(Amazon.RegionEndpoint.USWest2);
// Create a PutObject request
PutObjectRequest request = new PutObjectRequest
{
BucketName = "SampleBucket",
Key = "Item1",
ContentBody = "This is sample content..."
};
// Put object
PutObjectResponse response = client.PutObject(request);
}
}
9. Compile your program:
mcs s3.cs -r:./lib/AWSSDK.dll -r:./lib/AWS.TraceListener.dll -r:./lib/AWS.SessionProvider.dll
10. Set the Mono path
export MONO_PATH=`pwd`/lib:.
11. Create an application configuration (must be named to match the compiled program) for example in s3.exe.config:
<?xml version="1.0"?>
<configuration>
<appSettings>
<add key="AWSAccessKey" value="AKXXXXXXXXXXXXXX"/>
<add key="AWSSecretKey" value="XXXXXXXXXXXXXXXXXXXXXXXX"/>
</appSettings>
</configuration>
12. Run your program:
mono s3.exe
Of course there is also an easier approach that does not require the SDK to be compiled, you can just copy the DLLs from a Windows machine that has the SDK installed (typically into C:\Program Files (x86)\AWS SDK for .NET\bin\Net35). This allows you to skip steps 3 - 7.