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.
Wenn Sie Container-Image-Assets mit dem erstellen AWS Cloud Development Kit (AWS CDK), Docker wird standardmäßig verwendet, um diese Aktionen auszuführen. Wenn Sie ein anderes Container-Management-Tool verwenden möchten, können Sie es ersetzen Docker durch die CDK_DOCKER
Umgebungsvariable.
Beispiel: Erstellen und veröffentlichen Sie ein Container-Image-Asset mit dem AWS CDK
Im Folgenden finden Sie ein einfaches Beispiel für eine AWS CDK App, die ein Container-Asset erstellt und in Amazon Elastic Container Registry (Amazon ECR) veröffentlicht, indem Docker standardmäßig:
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
Dockerfile:
FROM public.ecr.aws/lambda/nodejs:16
# Copy application code
COPY app/ /var/task/
# (Optional) Install dependencies
# RUN npm install
# The AWS 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 ausführencdk deploy
, wird die AWS Cloud Development Kit (AWS CDK) Befehlszeilenschnittstelle (CLI) macht Folgendes:
-
Baue das Docker Bild — Wird
docker build
lokal ausgeführt, basierend auf demDockerfile
im angegebenen Verzeichnis (lib/docker
). -
Bild kennzeichnen — Wird ausgeführt
docker tag
, um das erstellte Image mit einem eindeutigen Hash zu versehen, der auf dem Bildinhalt 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 die URI unserer Docker Bild in Amazon ECR.
Wie ersetzt man Docker mit einem anderen Container-Management-Tool
Verwenden Sie die CDK_DOCKER
Umgebungsvariable, um den Pfad zur Binärdatei Ihres Ersatz-Container-Verwaltungstools anzugeben. Im Folgenden finden Sie ein Beispiel für das Ersetzen Docker mit 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. Zu ersetzen Docker, müssen Sie die CDK_DOCKER
Umgebungsvariable verwenden.
Unterstützt Docker Ersatzmotoren, die sofort einsatzbereit sind
Finch wird unterstützt, obwohl es einige geben kann Docker Funktionen, die nicht verfügbar sind oder im Zuge der Weiterentwicklung des Tools möglicherweise anders funktionieren. Weitere Informationen zu Finch finden Sie unter Ready for Flight: Ankündigung von Finch
Andere Tools zur Containerverwaltung funktionieren möglicherweise. Das CDK prüft nicht, welche Docker Ersatz, den Sie verwenden, um festzustellen, ob er unterstützt wird. Wenn das Tool gleichwertig ist Docker Befehle und Verhalten ähnlich, sollte es funktionieren.