2017-02-04 12 views
1

Мотивация использования роли пользователя AWS IAM заключается в том, чтобы AWS автоматически обрабатывала ключи/учетные данные AWS для каждого служебного вызова. Этот подход используется за Apache Camel, который затем использует учетные данные для безопасной передачи данных, т. Е. Не сохраняет учетные данные в исходном коде.API-интерфейсы API AWS S3 с использованием учетных данных пользователя AWS IAM:

Проблема, которую я нашел, - это учетные данные, которые были сделаны в инструменте IAM, только в aws cli.

Например, я запускаю это успешно с автоматически сгенерированным учетными данными из IAM (установив их в пределах моего переменного окружения):

aws s3 cp test.txt s3://x/test.txt 

Однако, когда я пытаюсь имитировать ту же операцию (тот же учетные данные) в пределах АНИ вызов, я даюсь это сообщение об ошибке:

The AWS Access Key Id you provided does not exist in our records. 
(Service: Amazon S3; Status Code: 403; Error Code: InvalidAccessKeyId;   
Request ID: 07A4FCDCA2E82F9E) 

Кроме того, используя свои учетные данные безопасности учетной записи AWS (т.е. делает идентификатор ключа безопасности и ключ), я могу получить вышеупомянутый API работает. Таким образом, API не является проблемой (учитывая, что я тестировал 2 набора диатонических учетных данных).

Наконец, моя роль пользователя AWS IAM настроена на полный доступ к ведрам S3, и сам ведро S3 настроено для этого. Здесь я начал теряться на потенциальном пути.

Зная все это, я провел некоторое исследование и нашел людей с аналогичными проблемами (1) (2). Каждый источник представляет разные идеи для решения проблемы, но ни один из них не применим для моего использования с Apache Camel.

Для познания моего использования Apache Camel, мой пример кода выглядит следующим образом:

String awsS3Connection = "aws-s3://x" + "?accessKey=" + accessId + 
          "&secretKey=" + accessKey; 

    from(awsS3Connection) 
      .to(importProcessingEndpoint); 

ответ

1

Временные учетные данные не имеют значения для - и непризнанный - службы API, если они не используются в сочетании с их сопутствующий токен сеанса/безопасности.

Когда Подписанный запрос подготавливается ...

Вы добавляете маркер сеанса в заголовке HTTP или параметр строки запроса с именем X-Amz-Security-Token. Вы добавляете токен сеанса в заголовок HTTP или параметр строки запроса, но не оба.

http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html#RequestWithSTS

Однако из Camel docs, это не очевидно, как передать маркер, или они даже реализовали поддержку для этого.

+0

Я иду к тому же выводу, что вы сделали о поддержке Верблюда. Я увижу, есть ли какая-либо реализация или отсутствие правил для передачи пользовательских учетных данных в интерфейсе верблюда. Любая дополнительная информация, которую я обнаруживаю, будет размещена как отдельный ответ и комментарий по вашему ответу! –

+0

Кажется, что последний aws-sdk не совместим с верблюдом, и поэтому поиск учетных данных работает, но клиент не работает с Camel. –

0

После тщательных исследований я обнаружил, что это проблема с Camel, не поддерживающим самую последнюю версию AWS SDK. Он успешно извлекает учетные данные (см. Документацию this), но сам клиент, созданный, разбивает Camel.

Единственным решением, которое я смог найти, была настройка AWS SDK для возврата учетных данных при его создании, а затем использования указанных учетных данных для создания клиента, совместимого с Camel, с использованием старой версии AWS SDK ... Хотя это очень непрактично и необходимо включать две версии одного и того же SDK, он может работать.

 Смежные вопросы

  • Нет связанных вопросов^_^