У меня есть инструмент, который я пишу, который предназначен для доступа к S3 либо с неявными учетными данными роли IAM (при работе в S3), либо с явными учетными данными в среде или файлах конфигурации (при работе вне S3).
Поведение AWS SDK по умолчанию (я использую версию Go, но я предполагаю, что другие SDK похожи) предпочитает учетные данные среды, затем конфигурационные учетные данные, затем возвращается к учетным данным роли IAM и завершается ошибкой только в том случае, если учетные данные роли IAM не могут быть получены. К сожалению, для этого требуется сетевой вызов, который может занять до 20 секунд.
Я бы хотел быстро определить, работаю ли я в EC2, поэтому я знаю, стоит ли вообще делать этот вызов. К сожалению, API-интерфейсы AWS, которые выглядят так, как будто они должны предоставлять эту информацию (например, EC2Metadata.Available ), выполняют тот же сетевой вызов и страдают от той же проблемы времени ожидания.
На данный момент единственное, о чем я могу подумать, это раскошелиться и проверить, включает ли uname -a
"amzn"
.
Это кажется не идеальным.
Есть ли хороший способ проверить среду EC2, не совершая никаких сетевых вызовов?