All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.github.cdklabs.cdk.ecr.deployment.package-info Maven / Gradle / Ivy

/**
 * 

cdk-ecr-deployment

*

* Release * npm version * PyPI * npm * PyPI - Downloads *

* CDK construct to synchronize single docker image between docker registries. *

* Only use v3 of this package *

* ⚠️ Version 2.* is no longer supported, as the Go.1.x runtime is no longer supported in AWS Lambda.\ * ⚠️ Version 1.* is no longer supported, as CDK v1 has reached the end-of-life * stage. *

*

Features

*

*

    *
  • Copy image from ECR/external registry to (another) ECR/external registry
  • *
  • Copy an archive tarball image from s3 to ECR/external registry
  • *
*

*

Environment variables

*

* Enable flags: true, 1. e.g. export CI=1 *

*

    *
  • CI indicate if it's CI environment. This flag will enable building lambda from scratch.
  • *
  • NO_PREBUILT_LAMBDA disable using prebuilt lambda.
  • *
  • FORCE_PREBUILT_LAMBDA force using prebuilt lambda.
  • *
*

* ⚠️ If you want to force using prebuilt lambda in CI environment to reduce build time. Try export FORCE_PREBUILT_LAMBDA=1. *

*

Examples

*

*

 * import software.amazon.awscdk.services.ecr.assets.DockerImageAsset;
 * 
 * 
 * DockerImageAsset image = DockerImageAsset.Builder.create(this, "CDKDockerImage")
 *         .directory(join(__dirname, "docker"))
 *         .build();
 * 
 * // Copy from cdk docker image asset to another ECR.
 * // Copy from cdk docker image asset to another ECR.
 * ECRDeployment.Builder.create(this, "DeployDockerImage1")
 *         .src(new DockerImageName(image.getImageUri()))
 *         .dest(new DockerImageName(String.format("%s.dkr.ecr.us-west-2.amazonaws.com/my-nginx:latest", Aws.ACCOUNT_ID)))
 *         .build();
 * 
 * // Copy from docker registry to ECR.
 * // Copy from docker registry to ECR.
 * ECRDeployment.Builder.create(this, "DeployDockerImage2")
 *         .src(new DockerImageName("nginx:latest"))
 *         .dest(new DockerImageName(String.format("%s.dkr.ecr.us-west-2.amazonaws.com/my-nginx2:latest", Aws.ACCOUNT_ID)))
 *         .build();
 * 
 * // Copy from private docker registry to ECR.
 * // The format of secret in aws secrets manager must be plain text! e.g. <username>:<password>
 * // Copy from private docker registry to ECR.
 * // The format of secret in aws secrets manager must be plain text! e.g. <username>:<password>
 * ECRDeployment.Builder.create(this, "DeployDockerImage3")
 *         .src(new DockerImageName("javacs3/nginx:latest", "username:password"))
 *         // src: new ecrdeploy.DockerImageName('javacs3/nginx:latest', 'aws-secrets-manager-secret-name'),
 *         // src: new ecrdeploy.DockerImageName('javacs3/nginx:latest', 'arn:aws:secretsmanager:us-west-2:000000000000:secret:id'),
 *         .dest(new DockerImageName(String.format("%s.dkr.ecr.us-west-2.amazonaws.com/my-nginx3:latest", Aws.ACCOUNT_ID)))
 *         .build().addToPrincipalPolicy(PolicyStatement.Builder.create()
 *         .effect(Effect.ALLOW)
 *         .actions(List.of("secretsmanager:GetSecretValue"))
 *         .resources(List.of("*"))
 *         .build());
 * 
*

*

Sample: test/example.ecr-deployment.ts

*

*

 * # Run the following command to try the sample.
 * NO_PREBUILT_LAMBDA=1 npx cdk deploy -a "npx ts-node -P tsconfig.dev.json --prefer-ts-exts test/example.ecr-deployment.ts"
 * 
*

*

API

*

*

Tech Details & Contribution

*

* The core of this project relies on containers/image which is used by Skopeo. * Please take a look at those projects before contribution. *

* To support a new docker image source(like docker tarball in s3), you need to implement image transport interface. You could take a look at docker-archive transport for a good start. *

* To test the lambda folder, make test. */ @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) package io.github.cdklabs.cdk.ecr.deployment;





© 2015 - 2024 Weber Informatics LLC | Privacy Policy