#amazon-web-services #go
#amazon-веб-сервисы #Вперед
Вопрос:
Как я могу заставить GO SDK извлекать ключи доступа AWS
из Instance Metadata Service
( 169.254.169.254
), предоставленные AWS
.
Я проверил официальную AWS SDK
go
документацию, и, похоже, есть только способы получения ключей доступа из переменных среды, но не для восстановления учетных данных IMS
.
Как это делается в go?
Комментарии:
1. Я взял на себя смелость переписать ваш вопрос, чтобы в нем не запрашивались предложения по библиотеке. такого рода вопросы вкратце закрываются. LMK, если вы считаете, что моя правка была неточным описанием вашего вопроса
2. Нет, так будет лучше, спасибо
Ответ №1:
Я проверил официальный AWS SDK для документации go, и, похоже, есть только способы получения ключей доступа из переменных среды, но нет ретривера учетных данных из IMS.
Вы просто пропустили это. Go SDK поддерживает службу метаданных экземпляра, а также любого другого распространенного поставщика учетных данных.
Из https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html:
Если вы настроили свой экземпляр на использование ролей IAM, SDK автоматически использует эти учетные данные для вашего приложения.
Вам не нужно ничего делать, чтобы настроить это. Это должно просто работать. Если у вас возникли проблемы, убедитесь, что вы не настраиваете вручную какой-либо другой источник учетных данных.
Обычно вам не нужно делать ничего, кроме чего-то вроде:
sess := session.Must(
session.NewSessionWithOptions(session.Options{
SharedConfigState: session.SharedConfigEnable,
}),
)
И с конфигурацией CLI, службой метаданных или переменными среды или без нее, он должен работать везде, где вы его запускаете.
Комментарии:
1. каков был бы правильный способ получить
credentials
выход из этого объекта сеанса?2. какую проблему вы пытаетесь решить, из-за чего вам нужно получить учетные данные из объекта сеанса?
3. Я пытаюсь получить учетные данные, подобные
AccessKeyID
илиSecretKey
от поставщика метаданных экземпляра.4. Если вы хотите получить учетные данные напрямую, нет причин использовать aws sdk. В GO используйте
net/http
tohttp.Get("https://169.254.169.254/latest/meta-data/iam/security-credentials")
, а затемhttp.Get
результат, который будет зависеть от роли профиля экземпляра. И наоборот, если вы используете aws sdk, нет причин трогать учетные данные, и ничего хорошего из этого не выйдет.5. Я хочу создать
v4.Signer
и мне нужно передать объект учетныхv4.NewCredentials(cred??)
данных. Как мне получить этотcreds
объект?