Если вы не хотите использовать секретный ключ / ключ доступа, вам следует использовать роли и политики , затем. Вот предложение:
Определите роль (например, RoleWithAccess
) и убедитесь, что ваш пользователь (определенный в ваших учетных данных) может взять на себя эту роль
Установить policy для RoleWithAccess
, предоставляя доступ для чтения / записи к вашим корзинам
Если вы выполняете его на локальном компьютере, выполните необходимые команды (AWS CLI), чтобы создать профиль , который делаетвы предполагаете, RoleWithAccess
(например, ProfileWithAccess
)
Выполните ваш сценарий, используя сеанс , передав в качестве аргумента этот профиль , что означает, что вам нужно заменить:
s3 = boto3.resource('s3')
с
session = boto3.session.Session(profile_name='ProfileWithAccess')
s3 = session.resource('s3')
Преимуществом этого подхода является то, что если вы запускаете его внутри экземпляра EC2, вы можете связать свой экземпляр с определенной ролью при его создании (напр. RoleWithAccess
). В этом случае вы можете полностью игнорировать сеанс, профиль, весь AWS CLI hocus pocus и просто запустить s3 = boto3.resource('s3')
.
Вы также можете использовать AWS Lambda, установив роль и политика с разрешением на чтение / запись в ваше ведро.