AWS LambdaからS3にファイルを書き込む/読み込む/読み込む

AWSのLambdaからS3にファイルを書き込む/読み込むサンプルです。

目次

サンプル Lambdaからs3にファイルを書き込む/読み込む
  Lambdaで関数を作成する
Lambdaの関数にs3フルアクセスのポリシーをアタッチする
ファイル書き込みのコードを記入して実行する
S3にあるファイルを読み込む

LambdaからS3にファイルを書き込む/読み込む

  • Lambdaの関数を実行してS3にテキストファイルを作成し文字列の書き込みと読み込みを行います。

 

Lambdaで関数を作成する

1.検索入力欄で「Lambda」と入力し、表示された「Lambda」をクリックします。

2.左の関数のリンクをクリックし、画面右の「関数の作成」ボタンをクリックします。

3.関数の作成では「一から作成」を選択します。

 

4.関数名は、write-text1としランタイムはPython 3.9、アーキテクチャはx86_64を選択しました。「関数の作成」をクリックすると関数が作成されます。

 

Lambdaの関数にs3フルアクセスのポリシーをアタッチする

1.関数が作成された直後の画面です。(個別の関数が表示されている画面です)
「設定」>「アクセス権限」>実行ロールのロール名のリンクをクリックします。

 

2.「許可」>「許可を追加」>「ポリシーをアタッチ」をクリックします。

 

3.S3で検索し、AmazonS3FullAccessにチェックを入れ、「許可を追加」をクリックするとs3フルアクセスのポリシーが追加されます。

 

(参考)AmazonS3FullAccess

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:*",
                "s3-object-lambda:*"
            ],
            "Resource": "*"
        }
    ]
}

 

ファイル書き込みのコードを記入して実行する

個別の関数が表示されている画面で「コード」をクリックしてコードを表示します。

1.lambda_function.pyにコードを記載します。

import boto3

s3 = boto3.resource('s3')

def lambda_handler(event, context):
    
    bucket = 'test-s3-data-2022' # バケット名
    key = 'testData1.txt'
    contents = 'hello world 1122'
    
    obj = s3.Object(bucket,key)
    obj.put(Body=contents)
    return

1行目のboto3はAWSのライブラリです。
3行目は、boto3.resourceにしています。
7行目は、バケットです。作成済みの状態です。
8行目は、ファイル名です。存在しない場合作成されます。

この処理を繰り返すとファイルは同名ですがエラーにならず上書きされます。

 

2.「Deploy」をクリックしてから「Test」をクリックすると実行されます。

 

3.S3を見ると指定したバケットの中にファイルが作成されています。
ファイルをダウンロードして中を見ると指定した文字列があります。

バケット

 

テキストファイル

 

 

S3にあるファイルを読み込む

1.上記「Lambdaで関数を作成する」を元にLambdaで関数を作成します。
関数名はread-text1としランタイムはPython 3.9、アーキテクチャはx86_64を選択しました。

 

2.上記「Lambdaの関数にs3フルアクセスのポリシーをアタッチする」を元にs3のポリシーを追加します。

 

3.lambda_function.pyにコードを記載します。

import boto3

s3 = boto3.client('s3')

def lambda_handler(event, context):

    bucket = 'test-s3-data-2022' # バケット名
    key = 'testData1.txt'
    
    obj = s3.get_object(Bucket=bucket, Key=key)
    text = obj['Body'].read()
    return text

1行目のboto3はAWSのライブラリです。
3行目は、boto3.clientにしています。
7行目は、バケットです。
8行目は、ファイル名です。

 

4.「Deploy」をクリックしてから「Test」をクリックすると実行します。
Execution ResultタブのResponseに文字列が表示されます。

関連の記事

AWS IAMユーザを作成するサンプル

△上に戻る