2016-04-12 3 views
1

Ich habe eine Java-Anwendung, die Dateien in S3 hinzufügt. Diese Anwendung wird in einer EC2-Instanz ausgeführt.Anwendung lokal testen, die IAM-Rolle verwendet

Wir verwenden IAM Rolle. Daher haben wir die erforderliche IAM-Rolle an diese EC2-Instanz angehängt.

Alles funktioniert perfekt dort.

Aber wir möchten die Anwendung auch lokal in meinem Laptop testen. Es ist schwierig, die Anwendung jedes Mal auf EC2 hochzuladen, wenn ich sie testen muss.

Wie können wir dynamisch wechseln, ohne den Code zu ändern, damit ich meinen Laptop (mit accesskey und secretKey) testen kann und IAM in EC2 verwende?

Antwort

1

Das AWS SDK verwendet eine Anmeldeinformationsanbieterkette, um Anmeldeinformationen zu suchen. Die Reihenfolge unterscheidet sich von Sprache, aber es überprüft allgemein:

  • Umgebungsvariablen
  • Lokale Konfigurationsdatei
  • EC2-Instanz Metadaten

Deshalb, wenn Sie die Anwendung lokal ausführen möchten, können Sie Stellen Sie entweder eine Anmeldeinformationsdatei bereit oder legen Sie Anmeldeinformationen in Umgebungsvariablen fest. Der Code findet die Anmeldeinformationen automatisch, genau wie bei einer EC2-Instanz.

Referenzen:

+0

Dies gilt, wenn wir DefaultCredentialsProviderChain verwenden. Aber wir verwenden InstanceProfileCredentialsProvider, um die IAM-Rolle zu verwenden. http://docs.aws.amazon.com/AWSSdkDocsJava/latest/DeveloperGuide/java-dg-roles.html InstanceProfileCredentialsProvider bevorzugt die IAM-Rolle – sag

+1

Wechseln Sie zur Verwendung der Provider-Kette. Es wird den Instanzprofilanbieter automatisch verwenden. – tedder42

1

Wenn Sie Instanzen verwenden Docker, dann wäre es einfach, wenn Sie Umgebungsvariablen auf docker run setzen.

docker run --env-file=FILE 

ODER

docker run -it --rm -e AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY -e AWS_SECRET_ACCESS_KEY=$AWS_SECRET_KEY 

Ref: https://hub.docker.com/r/pmcjury/aws-cli/