Загрузка файлов в корзину s3 с использованием python дает доступ запрещен - PullRequest
1 голос
/ 19 июня 2020

Я создал Python скрипт, который должен загрузить файл из моего локального ec2 в корзину s3

import boto3

s3 = boto3.resource('s3')
data = open('backupFile.txt', 'rb')
s3.Bucket('mlsd').put_object(Key='backupFile.txt', Body=data)

Я перешел на AWS данные учетной записи и получил учетные данные.

Я выполнил aws configure, чтобы установить учетные данные на моем EC2.

Hear - это вывод учетных данных с использованием aws configure list:

Credentials

Я пошел к .aws/credentials и вставил access_key_id, secret_access_key и token

Я убедился, что срок действия токена не истек.

Когда я запустив скрипт, я получил следующий результат:

Error

Не уверен, в чем проблема.

1 Ответ

1 голос
/ 19 июня 2020

Boto3 обнаруживает ваши учетные данные в возможных местах, как описано здесь , поэтому он должен найти ваши access_key_id и secret_access_key

Убедитесь, что пользователь, чей access_key_id вы используете, имеет доступ к корзине S3.

Я пробовал этот пример кода, и он работает:

import logging
import boto3
from botocore.exceptions import ClientError

def upload_file(file_name, bucket, object_name=None):
   """Upload a file to an S3 bucket

   :param file_name: File to upload
   :param bucket: Bucket to upload to
   :param object_name: S3 object name. If not specified then file_name is used
   :return: True if file was uploaded, else False
   """

   # If S3 object_name was not specified, use file_name
   if object_name is None:
       object_name = file_name

   # Upload the file
   s3_client = boto3.client('s3')
   try:
       response = s3_client.upload_file(file_name, bucket, object_name)
   except ClientError as e:
       logging.error(e)
       return False
   return True
...