UNPKG

9.61 kBJavaScriptView Raw
1"use strict";
2var _a;
3Object.defineProperty(exports, "__esModule", { value: true });
4exports.BatchJob = void 0;
5const jsiiDeprecationWarnings = require("../.warnings.jsii.js");
6const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
7const iam = require("@aws-cdk/aws-iam");
8const core_1 = require("@aws-cdk/core");
9const util_1 = require("./util");
10/**
11 * Use an AWS Batch Job / Queue as an event rule target.
12 * Most likely the code will look something like this:
13 * `new BatchJob(jobQueue.jobQueueArn, jobQueue, jobDefinition.jobDefinitionArn, jobDefinition)`
14 *
15 * In the future this API will be improved to be fully typed
16 */
17class BatchJob {
18 constructor(
19 /**
20 * The JobQueue arn
21 */
22 jobQueueArn,
23 /**
24 * The JobQueue Resource
25 */
26 jobQueueScope,
27 /**
28 * The jobDefinition arn
29 */
30 jobDefinitionArn,
31 /**
32 * The JobQueue Resource
33 */
34 jobDefinitionScope, props = {}) {
35 this.jobQueueArn = jobQueueArn;
36 this.jobQueueScope = jobQueueScope;
37 this.jobDefinitionArn = jobDefinitionArn;
38 this.jobDefinitionScope = jobDefinitionScope;
39 this.props = props;
40 try {
41 jsiiDeprecationWarnings._aws_cdk_aws_events_targets_BatchJobProps(props);
42 }
43 catch (error) {
44 if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
45 Error.captureStackTrace(error, this.constructor);
46 }
47 throw error;
48 }
49 }
50 /**
51 * Returns a RuleTarget that can be used to trigger queue this batch job as a
52 * result from an EventBridge event.
53 */
54 bind(rule, _id) {
55 var _b;
56 const batchParameters = {
57 jobDefinition: this.jobDefinitionArn,
58 jobName: (_b = this.props.jobName) !== null && _b !== void 0 ? _b : core_1.Names.nodeUniqueId(rule.node),
59 arrayProperties: this.props.size ? { size: this.props.size } : undefined,
60 retryStrategy: this.props.attempts ? { attempts: this.props.attempts } : undefined,
61 };
62 if (this.props.deadLetterQueue) {
63 util_1.addToDeadLetterQueueResourcePolicy(rule, this.props.deadLetterQueue);
64 }
65 return {
66 ...util_1.bindBaseTargetConfig(this.props),
67 arn: this.jobQueueArn,
68 // When scoping resource-level access for job submission, you must provide both job queue and job definition resource types.
69 // https://docs.aws.amazon.com/batch/latest/userguide/ExamplePolicies_BATCH.html#iam-example-restrict-job-def
70 role: util_1.singletonEventRole(this.jobDefinitionScope, [
71 new iam.PolicyStatement({
72 actions: ['batch:SubmitJob'],
73 resources: [
74 this.jobDefinitionArn,
75 this.jobQueueArn,
76 ],
77 }),
78 ]),
79 input: this.props.event,
80 targetResource: this.jobQueueScope,
81 batchParameters,
82 };
83 }
84}
85exports.BatchJob = BatchJob;
86_a = JSII_RTTI_SYMBOL_1;
87BatchJob[_a] = { fqn: "@aws-cdk/aws-events-targets.BatchJob", version: "1.156.1" };
88//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmF0Y2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJiYXRjaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSx3Q0FBd0M7QUFDeEMsd0NBQWtEO0FBQ2xELGlDQUF1SDtBQXVDdkg7Ozs7OztHQU1HO0FBQ0gsTUFBYSxRQUFRO0lBQ25CO0lBQ0U7O09BRUc7SUFDYyxXQUFtQjtJQUVwQzs7T0FFRztJQUNjLGFBQXlCO0lBRTFDOztPQUVHO0lBQ2MsZ0JBQXdCO0lBRXpDOztPQUVHO0lBQ2Msa0JBQThCLEVBQzlCLFFBQXVCLEVBQUU7UUFoQnpCLGdCQUFXLEdBQVgsV0FBVyxDQUFRO1FBS25CLGtCQUFhLEdBQWIsYUFBYSxDQUFZO1FBS3pCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBUTtRQUt4Qix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQVk7UUFDOUIsVUFBSyxHQUFMLEtBQUssQ0FBb0I7Ozs7Ozs7Ozs7S0FDdkM7SUFFTDs7O09BR0c7SUFDSSxJQUFJLENBQUMsSUFBa0IsRUFBRSxHQUFZOztRQUMxQyxNQUFNLGVBQWUsR0FBMkM7WUFDOUQsYUFBYSxFQUFFLElBQUksQ0FBQyxnQkFBZ0I7WUFDcEMsT0FBTyxRQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxtQ0FBSSxZQUFLLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDNUQsZUFBZSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTO1lBQ3hFLGFBQWEsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUztTQUNuRixDQUFDO1FBRUYsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRTtZQUM5Qix5Q0FBa0MsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztTQUN0RTtRQUVELE9BQU87WUFDTCxHQUFHLDJCQUFvQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDbkMsR0FBRyxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQ3JCLDRIQUE0SDtZQUM1SCw2R0FBNkc7WUFDN0csSUFBSSxFQUFFLHlCQUFrQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtnQkFDaEQsSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDO29CQUN0QixPQUFPLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztvQkFDNUIsU0FBUyxFQUFFO3dCQUNULElBQUksQ0FBQyxnQkFBZ0I7d0JBQ3JCLElBQUksQ0FBQyxXQUFXO3FCQUNqQjtpQkFDRixDQUFDO2FBQ0gsQ0FBQztZQUNGLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUs7WUFDdkIsY0FBYyxFQUFFLElBQUksQ0FBQyxhQUFhO1lBQ2xDLGVBQWU7U0FDaEIsQ0FBQztLQUNIOztBQTFESCw0QkEyREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBldmVudHMgZnJvbSAnQGF3cy1jZGsvYXdzLWV2ZW50cyc7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnQGF3cy1jZGsvYXdzLWlhbSc7XG5pbXBvcnQgeyBOYW1lcywgSUNvbnN0cnVjdCB9IGZyb20gJ0Bhd3MtY2RrL2NvcmUnO1xuaW1wb3J0IHsgYWRkVG9EZWFkTGV0dGVyUXVldWVSZXNvdXJjZVBvbGljeSwgYmluZEJhc2VUYXJnZXRDb25maWcsIHNpbmdsZXRvbkV2ZW50Um9sZSwgVGFyZ2V0QmFzZVByb3BzIH0gZnJvbSAnLi91dGlsJztcblxuLyoqXG4gKiBDdXN0b21pemUgdGhlIEJhdGNoIEpvYiBFdmVudCBUYXJnZXRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCYXRjaEpvYlByb3BzIGV4dGVuZHMgVGFyZ2V0QmFzZVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBldmVudCB0byBzZW5kIHRvIHRoZSBMYW1iZGFcbiAgICpcbiAgICogVGhpcyB3aWxsIGJlIHRoZSBwYXlsb2FkIHNlbnQgdG8gdGhlIExhbWJkYSBGdW5jdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgdGhlIGVudGlyZSBFdmVudEJyaWRnZSBldmVudFxuICAgKi9cbiAgcmVhZG9ubHkgZXZlbnQ/OiBldmVudHMuUnVsZVRhcmdldElucHV0O1xuXG4gIC8qKlxuICAgKiBUaGUgc2l6ZSBvZiB0aGUgYXJyYXksIGlmIHRoaXMgaXMgYW4gYXJyYXkgYmF0Y2ggam9iLlxuICAgKlxuICAgKiBWYWxpZCB2YWx1ZXMgYXJlIGludGVnZXJzIGJldHdlZW4gMiBhbmQgMTAsMDAwLlxuICAgKlxuICAgKiBAZGVmYXVsdCBubyBhcnJheVByb3BlcnRpZXMgYXJlIHNldFxuICAgKi9cbiAgcmVhZG9ubHkgc2l6ZT86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiB0aW1lcyB0byBhdHRlbXB0IHRvIHJldHJ5LCBpZiB0aGUgam9iIGZhaWxzLiBWYWxpZCB2YWx1ZXMgYXJlIDHigJMxMC5cbiAgICpcbiAgICogQGRlZmF1bHQgbm8gcmV0cnlTdHJhdGVneSBpcyBzZXRcbiAgICovXG4gIHJlYWRvbmx5IGF0dGVtcHRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgc3VibWl0dGVkIGpvYlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkXG4gICAqL1xuICByZWFkb25seSBqb2JOYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFVzZSBhbiBBV1MgQmF0Y2ggSm9iIC8gUXVldWUgYXMgYW4gZXZlbnQgcnVsZSB0YXJnZXQuXG4gKiBNb3N0IGxpa2VseSB0aGUgY29kZSB3aWxsIGxvb2sgc29tZXRoaW5nIGxpa2UgdGhpczpcbiAqIGBuZXcgQmF0Y2hKb2Ioam9iUXVldWUuam9iUXVldWVBcm4sIGpvYlF1ZXVlLCBqb2JEZWZpbml0aW9uLmpvYkRlZmluaXRpb25Bcm4sIGpvYkRlZmluaXRpb24pYFxuICpcbiAqIEluIHRoZSBmdXR1cmUgdGhpcyBBUEkgd2lsbCBiZSBpbXByb3ZlZCB0byBiZSBmdWxseSB0eXBlZFxuICovXG5leHBvcnQgY2xhc3MgQmF0Y2hKb2IgaW1wbGVtZW50cyBldmVudHMuSVJ1bGVUYXJnZXQge1xuICBjb25zdHJ1Y3RvcihcbiAgICAvKipcbiAgICAgKiBUaGUgSm9iUXVldWUgYXJuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBqb2JRdWV1ZUFybjogc3RyaW5nLFxuXG4gICAgLyoqXG4gICAgICogVGhlIEpvYlF1ZXVlIFJlc291cmNlXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBqb2JRdWV1ZVNjb3BlOiBJQ29uc3RydWN0LFxuXG4gICAgLyoqXG4gICAgICogVGhlIGpvYkRlZmluaXRpb24gYXJuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBqb2JEZWZpbml0aW9uQXJuOiBzdHJpbmcsXG5cbiAgICAvKipcbiAgICAgKiBUaGUgSm9iUXVldWUgUmVzb3VyY2VcbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGpvYkRlZmluaXRpb25TY29wZTogSUNvbnN0cnVjdCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBCYXRjaEpvYlByb3BzID0ge30sXG4gICkgeyB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBSdWxlVGFyZ2V0IHRoYXQgY2FuIGJlIHVzZWQgdG8gdHJpZ2dlciBxdWV1ZSB0aGlzIGJhdGNoIGpvYiBhcyBhXG4gICAqIHJlc3VsdCBmcm9tIGFuIEV2ZW50QnJpZGdlIGV2ZW50LlxuICAgKi9cbiAgcHVibGljIGJpbmQocnVsZTogZXZlbnRzLklSdWxlLCBfaWQ/OiBzdHJpbmcpOiBldmVudHMuUnVsZVRhcmdldENvbmZpZyB7XG4gICAgY29uc3QgYmF0Y2hQYXJhbWV0ZXJzOiBldmVudHMuQ2ZuUnVsZS5CYXRjaFBhcmFtZXRlcnNQcm9wZXJ0eSA9IHtcbiAgICAgIGpvYkRlZmluaXRpb246IHRoaXMuam9iRGVmaW5pdGlvbkFybixcbiAgICAgIGpvYk5hbWU6IHRoaXMucHJvcHMuam9iTmFtZSA/PyBOYW1lcy5ub2RlVW5pcXVlSWQocnVsZS5ub2RlKSxcbiAgICAgIGFycmF5UHJvcGVydGllczogdGhpcy5wcm9wcy5zaXplID8geyBzaXplOiB0aGlzLnByb3BzLnNpemUgfSA6IHVuZGVmaW5lZCxcbiAgICAgIHJldHJ5U3RyYXRlZ3k6IHRoaXMucHJvcHMuYXR0ZW1wdHMgPyB7IGF0dGVtcHRzOiB0aGlzLnByb3BzLmF0dGVtcHRzIH0gOiB1bmRlZmluZWQsXG4gICAgfTtcblxuICAgIGlmICh0aGlzLnByb3BzLmRlYWRMZXR0ZXJRdWV1ZSkge1xuICAgICAgYWRkVG9EZWFkTGV0dGVyUXVldWVSZXNvdXJjZVBvbGljeShydWxlLCB0aGlzLnByb3BzLmRlYWRMZXR0ZXJRdWV1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmJpbmRCYXNlVGFyZ2V0Q29uZmlnKHRoaXMucHJvcHMpLFxuICAgICAgYXJuOiB0aGlzLmpvYlF1ZXVlQXJuLFxuICAgICAgLy8gV2hlbiBzY29waW5nIHJlc291cmNlLWxldmVsIGFjY2VzcyBmb3Igam9iIHN1Ym1pc3Npb24sIHlvdSBtdXN0IHByb3ZpZGUgYm90aCBqb2IgcXVldWUgYW5kIGpvYiBkZWZpbml0aW9uIHJlc291cmNlIHR5cGVzLlxuICAgICAgLy8gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2JhdGNoL2xhdGVzdC91c2VyZ3VpZGUvRXhhbXBsZVBvbGljaWVzX0JBVENILmh0bWwjaWFtLWV4YW1wbGUtcmVzdHJpY3Qtam9iLWRlZlxuICAgICAgcm9sZTogc2luZ2xldG9uRXZlbnRSb2xlKHRoaXMuam9iRGVmaW5pdGlvblNjb3BlLCBbXG4gICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBhY3Rpb25zOiBbJ2JhdGNoOlN1Ym1pdEpvYiddLFxuICAgICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgICAgdGhpcy5qb2JEZWZpbml0aW9uQXJuLFxuICAgICAgICAgICAgdGhpcy5qb2JRdWV1ZUFybixcbiAgICAgICAgICBdLFxuICAgICAgICB9KSxcbiAgICAgIF0pLFxuICAgICAgaW5wdXQ6IHRoaXMucHJvcHMuZXZlbnQsXG4gICAgICB0YXJnZXRSZXNvdXJjZTogdGhpcy5qb2JRdWV1ZVNjb3BlLFxuICAgICAgYmF0Y2hQYXJhbWV0ZXJzLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
\No newline at end of file