У нас была эта проблема довольно много. Но ваш случай проще, так как вы используете DefaultCredentialProviderChain
. Цепочка ищет учетные данные в среде, а затем IAM (в таком порядке, я думаю).
Мое предложение было бы забыть о насмешливом IAM, вместо этого высмеивать службы. Задайте несколько фиктивных учетных данных в среде, чтобы цепочка поставщиков использовала их вместо попыток использовать IAM.
Для S3: https://github.com/adobe/S3Mock
Для SQS: https://github.com/MeteoGroup/sqsmock
Теперь, если вы абсолютно решительно настроены издеваться над IAM, проверьте это: https://github.com/NYTimes/mock-ec2-metadata
Имейте в виду, установка для этого не стоит того, что вы получаете из нее. YMMV
Вы также можете быть заинтересованы в: https://github.com/localstack/localstack
Но я этим не пользовался (пока).
РЕДАКТИРОВАТЬ: Почему трудно издеваться над IAM? Поскольку учетные данные iam поступают из конечной точки метаданных, которая равна http://169.254.168.254
. Таким образом, чтобы смоделировать IAM, необходимо смоделировать конечную точку метаданных. И это обычно включает в себя взлом iptables
в некотором роде.