UNPKG

8.21 kBJavaScriptView Raw
1"use strict";
2var _a;
3Object.defineProperty(exports, "__esModule", { value: true });
4exports.TagParameterContainerImage = void 0;
5const jsiiDeprecationWarnings = require("../../.warnings.jsii.js");
6const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
7const cdk = require("@aws-cdk/core");
8const container_image_1 = require("../container-image");
9/**
10 * A special type of {@link ContainerImage} that uses an ECR repository for the image,
11 * but a CloudFormation Parameter for the tag of the image in that repository.
12 * This allows providing this tag through the Parameter at deploy time,
13 * for example in a CodePipeline that pushes a new tag of the image to the repository during a build step,
14 * and then provides that new tag through the CloudFormation Parameter in the deploy step.
15 *
16 * @see #tagParameterName
17 */
18class TagParameterContainerImage extends container_image_1.ContainerImage {
19 constructor(repository) {
20 super();
21 this.repository = repository;
22 }
23 bind(scope, containerDefinition) {
24 try {
25 jsiiDeprecationWarnings._aws_cdk_aws_ecs_ContainerDefinition(containerDefinition);
26 }
27 catch (error) {
28 if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
29 Error.captureStackTrace(error, this.bind);
30 }
31 throw error;
32 }
33 this.repository.grantPull(containerDefinition.taskDefinition.obtainExecutionRole());
34 const imageTagParameter = new cdk.CfnParameter(scope, 'ImageTagParam');
35 this.imageTagParameter = imageTagParameter;
36 return {
37 imageName: this.repository.repositoryUriForTag(imageTagParameter.valueAsString),
38 };
39 }
40 /**
41 * Returns the name of the CloudFormation Parameter that represents the tag of the image
42 * in the ECR repository.
43 */
44 get tagParameterName() {
45 return cdk.Lazy.string({
46 produce: () => {
47 if (this.imageTagParameter) {
48 return this.imageTagParameter.logicalId;
49 }
50 else {
51 throw new Error('TagParameterContainerImage must be used in a container definition when using tagParameterName');
52 }
53 },
54 });
55 }
56 /**
57 * Returns the value of the CloudFormation Parameter that represents the tag of the image
58 * in the ECR repository.
59 */
60 get tagParameterValue() {
61 return cdk.Lazy.string({
62 produce: () => {
63 if (this.imageTagParameter) {
64 return this.imageTagParameter.valueAsString;
65 }
66 else {
67 throw new Error('TagParameterContainerImage must be used in a container definition when using tagParameterValue');
68 }
69 },
70 });
71 }
72}
73exports.TagParameterContainerImage = TagParameterContainerImage;
74_a = JSII_RTTI_SYMBOL_1;
75TagParameterContainerImage[_a] = { fqn: "@aws-cdk/aws-ecs.TagParameterContainerImage", version: "1.204.0" };
76//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFnLXBhcmFtZXRlci1jb250YWluZXItaW1hZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0YWctcGFyYW1ldGVyLWNvbnRhaW5lci1pbWFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxxQ0FBcUM7QUFFckMsd0RBQTBFO0FBTTFFOzs7Ozs7OztHQVFHO0FBQ0gsTUFBYSwwQkFBMkIsU0FBUSxnQ0FBYztJQUk1RCxZQUFtQixVQUEyQjtRQUM1QyxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0tBQzlCO0lBRU0sSUFBSSxDQUFDLEtBQWdCLEVBQUUsbUJBQXdDOzs7Ozs7Ozs7O1FBQ3BFLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUM7UUFDcEYsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLEdBQUcsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQztRQUMzQyxPQUFPO1lBQ0wsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsbUJBQW1CLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDO1NBQ2hGLENBQUM7S0FDSDtJQUVEOzs7T0FHRztJQUNILElBQVcsZ0JBQWdCO1FBQ3pCLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDckIsT0FBTyxFQUFFLEdBQUcsRUFBRTtnQkFDWixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtvQkFDMUIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDO2lCQUN6QztxQkFBTTtvQkFDTCxNQUFNLElBQUksS0FBSyxDQUFDLCtGQUErRixDQUFDLENBQUM7aUJBQ2xIO1lBQ0gsQ0FBQztTQUNGLENBQUMsQ0FBQztLQUNKO0lBRUQ7OztPQUdHO0lBQ0gsSUFBVyxpQkFBaUI7UUFDMUIsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUNyQixPQUFPLEVBQUUsR0FBRyxFQUFFO2dCQUNaLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO29CQUMxQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUM7aUJBQzdDO3FCQUFNO29CQUNMLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0dBQWdHLENBQUMsQ0FBQztpQkFDbkg7WUFDSCxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0tBQ0o7O0FBaERILGdFQWlEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGVjciBmcm9tICdAYXdzLWNkay9hd3MtZWNyJztcbmltcG9ydCAqIGFzIGNkayBmcm9tICdAYXdzLWNkay9jb3JlJztcbmltcG9ydCB7IENvbnRhaW5lckRlZmluaXRpb24gfSBmcm9tICcuLi9jb250YWluZXItZGVmaW5pdGlvbic7XG5pbXBvcnQgeyBDb250YWluZXJJbWFnZSwgQ29udGFpbmVySW1hZ2VDb25maWcgfSBmcm9tICcuLi9jb250YWluZXItaW1hZ2UnO1xuXG4vLyBrZWVwIHRoaXMgaW1wb3J0IHNlcGFyYXRlIGZyb20gb3RoZXIgaW1wb3J0cyB0byByZWR1Y2UgY2hhbmNlIGZvciBtZXJnZSBjb25mbGljdHMgd2l0aCB2Mi1tYWluXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZHVwbGljYXRlLWltcG9ydHMsIGltcG9ydC9vcmRlclxuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnQGF3cy1jZGsvY29yZSc7XG5cbi8qKlxuICogQSBzcGVjaWFsIHR5cGUgb2Yge0BsaW5rIENvbnRhaW5lckltYWdlfSB0aGF0IHVzZXMgYW4gRUNSIHJlcG9zaXRvcnkgZm9yIHRoZSBpbWFnZSxcbiAqIGJ1dCBhIENsb3VkRm9ybWF0aW9uIFBhcmFtZXRlciBmb3IgdGhlIHRhZyBvZiB0aGUgaW1hZ2UgaW4gdGhhdCByZXBvc2l0b3J5LlxuICogVGhpcyBhbGxvd3MgcHJvdmlkaW5nIHRoaXMgdGFnIHRocm91Z2ggdGhlIFBhcmFtZXRlciBhdCBkZXBsb3kgdGltZSxcbiAqIGZvciBleGFtcGxlIGluIGEgQ29kZVBpcGVsaW5lIHRoYXQgcHVzaGVzIGEgbmV3IHRhZyBvZiB0aGUgaW1hZ2UgdG8gdGhlIHJlcG9zaXRvcnkgZHVyaW5nIGEgYnVpbGQgc3RlcCxcbiAqIGFuZCB0aGVuIHByb3ZpZGVzIHRoYXQgbmV3IHRhZyB0aHJvdWdoIHRoZSBDbG91ZEZvcm1hdGlvbiBQYXJhbWV0ZXIgaW4gdGhlIGRlcGxveSBzdGVwLlxuICpcbiAqIEBzZWUgI3RhZ1BhcmFtZXRlck5hbWVcbiAqL1xuZXhwb3J0IGNsYXNzIFRhZ1BhcmFtZXRlckNvbnRhaW5lckltYWdlIGV4dGVuZHMgQ29udGFpbmVySW1hZ2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IHJlcG9zaXRvcnk6IGVjci5JUmVwb3NpdG9yeTtcbiAgcHJpdmF0ZSBpbWFnZVRhZ1BhcmFtZXRlcj86IGNkay5DZm5QYXJhbWV0ZXI7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHJlcG9zaXRvcnk6IGVjci5JUmVwb3NpdG9yeSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5yZXBvc2l0b3J5ID0gcmVwb3NpdG9yeTtcbiAgfVxuXG4gIHB1YmxpYyBiaW5kKHNjb3BlOiBDb25zdHJ1Y3QsIGNvbnRhaW5lckRlZmluaXRpb246IENvbnRhaW5lckRlZmluaXRpb24pOiBDb250YWluZXJJbWFnZUNvbmZpZyB7XG4gICAgdGhpcy5yZXBvc2l0b3J5LmdyYW50UHVsbChjb250YWluZXJEZWZpbml0aW9uLnRhc2tEZWZpbml0aW9uLm9idGFpbkV4ZWN1dGlvblJvbGUoKSk7XG4gICAgY29uc3QgaW1hZ2VUYWdQYXJhbWV0ZXIgPSBuZXcgY2RrLkNmblBhcmFtZXRlcihzY29wZSwgJ0ltYWdlVGFnUGFyYW0nKTtcbiAgICB0aGlzLmltYWdlVGFnUGFyYW1ldGVyID0gaW1hZ2VUYWdQYXJhbWV0ZXI7XG4gICAgcmV0dXJuIHtcbiAgICAgIGltYWdlTmFtZTogdGhpcy5yZXBvc2l0b3J5LnJlcG9zaXRvcnlVcmlGb3JUYWcoaW1hZ2VUYWdQYXJhbWV0ZXIudmFsdWVBc1N0cmluZyksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBDbG91ZEZvcm1hdGlvbiBQYXJhbWV0ZXIgdGhhdCByZXByZXNlbnRzIHRoZSB0YWcgb2YgdGhlIGltYWdlXG4gICAqIGluIHRoZSBFQ1IgcmVwb3NpdG9yeS5cbiAgICovXG4gIHB1YmxpYyBnZXQgdGFnUGFyYW1ldGVyTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBjZGsuTGF6eS5zdHJpbmcoe1xuICAgICAgcHJvZHVjZTogKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5pbWFnZVRhZ1BhcmFtZXRlcikge1xuICAgICAgICAgIHJldHVybiB0aGlzLmltYWdlVGFnUGFyYW1ldGVyLmxvZ2ljYWxJZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RhZ1BhcmFtZXRlckNvbnRhaW5lckltYWdlIG11c3QgYmUgdXNlZCBpbiBhIGNvbnRhaW5lciBkZWZpbml0aW9uIHdoZW4gdXNpbmcgdGFnUGFyYW1ldGVyTmFtZScpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBDbG91ZEZvcm1hdGlvbiBQYXJhbWV0ZXIgdGhhdCByZXByZXNlbnRzIHRoZSB0YWcgb2YgdGhlIGltYWdlXG4gICAqIGluIHRoZSBFQ1IgcmVwb3NpdG9yeS5cbiAgICovXG4gIHB1YmxpYyBnZXQgdGFnUGFyYW1ldGVyVmFsdWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gY2RrLkxhenkuc3RyaW5nKHtcbiAgICAgIHByb2R1Y2U6ICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuaW1hZ2VUYWdQYXJhbWV0ZXIpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5pbWFnZVRhZ1BhcmFtZXRlci52YWx1ZUFzU3RyaW5nO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVGFnUGFyYW1ldGVyQ29udGFpbmVySW1hZ2UgbXVzdCBiZSB1c2VkIGluIGEgY29udGFpbmVyIGRlZmluaXRpb24gd2hlbiB1c2luZyB0YWdQYXJhbWV0ZXJWYWx1ZScpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG4iXX0=
\No newline at end of file