Dies ist der AWS CDK v2-Entwicklerhandbuch. Das ältere CDK v1 wurde am 1. Juni 2022 in die Wartung aufgenommen und der Support wurde am 1. Juni 2023 eingestellt.
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.
Container-Image-Assets in CDK-Apps erstellen und bereitstellen
Wenn Sie Container-Image-Assets mit dem AWS Cloud Development Kit (AWS CDK) erstellen, wird Docker standardmäßig verwendet, um diese Aktionen auszuführen. Wenn Sie ein anderes Container-Management-Tool verwenden möchten, können Sie Docker durch die CDK_DOCKER
Umgebungsvariable ersetzen.
Beispiel: Erstellen und veröffentlichen Sie ein Container-Image-Asset mit dem CDK AWS
Im Folgenden finden Sie ein einfaches Beispiel für eine AWS CDK-App, die standardmäßig Docker verwendet und ein Container-Asset in Amazon Elastic Container Registry (Amazon ECR) erstellt und veröffentlicht:
- Struktur des Projekts
-
my-cdk-app/ ├── lib/ │ ├── my-stack.ts │ └── docker/ │ ├── Dockerfile │ └── app/ │ └── index.js ├── bin/ │ └── my-cdk-app.ts ├── package.json ├── tsconfig.json └── cdk.json
- Docker-Datei
-
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
- Anwendungscode
-
In
lib/docker/app/index.js
:console.log("Hello from inside the container!");
- CDK-Stapel
-
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, }); } }
- CDK-App
-
#!/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');
Wenn wir es ausführencdk deploy
, macht das AWS Cloud Development Kit (AWS CDK) Command Line Interface (CLI) Folgendes:
-
Das Docker-Image erstellen —
docker build
Lokal basierend auf demDockerfile
im angegebenen Verzeichnis ()lib/docker
ausführen. -
Das Bild kennzeichnen — Wird ausgeführt
docker tag
, um das erstellte Image mit einem eindeutigen Hash zu versehen, der auf dem Image-Inhalt basiert. -
In Amazon ECR veröffentlichen — Führen Sie diesen Befehl aus
docker push
, um das Container-Image in einem Amazon ECR-Repository zu veröffentlichen. Dieses Repository muss bereits existieren. Es wird während des Standard-Bootstrapping-Vorgangs erstellt. -
Image-URI ausgeben — Nach einer erfolgreichen Bereitstellung wird der Amazon ECR-URI des veröffentlichten Container-Images in Ihrer Befehlszeile ausgegeben. Dies ist der URI unseres Docker-Images in Amazon ECR.
Wie ersetzt man Docker durch ein anderes Container-Management-Tool
Verwenden Sie die CDK_DOCKER
Umgebungsvariable, um den Pfad zur Binärdatei Ihres Ersatz-Container-Management-Tools anzugeben. Im Folgenden finden Sie ein Beispiel für das Ersetzen von Docker durch 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
Aliasing oder Verlinkung werden nicht unterstützt. Um Docker zu ersetzen, müssen Sie die CDK_DOCKER
Umgebungsvariable verwenden.
Unterstützte Drop-In-Ersatz-Engines für Docker
Finch wird unterstützt, obwohl einige Docker-Funktionen möglicherweise nicht verfügbar sind oder im Zuge der Weiterentwicklung des Tools anders funktionieren. Weitere Informationen zu Finch finden Sie unter Ready for Flight: Ankündigung
Andere Tools zur Containerverwaltung funktionieren möglicherweise. Das CDK überprüft nicht, welchen Docker-Ersatz Sie verwenden, um festzustellen, ob er unterstützt wird. Wenn das Tool äquivalente Docker-Befehle hat und sich ähnlich verhält, sollte es funktionieren.