AWS Lambda(C#)でS3からファイルを取得する

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

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

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

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

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

    GetObjectRequest request = new GetObjectRequest()
    {
        BucketName = "bucket-name",
        Key = "foo.txt",
    };

    try
    {
        var response = await client.GetObjectAsync(request);

        var reader = new System.IO.StreamReader(response.ResponseStream);
        
        return await reader.ReadToEndAsync();
    }
    catch (Exception e)
    {
        return e.ToString();
    }
}

S3バケット「bucket-name」から「foo.txt」という名前のテキストファイルをダウンロードします。Lambda関数の戻り値にファイルの内容を指定しています。ファイルの内容は以下です。

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

Test FunctionウィンドウのSample Input欄にある「Invoke」ボタンをクリックします。

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

以上です。