Если все, что вам нужно, это загрузить некоторые файлы с S3, переназначенные URL-адреса могут быть более простым и безопасным вариантом. AWS позволяет создавать URL-адреса для любого действия API AWS, которое можно использовать только в течение определенного периода времени. Вы можете сгенерировать эти URL-адреса к указанным вами c файлам, отправить их на ваш сервер и заставить сервер использовать их для загрузки файлов.
Например:
aws s3 presign s3://awsexamplebucket/test2.txt --expires-in 604800
Все различные фреймворки, такие как boto3 и aws -sdk, также поддерживают создание URL-адресов.
Другой вариант - создание временных учетных данных . AWS позволяет создавать учетные данные только на определенный период времени. Это также позволяет вам ограничить их область действия, поэтому вы можете попросить, чтобы они разрешали загрузку только из указанного c контейнера, например. Используя STS, вы получите новый набор ключей доступа и токена сеанса, отправите их на свой сервер и разрешите серверу использовать их для выполнения своих задач.
Если вы хотите, чтобы токен имел именно те же учетные данные, что и у вызывающей роли, используйте:
aws sts get-session-token
В противном случае вам нужно будет создать роль с соответствующими разрешениями и использовать:
aws sts assume-role --role-arn arn:aws:iam::123456789012:role/xaccounts3access --role-session-name s3-access-example
Как и в случае с предварительно назначенными URL-адресами, эти API-интерфейсы доступны в каждом SDK, а не только в командной строке.