UNPKG

@aws-cdk/aws-ecs

Version:

The CDK Construct Library for AWS::ECS

68 lines 7.95 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.TagParameterContainerImage = void 0; const jsiiDeprecationWarnings = require("../../.warnings.jsii.js"); const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); const cdk = require("@aws-cdk/core"); const container_image_1 = require("../container-image"); /** * A special type of {@link ContainerImage} that uses an ECR repository for the image, * but a CloudFormation Parameter for the tag of the image in that repository. * This allows providing this tag through the Parameter at deploy time, * for example in a CodePipeline that pushes a new tag of the image to the repository during a build step, * and then provides that new tag through the CloudFormation Parameter in the deploy step. * * @see #tagParameterName */ class TagParameterContainerImage extends container_image_1.ContainerImage { constructor(repository) { super(); this.repository = repository; } bind(scope, containerDefinition) { jsiiDeprecationWarnings._aws_cdk_aws_ecs_ContainerDefinition(containerDefinition); this.repository.grantPull(containerDefinition.taskDefinition.obtainExecutionRole()); const imageTagParameter = new cdk.CfnParameter(scope, 'ImageTagParam'); this.imageTagParameter = imageTagParameter; return { imageName: this.repository.repositoryUriForTag(imageTagParameter.valueAsString), }; } /** * Returns the name of the CloudFormation Parameter that represents the tag of the image * in the ECR repository. */ get tagParameterName() { return cdk.Lazy.string({ produce: () => { if (this.imageTagParameter) { return this.imageTagParameter.logicalId; } else { throw new Error('TagParameterContainerImage must be used in a container definition when using tagParameterName'); } }, }); } /** * Returns the value of the CloudFormation Parameter that represents the tag of the image * in the ECR repository. */ get tagParameterValue() { return cdk.Lazy.string({ produce: () => { if (this.imageTagParameter) { return this.imageTagParameter.valueAsString; } else { throw new Error('TagParameterContainerImage must be used in a container definition when using tagParameterValue'); } }, }); } } exports.TagParameterContainerImage = TagParameterContainerImage; _a = JSII_RTTI_SYMBOL_1; TagParameterContainerImage[_a] = { fqn: "@aws-cdk/aws-ecs.TagParameterContainerImage", version: "1.149.0" }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFnLXBhcmFtZXRlci1jb250YWluZXItaW1hZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0YWctcGFyYW1ldGVyLWNvbnRhaW5lci1pbWFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxxQ0FBcUM7QUFFckMsd0RBQTBFO0FBTTFFOzs7Ozs7OztHQVFHO0FBQ0gsTUFBYSwwQkFBMkIsU0FBUSxnQ0FBYztJQUk1RCxZQUFtQixVQUEyQjtRQUM1QyxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0tBQzlCO0lBRU0sSUFBSSxDQUFDLEtBQWdCLEVBQUUsbUJBQXdDOztRQUNwRSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO1FBQ3BGLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxHQUFHLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxlQUFlLENBQUMsQ0FBQztRQUN2RSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUM7UUFDM0MsT0FBTztZQUNMLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQztTQUNoRixDQUFDO0tBQ0g7SUFFRDs7O09BR0c7SUFDSCxJQUFXLGdCQUFnQjtRQUN6QixPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ3JCLE9BQU8sRUFBRSxHQUFHLEVBQUU7Z0JBQ1osSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7b0JBQzFCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQztpQkFDekM7cUJBQU07b0JBQ0wsTUFBTSxJQUFJLEtBQUssQ0FBQywrRkFBK0YsQ0FBQyxDQUFDO2lCQUNsSDtZQUNILENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtJQUVEOzs7T0FHRztJQUNILElBQVcsaUJBQWlCO1FBQzFCLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDckIsT0FBTyxFQUFFLEdBQUcsRUFBRTtnQkFDWixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtvQkFDMUIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDO2lCQUM3QztxQkFBTTtvQkFDTCxNQUFNLElBQUksS0FBSyxDQUFDLGdHQUFnRyxDQUFDLENBQUM7aUJBQ25IO1lBQ0gsQ0FBQztTQUNGLENBQUMsQ0FBQztLQUNKOztBQWhESCxnRUFpREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBlY3IgZnJvbSAnQGF3cy1jZGsvYXdzLWVjcic7XG5pbXBvcnQgKiBhcyBjZGsgZnJvbSAnQGF3cy1jZGsvY29yZSc7XG5pbXBvcnQgeyBDb250YWluZXJEZWZpbml0aW9uIH0gZnJvbSAnLi4vY29udGFpbmVyLWRlZmluaXRpb24nO1xuaW1wb3J0IHsgQ29udGFpbmVySW1hZ2UsIENvbnRhaW5lckltYWdlQ29uZmlnIH0gZnJvbSAnLi4vY29udGFpbmVyLWltYWdlJztcblxuLy8ga2VlcCB0aGlzIGltcG9ydCBzZXBhcmF0ZSBmcm9tIG90aGVyIGltcG9ydHMgdG8gcmVkdWNlIGNoYW5jZSBmb3IgbWVyZ2UgY29uZmxpY3RzIHdpdGggdjItbWFpblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWR1cGxpY2F0ZS1pbXBvcnRzLCBpbXBvcnQvb3JkZXJcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ0Bhd3MtY2RrL2NvcmUnO1xuXG4vKipcbiAqIEEgc3BlY2lhbCB0eXBlIG9mIHtAbGluayBDb250YWluZXJJbWFnZX0gdGhhdCB1c2VzIGFuIEVDUiByZXBvc2l0b3J5IGZvciB0aGUgaW1hZ2UsXG4gKiBidXQgYSBDbG91ZEZvcm1hdGlvbiBQYXJhbWV0ZXIgZm9yIHRoZSB0YWcgb2YgdGhlIGltYWdlIGluIHRoYXQgcmVwb3NpdG9yeS5cbiAqIFRoaXMgYWxsb3dzIHByb3ZpZGluZyB0aGlzIHRhZyB0aHJvdWdoIHRoZSBQYXJhbWV0ZXIgYXQgZGVwbG95IHRpbWUsXG4gKiBmb3IgZXhhbXBsZSBpbiBhIENvZGVQaXBlbGluZSB0aGF0IHB1c2hlcyBhIG5ldyB0YWcgb2YgdGhlIGltYWdlIHRvIHRoZSByZXBvc2l0b3J5IGR1cmluZyBhIGJ1aWxkIHN0ZXAsXG4gKiBhbmQgdGhlbiBwcm92aWRlcyB0aGF0IG5ldyB0YWcgdGhyb3VnaCB0aGUgQ2xvdWRGb3JtYXRpb24gUGFyYW1ldGVyIGluIHRoZSBkZXBsb3kgc3RlcC5cbiAqXG4gKiBAc2VlICN0YWdQYXJhbWV0ZXJOYW1lXG4gKi9cbmV4cG9ydCBjbGFzcyBUYWdQYXJhbWV0ZXJDb250YWluZXJJbWFnZSBleHRlbmRzIENvbnRhaW5lckltYWdlIHtcbiAgcHJpdmF0ZSByZWFkb25seSByZXBvc2l0b3J5OiBlY3IuSVJlcG9zaXRvcnk7XG4gIHByaXZhdGUgaW1hZ2VUYWdQYXJhbWV0ZXI/OiBjZGsuQ2ZuUGFyYW1ldGVyO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihyZXBvc2l0b3J5OiBlY3IuSVJlcG9zaXRvcnkpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMucmVwb3NpdG9yeSA9IHJlcG9zaXRvcnk7XG4gIH1cblxuICBwdWJsaWMgYmluZChzY29wZTogQ29uc3RydWN0LCBjb250YWluZXJEZWZpbml0aW9uOiBDb250YWluZXJEZWZpbml0aW9uKTogQ29udGFpbmVySW1hZ2VDb25maWcge1xuICAgIHRoaXMucmVwb3NpdG9yeS5ncmFudFB1bGwoY29udGFpbmVyRGVmaW5pdGlvbi50YXNrRGVmaW5pdGlvbi5vYnRhaW5FeGVjdXRpb25Sb2xlKCkpO1xuICAgIGNvbnN0IGltYWdlVGFnUGFyYW1ldGVyID0gbmV3IGNkay5DZm5QYXJhbWV0ZXIoc2NvcGUsICdJbWFnZVRhZ1BhcmFtJyk7XG4gICAgdGhpcy5pbWFnZVRhZ1BhcmFtZXRlciA9IGltYWdlVGFnUGFyYW1ldGVyO1xuICAgIHJldHVybiB7XG4gICAgICBpbWFnZU5hbWU6IHRoaXMucmVwb3NpdG9yeS5yZXBvc2l0b3J5VXJpRm9yVGFnKGltYWdlVGFnUGFyYW1ldGVyLnZhbHVlQXNTdHJpbmcpLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgQ2xvdWRGb3JtYXRpb24gUGFyYW1ldGVyIHRoYXQgcmVwcmVzZW50cyB0aGUgdGFnIG9mIHRoZSBpbWFnZVxuICAgKiBpbiB0aGUgRUNSIHJlcG9zaXRvcnkuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHRhZ1BhcmFtZXRlck5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gY2RrLkxhenkuc3RyaW5nKHtcbiAgICAgIHByb2R1Y2U6ICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuaW1hZ2VUYWdQYXJhbWV0ZXIpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5pbWFnZVRhZ1BhcmFtZXRlci5sb2dpY2FsSWQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUYWdQYXJhbWV0ZXJDb250YWluZXJJbWFnZSBtdXN0IGJlIHVzZWQgaW4gYSBjb250YWluZXIgZGVmaW5pdGlvbiB3aGVuIHVzaW5nIHRhZ1BhcmFtZXRlck5hbWUnKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgQ2xvdWRGb3JtYXRpb24gUGFyYW1ldGVyIHRoYXQgcmVwcmVzZW50cyB0aGUgdGFnIG9mIHRoZSBpbWFnZVxuICAgKiBpbiB0aGUgRUNSIHJlcG9zaXRvcnkuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHRhZ1BhcmFtZXRlclZhbHVlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGNkay5MYXp5LnN0cmluZyh7XG4gICAgICBwcm9kdWNlOiAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmltYWdlVGFnUGFyYW1ldGVyKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuaW1hZ2VUYWdQYXJhbWV0ZXIudmFsdWVBc1N0cmluZztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RhZ1BhcmFtZXRlckNvbnRhaW5lckltYWdlIG11c3QgYmUgdXNlZCBpbiBhIGNvbnRhaW5lciBkZWZpbml0aW9uIHdoZW4gdXNpbmcgdGFnUGFyYW1ldGVyVmFsdWUnKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuIl19