ECRAmazon-Beispiel für CodeBuild - AWS CodeBuild

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, Amazon S3 S3-Preise, AWS Key Management Service Preise, CloudWatch Amazon-Preise und Amazon Elastic Container Registry — 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
  1. 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.

  2. Erstellen eines Go-Projekts:

    1. 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 (root directory name) hoch, sondern nur die Dateien in (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 (root directory name) hinzu, sondern nur die darin enthaltenen Dateien(root directory name).

    2. 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" }
    3. Zum Abrufen des Build-Ausgabeartefakts, öffnen Sie Ihren S3-Ausgabe-Bucket.

    4. Laden Sie die Datei GoOutputArtifact.zip auf Ihren lokalen Computer oder Ihre lokale Instance herunter. Extrahieren Sie anschließend den Inhalt der Datei . Rufen Sie im extrahierten Inhalt die Datei hello auf.

  3. 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 Attribut imagePullCredentialsType Ihrer ProjectEnvironment 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 Ihrer ProjectEnvironment auf SERVICE_ROLE.

    1. Öffnen Sie die ECR Amazon-Konsole unter https://console.aws.amazon.com/ecr/.

    2. Klicken Sie in der Liste der Repository-Namen den Namen des Repositories aus, das Sie erstellt oder ausgewählt haben.

    3. Wählen Sie im Navigationsbereich Permissions (Berechtigungen) und dann Edit (Bearbeiten) aus. Klicken Sie anschließend auf Add statement (Anweisung hinzufügen).

    4. Geben Sie in Statement name einen Bezeichner (z. B. CodeBuildAccess) ein.

    5. 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.

    6. 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 eincodebuild.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.

    7. Überspringen Sie die Liste „Alle IAM Entitäten“.

    8. Wählen Sie unter Aktion die Aktionen, die nur abgerufen werden können: ecr:GetDownloadUrlForLayer, ecr: und ecr: BatchGetImage aus. BatchCheckLayerAvailability

    9. 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>" } }
    10. 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" ] } ] }
  4. 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" }
  5. Zum Abrufen des Build-Ausgabeartefakts, öffnen Sie Ihren S3-Ausgabe-Bucket.

  6. Laden Sie die Datei GoOutputArtifact.zip auf Ihren lokalen Computer oder Ihre lokale Instance herunter. Extrahieren Sie anschließend den Inhalt der Datei GoOutputArtifact.zip. Rufen Sie im extrahierten Inhalt die Datei hello 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) }