あまぶろぐ

インフラと趣味のゆるいブログ

Boto3でS3に読み書きする

 

クラウド開発入門」を参考にして、Boto3を使ってS3に対していろいろな操作をした。そこで「はまったこと」「学んだこと」を備忘で記載。

はまったこと

      1. Jupyter Notebookを使った操作
        S3上にファイルを作成する、読み込むなど複数の作業をしようとすると権限エラーが出てしまった。下記のサイトを参考に解決。スレッドセーフではないとのこと(よく分かってません)。

        PythonのAWSライブラリBoto3のSessionはスレッドセーフではないよという話 | DevelopersIO

      2. S3上のオブジェクト名を表示する
        前回に引き続き、JSONに適切に対応できなかった。「client.list_objects」を利用して、JSONで結果を出すことはすぐに成功した。しかし、2つあるオブジェクト名(Key)のみ表示したく、試行錯誤した。最終的に以下の形で表示できた。ググった感じだと、for などを使ってみればうまくいきそうだなと思ったが今回は諦めた。
        objects = response['Contents']
        print(objects[0]['Key'])
        print(objects[1]['Key'])

学んだこと

      1. session を利用して、AWSシークレットキーの設定ができる
      2. S3のオブジェクトを一覧で一括表示するには工夫が必要(1000over)