AWS Lambda(C#)でS3へファイルをアップロードする

あらかじめNugetから「AWSSDK.S3」パッケージをインストールしておきます。

下記usingディレクティブを追記します。

using Amazon.S3;
using Amazon.S3.Model;

以下、Lambda関数本体のソースコードサンプルです。

public async Task<string> FunctionHandler(string input, ILambdaContext context)
{
    var client = new AmazonS3Client(Amazon.RegionEndpoint.APNortheast1);

    PutObjectRequest request = new PutObjectRequest()
    {
        BucketName = "bucket-name",
        Key = "foo.txt",
        ContentType = "text/plain",
        ContentBody = input
    };

    try
    {
        var response = await client.PutObjectAsync(request);
        return "OK";
    }
    catch (Exception e)
    {
        return e.ToString();
    }
}

S3バケット「bucket-name」に「foo.txt」という名前のテキストファイルをアップロードします。Lambda関数の呼び出し元から渡された文字列をファイルの内容に指定しています。

早速パブリッシュして動作確認してみます。

Test FunctionウィンドウのSample Input欄に適当な文字列を入力し、「Invoke」ボタンをクリックします。

うまくいくと、Reponseに”OK”という文字列が返ってきます。

S3に「foo.txt」がアップロードがされています。

ファイルの内容も正しく入っていることが確認できました。

以上です。