Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
ECRAmazon-Beispiel für CodeBuild
In diesem Beispiel wird ein Docker-Image in einem Image-Repository von Amazon Elastic Container Registry (AmazonECR) verwendet, um ein Go-Beispielprojekt zu erstellen.
Wichtig
Die Ausführung dieses Beispiels kann dazu führen, dass Ihr AWS Konto belastet wird. Dazu gehören mögliche Gebühren für AWS CodeBuild und für AWS Ressourcen und Aktionen im Zusammenhang mit Amazon S3 AWS KMS, CloudWatch Logs und AmazonECR. Weitere Informationen finden Sie unter CodeBuild Preise
Führen Sie das ECR Amazon-Beispiel aus
Verwenden Sie die folgenden Anweisungen, um das ECR Amazon-Beispiel für auszuführen CodeBuild.
So führen Sie das Beispiel aus
-
Um das Docker-Image zu erstellen und in Ihr Image-Repository in Amazon zu übertragenECR, führen Sie die Schritte im Führen Sie das Beispiel „Docker-Image auf Amazon ECR veröffentlichen“ aus Abschnitt der Beispiel für „Docker-Image auf Amazon ECR veröffentlichen“ aus.
-
Erstellen eines Go-Projekts:
-
Erstellen Sie die Dateien wie in den Go-Projektdateien Abschnitten Go-Projektstruktur und in diesem Thema beschrieben und laden Sie sie dann in einen S3-Eingabe-Bucket oder ein AWS CodeCommit, GitHub, oder Bitbucket-Repository hoch.
Wichtig
Laden Sie nicht
hoch, sondern nur die Dateien in(root directory name)
.(root directory name)
Wenn du einen S3-Eingabe-Bucket verwendest, achte darauf, eine ZIP Datei zu erstellen, die die Dateien enthält, und lade sie dann in den Eingabe-Bucket hoch. Fügen Sie der ZIP Datei nichts
hinzu, sondern nur die darin enthaltenen Dateien(root directory name)
.(root directory name)
-
Erstellen Sie ein Build-Projekt, führen Sie den Build aus und zeigen Sie die zugehörigen Build-Informationen an.
Wenn Sie das AWS CLI Build-Projekt mit erstellen, sieht die Eingabe im JSON -Format für den
create-project
Befehl möglicherweise ähnlich aus. (Ersetzen Sie die Platzhalter durch Ihre eigenen Werte.){ "name": "sample-go-project", "source": { "type": "S3", "location": "codebuild-
region-ID
-account-ID
-input-bucket/GoSample
.zip" }, "artifacts": { "type": "S3", "location": "codebuild-region-ID
-account-ID
-output-bucket", "packaging": "ZIP", "name": "GoOutputArtifact
.zip" }, "environment": { "type": "LINUX_CONTAINER", "image": "aws/codebuild/standard:5.0", "computeType": "BUILD_GENERAL1_SMALL" }, "serviceRole": "arn:aws:iam::account-ID
:role/role-name
", "encryptionKey": "arn:aws:kms:region-ID
:account-ID
:key/key-ID
" } -
Zum Abrufen des Build-Ausgabeartefakts, öffnen Sie Ihren S3-Ausgabe-Bucket.
-
Laden Sie die Datei
auf Ihren lokalen Computer oder Ihre lokale Instance herunter. Extrahieren Sie anschließend den Inhalt der Datei . Rufen Sie im extrahierten Inhalt die DateiGoOutputArtifact
.ziphello
auf.
-
-
Wenn eine der folgenden Bedingungen zutrifft, müssen Sie Ihrem Image-Repository in Amazon Berechtigungen hinzufügen, ECR damit das zugehörige Docker-Image in die Build-Umgebung abgerufen werden AWS CodeBuild kann.
-
Ihr Projekt verwendet CodeBuild Anmeldeinformationen, um ECR Amazon-Bilder abzurufen. Dies wird durch den Wert von
CODEBUILD
im AttributimagePullCredentialsType
IhrerProjectEnvironment
angezeigt. -
Ihr Projekt verwendet ein kontoübergreifendes ECR Amazon-Image. In diesem Fall muss Ihr Projekt seine Servicerolle verwenden, um ECR Amazon-Bilder abzurufen. Um dieses Verhalten zu aktivieren, setzen Sie das Attribut
imagePullCredentialsType
IhrerProjectEnvironment
aufSERVICE_ROLE
.
Öffnen Sie die ECR Amazon-Konsole unter https://console.aws.amazon.com/ecr/
. -
Klicken Sie in der Liste der Repository-Namen den Namen des Repositories aus, das Sie erstellt oder ausgewählt haben.
-
Wählen Sie im Navigationsbereich Permissions (Berechtigungen) und dann Edit (Bearbeiten) aus. Klicken Sie anschließend auf Add statement (Anweisung hinzufügen).
-
Geben Sie in Statement name einen Bezeichner (z. B.
CodeBuildAccess
) ein. -
Für Effect (Effekt) lassen Sie Allow (Zulassen) ausgewählt. Dies zeigt an, dass Sie den Zugriff auf ein anderes AWS -Konto zulassen möchten.
-
Wählen Sie für Principal (Prinzipal) eine der folgenden Vorgehensweisen:
-
Wenn Ihr Projekt CodeBuild Anmeldeinformationen verwendet, um ein ECR Amazon-Image abzurufen, geben Sie im Feld Service Principal den Wert ein
codebuild.amazonaws.com
. -
Wenn Ihr Projekt ein IDs kontoübergreifendes ECR Amazon-Image verwendetIDs, geben Sie AWS unter Konto die AWS Konten ein, denen Sie Zugriff gewähren möchten.
-
-
Überspringen Sie die Liste „Alle IAM Entitäten“.
-
Wählen Sie unter Aktion die Aktionen, die nur abgerufen werden können: ecr:GetDownloadUrlForLayer, ecr: und ecr: BatchGetImage aus. BatchCheckLayerAvailability
-
Fügen Sie unter Bedingungen Folgendes hinzu:
{ "StringEquals":{ "aws:SourceAccount":"
<AWS-account-ID>
", "aws:SourceArn":"arn:aws:codebuild:<region>
:<AWS-account-ID>
:project/<project-name>
" } } -
Wählen Sie Save (Speichern) aus.
Diese Richtlinie wird in Permissions (Berechtigungen) angezeigt. Der Prinzipal entspricht dem, was Sie in Schritt 3 dieses Verfahrens für Principal (Prinzipal) eingegeben haben:
-
Wenn Ihr Projekt CodeBuild Anmeldeinformationen verwendet, um ein ECR Amazon-Image abzurufen,
"codebuild.amazonaws.com"
wird es unter Service Principals angezeigt. -
Wenn Ihr Projekt ein kontoübergreifendes ECR Amazon-Image verwendet, wird die ID des AWS Kontos, dem Sie Zugriff gewähren möchten, unter AWS Konto IDs angezeigt.
Die folgende Beispielrichtlinie verwendet sowohl CodeBuild Anmeldeinformationen als auch ein kontoübergreifendes ECR Amazon-Image.
{ "Version":"2012-10-17", "Statement":[ { "Sid":"CodeBuildAccessPrincipal", "Effect":"Allow", "Principal":{ "Service":"codebuild.amazonaws.com" }, "Action":[ "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", "ecr:BatchCheckLayerAvailability" ], "Condition":{ "StringEquals":{ "aws:SourceArn":"arn:aws:codebuild:
<region>
:<aws-account-id>
:project/<project-name>
", "aws:SourceAccount":"<aws-account-id>
" } } }, { "Sid":"CodeBuildAccessCrossAccount", "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::<AWS-account-ID>
:root" }, "Action":[ "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", "ecr:BatchCheckLayerAvailability" ] } ] }-
Wenn Ihre Projekte CodeBuild Anmeldeinformationen verwenden und Sie möchten, dass Ihre CodeBuild Projekte offenen Zugriff auf das ECR Amazon-Repository haben, können Sie die
Condition
Schlüssel weglassen und die folgende Beispielrichtlinie hinzufügen.
{ "Version":"2012-10-17", "Statement":[ { "Sid":"CodeBuildAccessPrincipal", "Effect":"Allow", "Principal":{ "Service":"codebuild.amazonaws.com" }, "Action":[ "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", "ecr:BatchCheckLayerAvailability" ] }, { "Sid":"CodeBuildAccessCrossAccount", "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::
<AWS-account-ID>
:root" }, "Action":[ "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", "ecr:BatchCheckLayerAvailability" ] } ] } -
-
-
Erstellen Sie ein Build-Projekt, führen Sie den Build aus und sehen Sie sich die Build-Informationen an.
Wenn Sie das AWS CLI Build-Projekt mit erstellen, sieht die Eingabe im JSON -Format für den
create-project
Befehl möglicherweise ähnlich aus. (Ersetzen Sie die Platzhalter durch Ihre eigenen Werte.){ "name": "amazon-ecr-sample-project", "source": { "type": "S3", "location": "codebuild-
region-ID
-account-ID
-input-bucket/GoSample
.zip" }, "artifacts": { "type": "S3", "location": "codebuild-region-ID
-account-ID
-output-bucket", "packaging": "ZIP", "name": "GoOutputArtifact
.zip" }, "environment": { "type": "LINUX_CONTAINER", "image": "account-ID
.dkr.ecr.region-ID
.amazonaws.com/your-Amazon-ECR-repo-name
:tag
", "computeType": "BUILD_GENERAL1_SMALL" }, "serviceRole": "arn:aws:iam::account-ID
:role/role-name
", "encryptionKey": "arn:aws:kms:region-ID
:account-ID
:key/key-ID
" } -
Zum Abrufen des Build-Ausgabeartefakts, öffnen Sie Ihren S3-Ausgabe-Bucket.
-
Laden Sie die Datei
auf Ihren lokalen Computer oder Ihre lokale Instance herunter. Extrahieren Sie anschließend den Inhalt der DateiGoOutputArtifact
.zip
. Rufen Sie im extrahierten Inhalt die DateiGoOutputArtifact
.ziphello
auf.
Go-Projektstruktur
In diesem Beispiel wird von dieser Verzeichnisstruktur ausgegangen.
(root directory name)
├── buildspec.yml
└── hello.go
Go-Projektdateien
In diesem Beispiel werden diese Dateien verwendet.
buildspec.yml
(in
)(root directory
name)
version: 0.2 phases: install: runtime-versions: golang: 1.13 build: commands: - echo Build started on `date` - echo Compiling the Go code - go build hello.go post_build: commands: - echo Build completed on `date` artifacts: files: - hello
hello.go
(in
)(root directory
name)
package main import "fmt" func main() { fmt.Println("hello world") fmt.Println("1+1 =", 1+1) fmt.Println("7.0/3.0 =", 7.0/3.0) fmt.Println(true && false) fmt.Println(true || false) fmt.Println(!true) }