0
0

[Python]boto3でAWSを操作する(S3, DynamoDB, Lambda)

Last updated at Posted at 2024-04-22

はじめに

副業でPythonを使用してAWSを操作する方法を学んだので、書いていきます。

boto3をインストール

Pythonを使用してAWSを操作するには「boto3」ライブラリをインストールして使用します。

まずは、以下のコマンドでboto3をインストールします。

pip install boto3

次にファイルの先頭でboto3をインポートします。

import boto3

これでboto3を使用する準備は完了です。

サンプルコード

今回は、S3、DynamoDB、Lambda(関数を呼び出す)についてのサンプルコードを書いていきます。

S3

S3のオブジェクトを操作するサンプルコードを書きます。
以下は、あるバケットのオブジェクトの一覧を取得するコードです。

client = boto3.client('s3')

# バケット名を指定
bucket_name = 'your-bucket-name'

# バケット内のオブジェクト一覧を取得
response = s3.list_objects_v2(Bucket=bucket_name)
objects = response.get('Contents', [])

for obj in objects:
    print(f"- {obj['Key']}")
else:
    print(f"{bucket_name} バケットにオブジェクトはありません。")

このコードは、「list_objects_v2」で指定したバケットの辞書から「Contents」というキーを指定して、その値を取得しています。

DynamoDB

S3を操作するサンプルコードは以下になります。

client = boto3.client('dynamodb')


# 更新対象のテーブル名
table_name = 'sample_table'

# テーブルの取得
table = dynamodb.Table(table_name)

# 更新するアイテムの主キー
primary_key = {
    'user_id': 'value'
}

# 更新するデータ
update_expression = 'SET attribute1 = :val1, attribute2 = :val2'
expression_attribute_values = {
    ':val1': 'new_value1',
    ':val2': 'new_value2'
}

# 更新処理の実行
response = table.update_item(
    Key=primary_key,
    UpdateExpression=update_expression,
    ExpressionAttributeValues=expression_attribute_values,
    ReturnValues='UPDATED_NEW'  # 更新後の値を返す
)

# 更新後のアイテムを出力
print("Updated Item:", response)

こちらのコードは、「sample_table」という名前のテーブルに対して、「user_id」をキーにして、そのキーに一致したデータに対して、「expression_attribute_values」で指定した値を挿入しているコードです。
ほかにも、テーブルの作成、データの新規登録、削除などの様々な機能があります。

Lambdaを呼び出す

Lambdaを操作するサンプルコードは以下になります。
以下は、「my-lambda-function」という名前のLambda関数を呼び出しているコードになります。

client = boto3.client('lambda')

# Lambda関数名を指定
function_name = 'my-lambda-function'

# ペイロード(引数)を指定
payload = {
    'key1': 'value1',
    'key2': 'value2'
}

# Lambda関数を呼び出し
response = lambda_client.invoke(
    FunctionName=function_name,
    InvocationType='Event',  # 非同期呼び出し
    Payload=str(payload)  # ペイロードを文字列に変換
)
result = response.get('Payload').read().decode('utf-8')
print(f"Lambda関数の実行結果: {result}")

このコードでは、「FunctionName」で指定した関数名と一致するLambda関数を呼び出し、「InvocationType」で同期か非同期化の指定を行い、「Payload」で関数に引数を渡しています。

まとめ

今回はS3、DynamoDB、Lambdaの3つの操作について書きましたが、boto3はたくさんのAWSの機能を呼び出すことができます。
以下が、boto3を使用して呼び出せるAWSの機能の一覧です。

最後に

他にも色々な記事を書いているので、よければ読んでいってください!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0