【AWS】LambdaでS3のファイルを読み込んでみた【S3】
こんにちは!nomurabbitです。
この記事ではLambdaでS3から
ファイルを読み込む方法を紹介します。
ファイルの読み書きができると
プログラミングの幅がぐっと広がりますね!
テンプレートの準備
まず、Lambdaのテンプレートを準備します。
.NET Core3.1のテンプレートは、
この記事やこの記事を参考にしてください。
.NET toolsのコマンドはこんな感じです。
dotnet new lambda.EmptyFunction --name 20211113_my_glb_invokesample
ソースコード
書き込みと同様、AWSSDK.S3が必要なので、
nugetでパッケージを追加します。
今回もAmazonS3Clientを使います。
ソースコードのポイントは下記の通りです。
public List<GlbResponseBody> GetAction(GlbRequestBody glbRequestBody) { try { var s3Client = new AmazonS3Client(RegionEndpoint.APNortheast1); var request = new Amazon.S3.Model.GetObjectRequest { BucketName = GlbUtil.S3_NOMURABBIT_BLOG_XXX, Key = glbRequestBody.Message }; List<GlbResponseBody> glbResponseBodyList = new List<GlbResponseBody>(); GlbResponseBody glbResponseBody = new GlbResponseBody(); using(Amazon.S3.Model.GetObjectResponse response = s3Client.GetObjectAsync(request).Result) using(var stream = response.ResponseStream) { Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); StreamReader streamReader = new StreamReader(stream, Encoding.GetEncoding("utf-8")); string line = ""; while((line = streamReader.ReadLine()) != null) { glbResponseBody = new GlbResponseBody(); glbResponseBody.Message = line; glbResponseBodyList.Add(glbResponseBody); } } return glbResponseBodyList; } catch (System.Exception e) { throw e; } }
AmazonS3ClientのGetObjectAsyncメソッドの引数が
GetObjectRequestのインスタンスになっています。
GitHubにソースコードを載せていますので、
よろしければ参考にしてください。
S3のキーを使ってファイルを読み込むプログラムです。
以上でLambdaでS3から
ファイルを読み込むことができると思います。
よかったら試してみてください。
では!