UNPKG

4.43 kBJavaScriptView Raw
1"use strict";
2var _a;
3Object.defineProperty(exports, "__esModule", { value: true });
4exports.SnsTopic = void 0;
5const jsiiDeprecationWarnings = require("../.warnings.jsii.js");
6const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
7const iam = require("@aws-cdk/aws-iam");
8/**
9 * Use an SNS topic as a target for Amazon EventBridge rules.
10 *
11 * @example
12 * /// fixture=withRepoAndTopic
13 * // publish to an SNS topic every time code is committed
14 * // to a CodeCommit repository
15 * repository.onCommit('onCommit', { target: new targets.SnsTopic(topic) });
16 *
17 */
18class SnsTopic {
19 constructor(topic, props = {}) {
20 this.topic = topic;
21 this.props = props;
22 try {
23 jsiiDeprecationWarnings._aws_cdk_aws_events_targets_SnsTopicProps(props);
24 }
25 catch (error) {
26 if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
27 Error.captureStackTrace(error, SnsTopic);
28 }
29 throw error;
30 }
31 }
32 /**
33 * Returns a RuleTarget that can be used to trigger this SNS topic as a
34 * result from an EventBridge event.
35 *
36 * @see https://docs.aws.amazon.com/eventbridge/latest/userguide/resource-based-policies-eventbridge.html#sns-permissions
37 */
38 bind(_rule, _id) {
39 // deduplicated automatically
40 this.topic.grantPublish(new iam.ServicePrincipal('events.amazonaws.com'));
41 return {
42 arn: this.topic.topicArn,
43 input: this.props.message,
44 targetResource: this.topic,
45 };
46 }
47}
48exports.SnsTopic = SnsTopic;
49_a = JSII_RTTI_SYMBOL_1;
50SnsTopic[_a] = { fqn: "@aws-cdk/aws-events-targets.SnsTopic", version: "1.181.1" };
51//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLHdDQUF3QztBQWV4Qzs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFhLFFBQVE7SUFDbkIsWUFBNEIsS0FBaUIsRUFBbUIsUUFBdUIsRUFBRTtRQUE3RCxVQUFLLEdBQUwsS0FBSyxDQUFZO1FBQW1CLFVBQUssR0FBTCxLQUFLLENBQW9COzs7Ozs7K0NBRDlFLFFBQVE7Ozs7S0FFbEI7SUFFRDs7Ozs7T0FLRztJQUNJLElBQUksQ0FBQyxLQUFtQixFQUFFLEdBQVk7UUFDM0MsNkJBQTZCO1FBQzdCLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksR0FBRyxDQUFDLGdCQUFnQixDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQztRQUUxRSxPQUFPO1lBQ0wsR0FBRyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUTtZQUN4QixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPO1lBQ3pCLGNBQWMsRUFBRSxJQUFJLENBQUMsS0FBSztTQUMzQixDQUFDO0tBQ0g7O0FBbkJILDRCQW9CQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGV2ZW50cyBmcm9tICdAYXdzLWNkay9hd3MtZXZlbnRzJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdAYXdzLWNkay9hd3MtaWFtJztcbmltcG9ydCAqIGFzIHNucyBmcm9tICdAYXdzLWNkay9hd3Mtc25zJztcblxuLyoqXG4gKiBDdXN0b21pemUgdGhlIFNOUyBUb3BpYyBFdmVudCBUYXJnZXRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTbnNUb3BpY1Byb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBtZXNzYWdlIHRvIHNlbmQgdG8gdGhlIHRvcGljXG4gICAqXG4gICAqIEBkZWZhdWx0IHRoZSBlbnRpcmUgRXZlbnRCcmlkZ2UgZXZlbnRcbiAgICovXG4gIHJlYWRvbmx5IG1lc3NhZ2U/OiBldmVudHMuUnVsZVRhcmdldElucHV0O1xufVxuXG4vKipcbiAqIFVzZSBhbiBTTlMgdG9waWMgYXMgYSB0YXJnZXQgZm9yIEFtYXpvbiBFdmVudEJyaWRnZSBydWxlcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogICAvLy8gZml4dHVyZT13aXRoUmVwb0FuZFRvcGljXG4gKiAgIC8vIHB1Ymxpc2ggdG8gYW4gU05TIHRvcGljIGV2ZXJ5IHRpbWUgY29kZSBpcyBjb21taXR0ZWRcbiAqICAgLy8gdG8gYSBDb2RlQ29tbWl0IHJlcG9zaXRvcnlcbiAqICAgcmVwb3NpdG9yeS5vbkNvbW1pdCgnb25Db21taXQnLCB7IHRhcmdldDogbmV3IHRhcmdldHMuU25zVG9waWModG9waWMpIH0pO1xuICpcbiAqL1xuZXhwb3J0IGNsYXNzIFNuc1RvcGljIGltcGxlbWVudHMgZXZlbnRzLklSdWxlVGFyZ2V0IHtcbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IHRvcGljOiBzbnMuSVRvcGljLCBwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBTbnNUb3BpY1Byb3BzID0ge30pIHtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgUnVsZVRhcmdldCB0aGF0IGNhbiBiZSB1c2VkIHRvIHRyaWdnZXIgdGhpcyBTTlMgdG9waWMgYXMgYVxuICAgKiByZXN1bHQgZnJvbSBhbiBFdmVudEJyaWRnZSBldmVudC5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZXZlbnRicmlkZ2UvbGF0ZXN0L3VzZXJndWlkZS9yZXNvdXJjZS1iYXNlZC1wb2xpY2llcy1ldmVudGJyaWRnZS5odG1sI3Nucy1wZXJtaXNzaW9uc1xuICAgKi9cbiAgcHVibGljIGJpbmQoX3J1bGU6IGV2ZW50cy5JUnVsZSwgX2lkPzogc3RyaW5nKTogZXZlbnRzLlJ1bGVUYXJnZXRDb25maWcge1xuICAgIC8vIGRlZHVwbGljYXRlZCBhdXRvbWF0aWNhbGx5XG4gICAgdGhpcy50b3BpYy5ncmFudFB1Ymxpc2gobmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdldmVudHMuYW1hem9uYXdzLmNvbScpKTtcblxuICAgIHJldHVybiB7XG4gICAgICBhcm46IHRoaXMudG9waWMudG9waWNBcm4sXG4gICAgICBpbnB1dDogdGhpcy5wcm9wcy5tZXNzYWdlLFxuICAgICAgdGFyZ2V0UmVzb3VyY2U6IHRoaXMudG9waWMsXG4gICAgfTtcbiAgfVxufVxuIl19
\No newline at end of file