2016-01-29 2 views
4

Я пытаюсь предоставить учетные данные для моего приложения загрузки Spring Spring, размещенного в облаке (Pivotal Web Services), чтобы загрузить его на Amazon S3. Тем не менее, каждый раз, когда я пытаюсь получить учетные данные с помощью:Не удается получить учетные данные Amazon

DefaultAWSCredentialsProviderChain credentialProviderChain = new DefaultAWSCredentialsProviderChain(); 
TransferManager transferManager = new TransferManager(credentialProviderChain.getCredentials()); 

Это говорит

Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception 
[Request processing failed; nested exception is com.amazonaws.AmazonClientException: Unable 
to load AWS credentials from any provider in the chain] with root cause 
2016-01-28T23:55:38.55+0000 [APP/0]  OUT com.amazonaws.AmazonClientException: 
Unable to load AWS credentials from any provider in the chain 

Я немного запутался, следует ли мои полномочия определены в beans.xml или приложения. файл свойств. Но я пробовал обойтись безрезультатно. Может ли кто-нибудь указать мне в правильном направлении?

+0

вы можете попробовать сервис AWS Cognito а –

ответ

10

Проверьте документы! http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/auth/DefaultAWSCredentialsProviderChain.html

AWS учетных данных поставщик цепь, которая ищет учетные данные в следующем порядке:

  • переменных окружения - AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY (РЕКОМЕНДУЕТСЯ, поскольку они признается всей SDKs АМСА и CLI для .NET, за исключением), или AWS_ACCESS_KEY и AWS_SECRET_KEY (только узнаны Java SDK)
  • Java System Properties - aws.accessKeyId и aws.secretKey
  • профили Credential файл в папку по умолчанию (~/.aws/мандатной) совместно всеми SDKs АМС и AWS CLI
  • профиль Instance учетные данные доставляются через службу метаданных Amazon EC2

Более общие документы здесь: http://docs.aws.amazon.com/AWSSdkDocsJava/latest/DeveloperGuide/credentials.html

+0

Я увидели это, но можете ли вы ответить, как правильно определить учетные данные и сделать их распознанными с помощью кода? – Tometoyou

+1

Ну, в каком режиме вы хотите использовать? Если вы работаете в EC2, должны быть предпочтительными учетные данные профиля профиля. В противном случае, чтобы запустить его, вы можете использовать технику свойств системы, поставив это перед вашим кодом: 'System.setProperty (« aws.accessKeyId »,« <ВАШ ДОСТУП КЛЮЧ »); System.setProperty ("aws.secretKey", "<ВАШ СЕКРЕТНЫЙ КЛЮЧ>"); '. В целом, однако, лучше не вводить учетные данные в исходный код. – guitarsteve

+2

@Tometoyou, проверьте [ClasspathPropertiesFileCredentialsProvider] (https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/auth/ClasspathPropertiesFileCredentialsProvider.html), который позволяет вам бросать простой файл свойств в ваш путь к классу, содержащий ваши учетные данные. Это не часть цепи. Альтернативой является [PropertiesFileCredentialsProvider] (https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/auth/PropertiesFileCredentialsProvider.html). – tedder42

2

этот подход работал:

$ export AWS_ACCESS_KEY_ID=... 
$ export AWS_SECRET_ACCESS_KEY=... 
Смежные вопросы