AWS LambdaからS3にファイルを読み込むサンプル
環境
AWS S3
AWS Lambda
Python 3.11
操作方法
1.Lambdaで関数を作成する
1).検索入力欄で「Lambda」と入力し、表示されたサービス「Lambda」をクリックします。
2).左の関数のリンクをクリックし、画面右の「関数の作成」ボタンをクリックします。
3).関数の作成では「一から作成」を選択します。
4).関数名は、read-test1としランタイムはPython 3.11、アーキテクチャはx86_64を選択しました。「関数の作成」をクリックすると関数が作成されます。
2.Lambdaの関数にs3フルアクセスのポリシーをアタッチする
1).関数が表示されている画面に「設定」タブをクリックします。
「アクセス権限」>実行ロールのロール名(例read-test1-role-wrv7c15h)のリンクをクリックします。
2).「許可」>「許可を追加」>「ポリシーをアタッチ」をクリックします。
3).S3を入力し検索し、AmazonS3FullAccessにチェックを入れ、右下に「許可を追加」をクリックするとs3フルアクセスのポリシーが追加されます。
1).関数が表示されている画面に「設定」タブをクリックします。
「アクセス権限」>実行ロールのロール名(例read-test1-role-wrv7c15h)のリンクをクリックします。
2).「許可」>「許可を追加」>「ポリシーをアタッチ」をクリックします。
3).S3を入力し検索し、AmazonS3FullAccessにチェックを入れ、右下に「許可を追加」をクリックするとs3フルアクセスのポリシーが追加されます。
1).関数が表示されている画面に「設定」タブをクリックします。 「アクセス権限」>実行ロールのロール名(例read-test1-role-wrv7c15h)のリンクをクリックします。 2).「許可」>「許可を追加」>「ポリシーをアタッチ」をクリックします。 3).S3を入力し検索し、AmazonS3FullAccessにチェックを入れ、右下に「許可を追加」をクリックするとs3フルアクセスのポリシーが追加されます。
AmazonS3FullAccessのポリシー
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:*",
"s3-object-lambda:*"
],
"Resource": "*"
}
]
}
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:*",
"s3-object-lambda:*"
],
"Resource": "*"
}
]
}
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:*", "s3-object-lambda:*" ], "Resource": "*" } ] }
2.S3にあるファイルを読み込む
関数が表示されている画面で「コード」をクリックしてコードを表示します。
1).lambda_function.pyに以下のコードを記載します。
import boto3
s3 = boto3.client('s3')
def lambda_handler(event, context):
bucket = 'test-s3-data-2023' # バケット名
key = 'arktgame.txt' #ファイル名
obj = s3.get_object(Bucket=bucket, Key=key)
text = obj['Body'].read()
return text
import boto3
s3 = boto3.client('s3')
def lambda_handler(event, context):
bucket = 'test-s3-data-2023' # バケット名
key = 'arktgame.txt' #ファイル名
obj = s3.get_object(Bucket=bucket, Key=key)
text = obj['Body'].read()
return text
import boto3 s3 = boto3.client('s3') def lambda_handler(event, context): bucket = 'test-s3-data-2023' # バケット名 key = 'arktgame.txt' #ファイル名 obj = s3.get_object(Bucket=bucket, Key=key) text = obj['Body'].read() return text
2).「Deploy」をクリックしてから「Test」をクリックすると実行します。
3).Execution ResultタブのResponseに文字列が表示されます。