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.
Amazon ECR-Beispiel für CodeBuild
In diesem Beispiel wird ein Docker-Image in einem Image-Repository von Amazon Elastic Container Registry (Amazon ECR) 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 Amazon ECR. Weitere Informationen finden Sie unter CodeBuild Preise
Führen Sie das Amazon ECR-Beispiel aus
Verwenden Sie die folgenden Anweisungen, um das Amazon ECR-Beispiel für CodeBuild auszuführen.
So führen Sie das Beispiel aus
-
Um das Docker-Image zu erstellen und in Ihr Image-Repository in Amazon ECR zu übertragen, führen Sie die Schritte im Führen Sie das Beispiel „Docker-Image in Amazon ECR veröffentlichen“ aus Abschnitt der aus. Beispiel für „Docker-Image auf Amazon ECR veröffentlichen“
-
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 Sie einen S3-Empfangs-Bucket verwenden, sollten Sie eine ZIP-Datei erstellen, die die Dateien enthält, und diese dann in den Empfangs-Bucket hochladen. Fügen Sie
nicht zur ZIP-Datei hinzu, sondern nur die Dateien in(root directory name)
.(root directory name)
-
Erstelle ein Build-Projekt, führe den Build aus und sieh dir die zugehörigen Build-Informationen an.
Wenn Sie das AWS CLI Build-Projekt mit erstellen, sieht die Eingabe des
create-project
Befehls im JSON-Format 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 ECR Berechtigungen hinzufügen, damit das zugehörige Docker-Image in die Build-Umgebung abgerufen werden AWS CodeBuild kann.
-
Ihr Projekt verwendet CodeBuild Anmeldeinformationen, um Amazon ECR-Bilder abzurufen. Dies wird durch den Wert von
CODEBUILD
im AttributimagePullCredentialsType
IhrerProjectEnvironment
angezeigt. -
Ihr Projekt verwendet ein kontoübergreifendes Amazon ECR-Image. In diesem Fall muss Ihr Projekt seine Servicerolle verwenden, um Amazon ECR-Images abzurufen. Um dieses Verhalten zu aktivieren, setzen Sie das Attribut
imagePullCredentialsType
IhrerProjectEnvironment
aufSERVICE_ROLE
.
Öffnen Sie die Amazon ECR-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 Amazon ECR-Image abzurufen, geben
codebuild.amazonaws.com
Sie im Feld Service Principal den folgenden Wert ein. -
Wenn Ihr Projekt ein IDs kontoübergreifendes Amazon ECR-Image verwendet IDs, geben Sie AWS unter Konto die AWS Konten ein, denen Sie Zugriff gewähren möchten.
-
-
Überspringen Sie die Liste All IAM entities.
-
Wählen Sie unter Aktion die Aktionen, die nur abgerufen werden können: ecr:GetDownloadUrlForLayer, ecr: und ecr: aus. BatchGetImage 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 Amazon ECR-Image abzurufen,
"codebuild.amazonaws.com"
wird es unter Service Principals angezeigt. -
Wenn Ihr Projekt ein kontoübergreifendes Amazon ECR-Image verwendet, wird die ID des AWS Kontos, dem Sie Zugriff gewähren möchten, unter AWS Konto angezeigt. IDs
Die folgende Beispielrichtlinie verwendet sowohl CodeBuild Anmeldeinformationen als auch ein kontoübergreifendes Amazon ECR-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 Amazon ECR-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 des
create-project
Befehls im JSON-Format 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) }