@aws-cdk/aws-ecs
Version:
The CDK Construct Library for AWS::ECS
68 lines • 7.95 kB
JavaScript
;
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