получить учетные данные aws из служб метаданных ec2 в Go

#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 to http.Get("https://169.254.169.254/latest/meta-data/iam/security-credentials") , а затем http.Get результат, который будет зависеть от роли профиля экземпляра. И наоборот, если вы используете aws sdk, нет причин трогать учетные данные, и ничего хорошего из этого не выйдет.

5. Я хочу создать v4.Signer и мне нужно передать объект учетных v4.NewCredentials(cred??) данных. Как мне получить этот creds объект?