UNPKG

6.82 kBJavaScriptView Raw
1"use strict";
2var _a;
3Object.defineProperty(exports, "__esModule", { value: true });
4exports.RepositoryImage = void 0;
5const jsiiDeprecationWarnings = require("../../.warnings.jsii.js");
6const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
7const core_1 = require("@aws-cdk/core");
8const container_image_1 = require("../container-image");
9/**
10 * Regex pattern to check if it is an ECR image URL.
11 *
12 */
13const ECR_IMAGE_REGEX = /(^[a-zA-Z0-9][a-zA-Z0-9-_]*).dkr.ecr.([a-zA-Z0-9][a-zA-Z0-9-_]*).amazonaws.com(.cn)?\/.*/;
14/**
15 * An image hosted in a public or private repository. For images hosted in Amazon ECR, see
16 * [EcrImage](https://docs.aws.amazon.com/AmazonECR/latest/userguide/images.html).
17 */
18class RepositoryImage extends container_image_1.ContainerImage {
19 /**
20 * Constructs a new instance of the RepositoryImage class.
21 */
22 constructor(imageName, props = {}) {
23 super();
24 this.imageName = imageName;
25 this.props = props;
26 try {
27 jsiiDeprecationWarnings._aws_cdk_aws_ecs_RepositoryImageProps(props);
28 }
29 catch (error) {
30 if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
31 Error.captureStackTrace(error, RepositoryImage);
32 }
33 throw error;
34 }
35 }
36 bind(scope, containerDefinition) {
37 try {
38 jsiiDeprecationWarnings._aws_cdk_aws_ecs_ContainerDefinition(containerDefinition);
39 }
40 catch (error) {
41 if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
42 Error.captureStackTrace(error, this.bind);
43 }
44 throw error;
45 }
46 // name could be a Token - in that case, skip validation altogether
47 if (!core_1.Token.isUnresolved(this.imageName) && ECR_IMAGE_REGEX.test(this.imageName)) {
48 core_1.Annotations.of(scope).addWarning("Proper policies need to be attached before pulling from ECR repository, or use 'fromEcrRepository'.");
49 }
50 if (this.props.credentials) {
51 this.props.credentials.grantRead(containerDefinition.taskDefinition.obtainExecutionRole());
52 }
53 return {
54 imageName: this.imageName,
55 repositoryCredentials: this.props.credentials && {
56 credentialsParameter: this.props.credentials.secretArn,
57 },
58 };
59 }
60}
61exports.RepositoryImage = RepositoryImage;
62_a = JSII_RTTI_SYMBOL_1;
63RepositoryImage[_a] = { fqn: "@aws-cdk/aws-ecs.RepositoryImage", version: "1.204.0" };
64//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3NpdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInJlcG9zaXRvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0Esd0NBQW1EO0FBRW5ELHdEQUEwRTtBQU0xRTs7O0dBR0c7QUFDSCxNQUFNLGVBQWUsR0FBRywwRkFBMEYsQ0FBQztBQWFuSDs7O0dBR0c7QUFDSCxNQUFhLGVBQWdCLFNBQVEsZ0NBQWM7SUFFakQ7O09BRUc7SUFDSCxZQUE2QixTQUFpQixFQUFtQixRQUE4QixFQUFFO1FBQy9GLEtBQUssRUFBRSxDQUFDO1FBRG1CLGNBQVMsR0FBVCxTQUFTLENBQVE7UUFBbUIsVUFBSyxHQUFMLEtBQUssQ0FBMkI7Ozs7OzsrQ0FMdEYsZUFBZTs7OztLQU96QjtJQUVNLElBQUksQ0FBQyxLQUFvQixFQUFFLG1CQUF3Qzs7Ozs7Ozs7OztRQUN4RSxtRUFBbUU7UUFDbkUsSUFBSSxDQUFDLFlBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQy9FLGtCQUFXLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FBQyxxR0FBcUcsQ0FBQyxDQUFDO1NBQ3pJO1FBRUQsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRTtZQUMxQixJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsY0FBYyxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQztTQUM1RjtRQUVELE9BQU87WUFDTCxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDekIscUJBQXFCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLElBQUk7Z0JBQy9DLG9CQUFvQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFNBQVM7YUFDdkQ7U0FDRixDQUFDO0tBQ0g7O0FBekJILDBDQTBCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHNlY3JldHNtYW5hZ2VyIGZyb20gJ0Bhd3MtY2RrL2F3cy1zZWNyZXRzbWFuYWdlcic7XG5pbXBvcnQgeyBBbm5vdGF0aW9ucywgVG9rZW4gfSBmcm9tICdAYXdzLWNkay9jb3JlJztcbmltcG9ydCB7IENvbnRhaW5lckRlZmluaXRpb24gfSBmcm9tICcuLi9jb250YWluZXItZGVmaW5pdGlvbic7XG5pbXBvcnQgeyBDb250YWluZXJJbWFnZSwgQ29udGFpbmVySW1hZ2VDb25maWcgfSBmcm9tICcuLi9jb250YWluZXItaW1hZ2UnO1xuXG4vLyB2MiAtIGtlZXAgdGhpcyBpbXBvcnQgYXMgYSBzZXBhcmF0ZSBzZWN0aW9uIHRvIHJlZHVjZSBtZXJnZSBjb25mbGljdCB3aGVuIGZvcndhcmQgbWVyZ2luZyB3aXRoIHRoZSB2MiBicmFuY2guXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbmltcG9ydCB7IENvbnN0cnVjdCBhcyBDb3JlQ29uc3RydWN0IH0gZnJvbSAnQGF3cy1jZGsvY29yZSc7XG5cbi8qKlxuICogUmVnZXggcGF0dGVybiB0byBjaGVjayBpZiBpdCBpcyBhbiBFQ1IgaW1hZ2UgVVJMLlxuICpcbiAqL1xuY29uc3QgRUNSX0lNQUdFX1JFR0VYID0gLyheW2EtekEtWjAtOV1bYS16QS1aMC05LV9dKikuZGtyLmVjci4oW2EtekEtWjAtOV1bYS16QS1aMC05LV9dKikuYW1hem9uYXdzLmNvbSguY24pP1xcLy4qLztcblxuLyoqXG4gKiBUaGUgcHJvcGVydGllcyBmb3IgYW4gaW1hZ2UgaG9zdGVkIGluIGEgcHVibGljIG9yIHByaXZhdGUgcmVwb3NpdG9yeS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXBvc2l0b3J5SW1hZ2VQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgc2VjcmV0IHRvIGV4cG9zZSB0byB0aGUgY29udGFpbmVyIHRoYXQgY29udGFpbnMgdGhlIGNyZWRlbnRpYWxzIGZvciB0aGUgaW1hZ2UgcmVwb3NpdG9yeS5cbiAgICogVGhlIHN1cHBvcnRlZCB2YWx1ZSBpcyB0aGUgZnVsbCBBUk4gb2YgYW4gQVdTIFNlY3JldHMgTWFuYWdlciBzZWNyZXQuXG4gICAqL1xuICByZWFkb25seSBjcmVkZW50aWFscz86IHNlY3JldHNtYW5hZ2VyLklTZWNyZXQ7XG59XG5cbi8qKlxuICogQW4gaW1hZ2UgaG9zdGVkIGluIGEgcHVibGljIG9yIHByaXZhdGUgcmVwb3NpdG9yeS4gRm9yIGltYWdlcyBob3N0ZWQgaW4gQW1hem9uIEVDUiwgc2VlXG4gKiBbRWNySW1hZ2VdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25FQ1IvbGF0ZXN0L3VzZXJndWlkZS9pbWFnZXMuaHRtbCkuXG4gKi9cbmV4cG9ydCBjbGFzcyBSZXBvc2l0b3J5SW1hZ2UgZXh0ZW5kcyBDb250YWluZXJJbWFnZSB7XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIFJlcG9zaXRvcnlJbWFnZSBjbGFzcy5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgaW1hZ2VOYW1lOiBzdHJpbmcsIHByaXZhdGUgcmVhZG9ubHkgcHJvcHM6IFJlcG9zaXRvcnlJbWFnZVByb3BzID0ge30pIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHVibGljIGJpbmQoc2NvcGU6IENvcmVDb25zdHJ1Y3QsIGNvbnRhaW5lckRlZmluaXRpb246IENvbnRhaW5lckRlZmluaXRpb24pOiBDb250YWluZXJJbWFnZUNvbmZpZyB7XG4gICAgLy8gbmFtZSBjb3VsZCBiZSBhIFRva2VuIC0gaW4gdGhhdCBjYXNlLCBza2lwIHZhbGlkYXRpb24gYWx0b2dldGhlclxuICAgIGlmICghVG9rZW4uaXNVbnJlc29sdmVkKHRoaXMuaW1hZ2VOYW1lKSAmJiBFQ1JfSU1BR0VfUkVHRVgudGVzdCh0aGlzLmltYWdlTmFtZSkpIHtcbiAgICAgIEFubm90YXRpb25zLm9mKHNjb3BlKS5hZGRXYXJuaW5nKFwiUHJvcGVyIHBvbGljaWVzIG5lZWQgdG8gYmUgYXR0YWNoZWQgYmVmb3JlIHB1bGxpbmcgZnJvbSBFQ1IgcmVwb3NpdG9yeSwgb3IgdXNlICdmcm9tRWNyUmVwb3NpdG9yeScuXCIpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnByb3BzLmNyZWRlbnRpYWxzKSB7XG4gICAgICB0aGlzLnByb3BzLmNyZWRlbnRpYWxzLmdyYW50UmVhZChjb250YWluZXJEZWZpbml0aW9uLnRhc2tEZWZpbml0aW9uLm9idGFpbkV4ZWN1dGlvblJvbGUoKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGltYWdlTmFtZTogdGhpcy5pbWFnZU5hbWUsXG4gICAgICByZXBvc2l0b3J5Q3JlZGVudGlhbHM6IHRoaXMucHJvcHMuY3JlZGVudGlhbHMgJiYge1xuICAgICAgICBjcmVkZW50aWFsc1BhcmFtZXRlcjogdGhpcy5wcm9wcy5jcmVkZW50aWFscy5zZWNyZXRBcm4sXG4gICAgICB9LFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
\No newline at end of file