Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
ECRExemple Amazon pour CodeBuild
Cet exemple utilise une image Docker dans un référentiel d'images Amazon Elastic Container Registry (AmazonECR) pour créer un exemple de projet Go.
Important
L'exécution de cet échantillon peut entraîner des frais sur votre AWS compte. Cela inclut les éventuels frais pour AWS CodeBuild et pour les AWS ressources et les actions liées à Amazon S3 AWS KMS, CloudWatch Logs et AmazonECR. Pour plus d'informations, consultez CodeBuild les rubriques Tarification
Rubriques
Exécutez l'ECRexemple Amazon
Suivez les instructions suivantes pour exécuter l'ECRexemple Amazon pour CodeBuild.
Pour exécuter cet exemple
-
Pour créer et transférer l'image Docker vers votre référentiel d'images sur AmazonECR, suivez les étapes décrites dans la Exécutez l'exemple « Publier une image Docker sur Amazon ECR » section duExemple « Publier une image Docker sur Amazon ECR ».
-
Créer un projet Go :
-
Créez les fichiers comme décrit dans les Fichiers d'un projet Go sections Structure d'un projet Go et de cette rubrique, puis chargez-les dans un compartiment d'entrée S3 ou un AWS CodeCommit référentiel Bitbucket. GitHub
Important
Ne chargez pas
, mais seulement les fichiers à l'intérieur de(root directory name)
.(root directory name)
Si vous utilisez un compartiment d'entrée S3, veillez à créer un ZIP fichier contenant les fichiers, puis à le télécharger dans le compartiment d'entrée. N'ajoutez rien
au ZIP fichier, mais uniquement les fichiers qu'il contient(root directory name)
.(root directory name)
-
Créez un projet de build, exécutez le build et consultez les informations de build associées.
Si vous utilisez le AWS CLI pour créer le projet de construction, l'entrée JSON formatée de la
create-project
commande peut ressembler à ceci. (Remplacez les espaces réservés par vos propres valeurs.){ "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
" } -
Pour obtenir le résultat de l'artefact de sortie de la génération, ouvrez votre compartiment de sortie S3.
-
Téléchargez le fichier
sur votre ordinateur ou instance local, puis extrayez le contenu du fichier . Dans le contenu extrait, obtenez le fichierGoOutputArtifact
.ziphello
.
-
-
Si l'une des conditions suivantes est vraie, vous devez ajouter des autorisations à votre référentiel d'images sur Amazon ECR afin de AWS CodeBuild pouvoir intégrer son image Docker dans l'environnement de génération.
-
Votre projet utilise des CodeBuild informations d'identification pour extraire ECR des images Amazon. Ceci est indiqué par la valeur
CODEBUILD
dans l'attributimagePullCredentialsType
de votreProjectEnvironment
. -
Votre projet utilise une ECR image Amazon multi-comptes. Dans ce cas, votre projet doit utiliser son rôle de service pour extraire les ECR images Amazon. Pour activer ce comportement, définissez l'attribut
imagePullCredentialsType
de votreProjectEnvironment
surSERVICE_ROLE
.
Ouvrez la ECR console Amazon à l'adresse https://console.aws.amazon.com/ecr/
. -
Dans la liste des noms de référentiel, choisissez le nom du référentiel que vous avez créé ou sélectionné.
-
Dans le volet de navigation, choisissez Permissions (Autorisations), Edit (Modifier), puis Add statement (Ajouter une instruction).
-
Pour Statement name, saisissez un identifiant (par exemple,
CodeBuildAccess
). -
Pour Effect (Effet), conservez la sélection Allow (Autoriser). Cela indique que vous souhaitez autoriser l'accès à un autre compte AWS .
-
Pour Principal, effectuez l'une des opérations suivantes:
-
Si votre projet utilise des CodeBuild informations d'identification pour extraire une ECR image Amazon, saisissez Service principal
codebuild.amazonaws.com
. -
Si votre projet utilise une ECR image Amazon multi-comptesIDs, saisissez dans IDs le champ « AWS compte » les AWS comptes auxquels vous souhaitez donner accès.
-
-
Ignorez la liste de toutes les IAM entités.
-
Pour Action, sélectionnez les actions à extraction uniquement : ecr :GetDownloadUrlForLayer, ecr : et ecr :BatchGetImage. BatchCheckLayerAvailability
-
Pour Conditions, ajoutez ce qui suit :
{ "StringEquals":{ "aws:SourceAccount":"
<AWS-account-ID>
", "aws:SourceArn":"arn:aws:codebuild:<region>
:<AWS-account-ID>
:project/<project-name>
" } } -
Choisissez Save (Enregistrer).
Cette stratégie est affichée dans Autorisations. Le mandataire correspond à ce que vous avez saisi pour Principal (Mandataire) à l'étape 3 de cette procédure :
-
Si votre projet utilise des CodeBuild informations d'identification pour extraire une ECR image Amazon, cela
"codebuild.amazonaws.com"
apparaît sous Principaux du service. -
Si votre projet utilise une ECR image Amazon multi-comptes, l'identifiant du AWS compte auquel vous souhaitez donner accès apparaît sous AWS Compte IDs.
L'exemple de politique suivant utilise à la fois des CodeBuild informations d'identification et une ECR image Amazon multi-comptes.
{ "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" ] } ] }-
Si vos projets utilisent des CodeBuild informations d'identification et que vous souhaitez qu'ils aient un accès ouvert au ECR référentiel Amazon, vous pouvez omettre les
Condition
clés et ajouter l'exemple de politique suivant. CodeBuild
{ "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" ] } ] } -
-
-
Créez un projet de build, exécutez le build et consultez les informations de build.
Si vous utilisez le AWS CLI pour créer le projet de construction, l'entrée JSON formatée de la
create-project
commande peut ressembler à ceci. (Remplacez les espaces réservés par vos propres valeurs.){ "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
" } -
Pour obtenir le résultat de l'artefact de sortie de la génération, ouvrez votre compartiment de sortie S3.
-
Téléchargez le fichier
sur votre ordinateur ou instance local, puis extrayez le contenu du fichierGoOutputArtifact
.zip
. Dans le contenu extrait, obtenez le fichierGoOutputArtifact
.ziphello
.
Structure d'un projet Go
Cet exemple suppose que cette structure de répertoire est utilisée.
(root directory name)
├── buildspec.yml
└── hello.go
Fichiers d'un projet Go
Cet exemple utilise ces fichiers.
buildspec.yml
(dans
)(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
(dans
)(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) }