2016-12-09 6 views
7

Gibt es eine Möglichkeit, IAM-Instanzenrollen zu erteilen, die vom Erstellungsprozess verwendet werden?Verwenden von IAM-Rollen für den AWS-CodeBuild-Worker

In meinem speziellen Fall muss ich während des Builds einige s3-Operationen durchführen (unabhängig von Archivierungsartefakten).

Die einzige Alternative, die ich gefunden habe, ist, den Umgebungsvariablen auf der aws-Codebuild-Konfigurationsseite einen aws-Schlüssel und einen Schlüssel hinzuzufügen.

Es wäre sicherer, einfach eine IAM-Rolle an die ec2-Instanz oder den Container anzuhängen, der den Build ausführt. Ist das derzeit (2016-12) möglich?

Antwort

6

Sie sollten in der Lage sein, zusätzliche Richtlinienberechtigungen an die Service-Rolle anzuhängen, die für Ihr Build-Projekt erstellt wurde. CodeBuild verwendet diese Richtlinie während der Build-Zeit, um Aktionen innerhalb einer Build-Instanz auszuführen.

Zum Beispiel, wenn Sie ein Objekt aus dem S3 während Build löschen wollten, müssten Sie die folgende Anweisung an Ihre Dienstrolle Politik hinzuzufügen:

{ 
    "Effect": "Allow", 
    "Resource": [ 
     "*" 
    ], 
    "Action": [ 
     "s3:DeleteObject" 
    ] 
} 

Hinweis: Vielleicht möchten Sie diese beschränken Berechtigungen für bestimmte Ressourcen, das obige Beispiel ermöglicht DeleteObject für alles in Ihrem Konto.

Wenn Sie den Assistenten für die erste Ausführung der CodeBuild-Konsole zum Einrichten Ihres Projekts verwendet haben, sollten Sie bereits Richtlinien in Ihrer Servicerolle für s3: GetObject und s3: GetObjectVersion haben. Der Name der Service-Rolle beim Erstellen über die Konsole lautet standardmäßig 'codebuild- [Projektname] -service-role'.

+0

Ich dachte, Service-Rollen beträfen nur den Dienst, nicht den Build-Container. Ich versuche es noch einmal und füge eine s3 Befehlszeile zu buildspec.yml hinzu. Vielleicht konnte mein s3-Client den Container-Identity-Provider nicht verwenden. –

+0

Ich habe die Rollen nicht gesehen, weil die Maven-Bibliothek, mit der ich auf s3 zugegriffen habe, nicht mit den Container-Anmeldedaten funktioniert hat. Alles gut jetzt. –

+0

@DanielSperry war nicht sicher, was Ihre genaue Lösung war, aber ich habe vielleicht ein ähnliches Problem gehabt und ich habe eine Workaround-Lösung hier http://StackOverflow.com/Questions/42794486/use-appropriate-Esces-Credentials-on- codebuild-maven-job/42799591 # 42799591 – Neil

Verwandte Themen