2016-07-15 9 views
1

Ich versuche mit dem Befehl hdfs Zugriff auf Amazon S3-Bucket. Hier ist Befehl, den ich laufen:Zugriff amazon S3-Bucket von hadoop Angabe von SecretAccessKey von der Befehlszeile

$ hadoop fs -ls s3n://<ACCESSKEYID>:<SecretAccessKey>@<bucket-name>/tpt_files/ 
-ls: Invalid hostname in URI s3n://<ACCESSKEYID>:<SecretAccessKey>@<bucket-name>/tpt_files 
Usage: hadoop fs [generic options] -ls [-d] [-h] [-R] [<path> ...] 

Mein SecretAccessKey „/“ enthält. Könnte es Ursache für solches Verhalten sein?

In der gleichen Zeit, die ich aws cli habe in diesem Server installiert und ich kann meinen Eimer mit aws cli Zugang ohne Probleme (AccessKeyId und SecretAccessKey in .aws konfigurieren/Anmeldeinformationen):

aws s3 ls s3:// <bucket-name>/tpt_files/ 

Wenn es irgendein So greifen Sie mit dem Hadoop-Befehl auf Amazon S3-Bucket zu, ohne Schlüssel in core-site.xml anzugeben? Ich würde es vorziehen, Schlüssel in der Befehlszeile anzugeben.

Alle Vorschläge werden sehr hilfreich sein.

Antwort

-1

Die beste Vorgehensweise ist das Ausführen von hadoop für eine Instanz, die mit einer EC2-Instance-Profilrolle erstellt wurde, und der S3-Zugriff wird als Richtlinie der zugewiesenen Rolle angegeben. Schlüssel werden nicht mehr benötigt, wenn das Instanzprofil verwendet wird.
http://docs.aws.amazon.com/java-sdk/latest/developer-guide/credentials.html

Sie können AMIs auch mit einer Instance-Profilrolle starten, und die CLI und SDKs verwenden sie. Wenn der Code die Klasse DefaultAWSCredentialsProviderChain verwendet, können die Anmeldeinformationen über Umgebungsvariablen, Systemeigenschaften oder die Datei mit den Berechtigungsnachweisprofilen (sowie über die EC2-Instanzprofilrolle) abgerufen werden.

+0

Vielen Dank! Wird versuchen, das Instanzprofil zu verwenden. –