@@ -4,7 +4,6 @@ import * as cdk from 'aws-cdk-lib';
4
4
import * as events from 'aws-cdk-lib/aws-events' ;
5
5
import * as targets from 'aws-cdk-lib/aws-events-targets' ;
6
6
import * as sns from 'aws-cdk-lib/aws-sns' ;
7
- import * as subscriptions from 'aws-cdk-lib/aws-sns-subscriptions' ;
8
7
import * as sfn from 'aws-cdk-lib/aws-stepfunctions' ;
9
8
import * as tasks from 'aws-cdk-lib/aws-stepfunctions-tasks' ;
10
9
import { Construct } from 'constructs' ;
@@ -35,18 +34,26 @@ export class CodePipelineExecutionStateChangeNotificationStack extends cdk.Stack
35
34
. digest ( 'hex' ) ;
36
35
37
36
// 👇 SNS Topic for notifications
38
- const topic : sns . Topic = new sns . Topic ( this , 'CodePipelineNotificationTopic ' , {
39
- topicName : `codepipeline-execution-state-change- notification-${ random } -topic` ,
37
+ const topic : sns . Topic = new sns . Topic ( this , 'NotificationTopic ' , {
38
+ topicName : `codepipeline-execution-state-notification-change -${ random } -topic` ,
40
39
displayName : 'CodePipeline Execution state change Notification Topic' ,
41
40
} ) ;
42
41
42
+ // const secret = cdk.SecretValue.secretsManager('my-email-array-secret');
43
+ // const emails = JSON.parse(secret.unsafeUnwrap()) as string[];
44
+
43
45
// Subscribe an email endpoint to the topic
44
- for ( const email of props . notifications . emails ?? [ ] ) {
45
- topic . addSubscription ( new subscriptions . EmailSubscription ( email ) ) ;
46
+ const emails = props . notifications . emails ?? [ ] ;
47
+ for ( const [ index , value ] of emails . entries ( ) ) {
48
+ new sns . Subscription ( this , `SubscriptionEmail${ index . toString ( ) . padStart ( 3 , '0' ) } ` , {
49
+ topic,
50
+ protocol : sns . SubscriptionProtocol . EMAIL ,
51
+ endpoint : value ,
52
+ } ) ;
46
53
}
47
54
48
55
// Subscribe a HTTP endpoint (Slack Webhook) to the topic
49
- //topic.addSubscription(new subs.UrlSubscription('https://hooks.slack.com/services/YOUR/SLACK/WEBHOOK'));
56
+ // topic.addSubscription(new subs.UrlSubscription('https://hooks.slack.com/services/YOUR/SLACK/WEBHOOK'));
50
57
51
58
const initPipelineStateEmojisDefinition : sfn . Pass = new sfn . Pass ( this , 'InitPipelineStateEmojiDefinition' , {
52
59
result : sfn . Result . fromObject ( [
0 commit comments