0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

boto3 + .env で安全に S3 にファイルをアップロードするまでのメモ

Posted at

はじめに

Python を使って AWS S3 にファイルをアップロードしてみたいと思い、
boto3 ライブラリと .env ファイルを活用して安全にアクセスキーを管理しながら、
最小構成でアップロードスクリプトを作成してみました。

🎯 やりたいこと
• Python スクリプトから S3 にファイルをアップロード
• .env ファイルでキー管理を行い、セキュリティを確保
• S3 バケットに公開アクセスを許可し、アップロード後の URL を取得

🛠️ 使用技術
• macOS(Apple M1)
• Python 3.10
• boto3
• python-dotenv
• AWS IAMユーザー(アクセスキー管理用)
• S3(公開バケット)

📦 成果物の構成
aws-s3-practice/
├── .env
├── upload_to_s3.py
└── cat.jpg(アップロード対象ファイル)

✅ 実装コード

upload_to_s3.py
import os
import boto3
from dotenv import load_dotenv

# .envファイルを読み込む
load_dotenv()

# 環境変数からAWSキー情報を取得
ACCESS_KEY = os.getenv("AWS_ACCESS_KEY_ID")
SECRET_KEY = os.getenv("AWS_SECRET_ACCESS_KEY")
REGION = os.getenv("AWS_REGION")
BUCKET = os.getenv("S3_BUCKET_NAME")

# boto3クライアント作成
s3 = boto3.client(
    "s3",
    aws_access_key_id=ACCESS_KEY,
    aws_secret_access_key=SECRET_KEY,
    region_name=REGION
)

# アップロード関数
def upload_file(file_path, s3_key):
    try:
        s3.upload_file(
            Filename=file_path,
            Bucket=BUCKET,
            Key=s3_key
        )
        print("✅ アップロード成功!")
        print(f"🌐 URL: https://{BUCKET}.s3.amazonaws.com/{s3_key}")
    except Exception as e:
        print("❌ アップロード失敗:", e)

# 実行:ローカルのcat.jpgをアップロード
upload_file("cat.jpg", "cat.jpg")

🧠 注意点

問題 原因 解決策
No such file or directory 対象ファイルが存在しない cat.jpg を同じフォルダに置く
セキュリティリスク Root Access Key を使っていた IAM ユーザーを作成してアクセスキーを再発行

🔐 セキュリティのポイント
• Root Key は絶対使わない
• .env を .gitignore に入れる
• 公開アクセスは「バケットポリシー」で設定する(ACL不要)

✍️ まとめ

AWS S3 の操作は GUI で簡単にできる一方で、コードから安全に操作しようとすると、意外と細かい設定や構成理解が必要になります。

boto3 を使うことで、クラウド操作をスクリプト化・自動化できるようになるのはとても大きなメリットだと感じました。

🔗 参考リンク

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?