Créez et déployez des ressources d'images de conteneurs dans les applications CDK - AWS Kit de développement Cloud (AWS CDK) v2

Ceci est le guide du développeur du AWS CDK v2. L'ancien CDK v1 est entré en maintenance le 1er juin 2022 et a pris fin le 1er juin 2023.

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.

Créez et déployez des ressources d'images de conteneurs dans les applications CDK

Lorsque vous créez des actifs d'image de conteneur avec le AWS Cloud Development Kit (AWS CDK), Docker est utilisé par défaut pour effectuer ces actions. Si vous souhaitez utiliser un autre outil de gestion de conteneurs, vous pouvez remplacer Docker via la variable d'CDK_DOCKERenvironnement.

Exemple : création et publication d'une ressource d'image de conteneur avec le AWS CDK

Voici un exemple simple d'application AWS CDK qui crée et publie un actif de conteneur sur Amazon Elastic Container Registry (Amazon ECR) en utilisant Docker par défaut :

Structure du projet
my-cdk-app/ ├── lib/ │ ├── my-stack.ts │ └── docker/ │ ├── Dockerfile │ └── app/ │ └── index.js ├── bin/ │ └── my-cdk-app.ts ├── package.json ├── tsconfig.json └── cdk.json
Dockerfile
FROM public.ecr.aws/lambda/nodejs:16 # Copy application code COPY app/ /var/task/ # (Optional) Install dependencies # RUN npm install # The Lambda Node.js base image looks for index.handler by default
Code d'application

Dans lib/docker/app/index.js:

console.log("Hello from inside the container!");
pile de CDK
import * as cdk from 'aws-cdk-lib'; import { Construct } from 'constructs'; import * as ecr_assets from 'aws-cdk-lib/aws-ecr-assets'; export class MyStack extends cdk.Stack { constructor(scope: Construct, id: string) { super(scope, id); // Define a Docker image asset const dockerImageAsset = new ecr_assets.DockerImageAsset(this, 'MyDockerImage', { directory: 'lib/docker', // Path to the directory containing the Dockerfile }); // Output the ECR URI new cdk.CfnOutput(this, 'ECRImageUri', { value: dockerImageAsset.imageUri, }); } }
Application CDK
#!/usr/bin/env node import * as cdk from 'aws-cdk-lib'; import { MyStack } from '../lib/my-stack'; const app = new cdk.App(); new MyStack(app, 'MyStack');

Lors de l'exécutioncdk deploy, l'interface de ligne de commande (CLI) du AWS Cloud Development Kit (AWS CDK) effectue les opérations suivantes :

  1. Créez l'image Dockerdocker build Exécutez-la localement Dockerfile en fonction du répertoire spécifié (lib/docker).

  2. Marquer l'image : exécutez cette docker tag option pour étiqueter l'image créée avec un hachage unique, en fonction du contenu de l'image.

  3. Publier sur Amazon ECR — Exécutez docker push pour publier l'image du conteneur dans un référentiel Amazon ECR. Ce dépôt doit déjà exister. Il est créé pendant le processus d'amorçage par défaut.

  4. Afficher l'URI de l'image — Après un déploiement réussi, l'URI Amazon ECR de l'image du conteneur publiée est affiché dans votre invite de commande. Il s'agit de l'URI de notre image Docker dans Amazon ECR.

Comment remplacer Docker par un autre outil de gestion de conteneurs

Utilisez la variable d'CDK_DOCKERenvironnement pour spécifier le chemin d'accès au binaire de votre outil de gestion des conteneurs de remplacement. Voici un exemple de remplacement de Docker par Finch:

$ which finch /usr/local/bin/finch # Locate the path to the binary $ export CDK_DOCKER='/usr/local/bin/finch' # Set the environment variable $ cdk deploy # Deploy using the replacement

L'aliasing ou les liens ne sont pas pris en charge. Pour remplacer Docker, vous devez utiliser la variable d'CDK_DOCKERenvironnement.

Moteurs de remplacement intégrés Docker pris en charge

Finch est pris en charge, bien que certaines fonctionnalités de Docker puissent ne pas être disponibles ou fonctionner différemment au fur et à mesure de l'évolution de l'outil. Pour plus d'informations sur Finch, voir Ready for Flight : Annancing Finch 1.0 GA ! dans le blog AWS Open Source.

D'autres outils de gestion des conteneurs peuvent fonctionner. Le CDK ne vérifie pas quel remplacement de Docker vous utilisez pour déterminer s'il est pris en charge. Si l'outil possède des commandes Docker équivalentes et se comporte de la même manière, il devrait fonctionner.