We have a helper method in our CDK library (based on Amazon.CDK.Lib 2.28.1) to establish a CodePipeline notification rule to SNS topic that delivers events to a Microsoft Teams channel via Lambda function.
internal static void ToMicrosoftTeams(CodePipelineNotifierProps props)
{
var topic = EstablishEventsTopic(props);
props.Pipeline.NotifyOnExecutionStateChange("NotifyOnExecutionStateChange", topic);
// Pull the lamdda function python code embedded in assembly.
using var fileStream = Assembly.GetExecutingAssembly().GetManifestResourceStream("CdkLibrary.Lambda.CodePipeline_events_MicrosoftTeams.py");
using var streamReader = new StreamReader(fileStream);
var lambdaCode = streamReader.ReadToEnd();
var funcName = $"{props.ProductName}-{props.PipelineName}-events-to-teams-{props.Environment}";
var lambdaFunc = new Function(props.Pipeline, funcName,
new FunctionProps
{
FunctionName = funcName,
Runtime = Runtime.PYTHON_3_9,
// Inserting code as raw string; resulting code file will default as index.py.
// Function lambda_hanlder()
Handler = "index.lambda_handler",
Code = Code.FromInline(lambdaCode),
Environment = new Dictionary<string, string>
{
{ "TeamsChannelUrl", props.TeamsChannelUrl}
}
});
topic.AddSubscription(new LambdaSubscription(lambdaFunc));
}
private static Topic EstablishEventsTopic(CodePipelineNotifierProps props)
{
string topicName = $"{props.ProductName}-{props.PipelineName}-events-{props.Environment}";
return new Topic(props.Pipeline, topicName, new TopicProps
{
DisplayName = props.PipelineName + " events",
TopicName = topicName
});
}
This setup fine in our testing. However today in deploying a new environment, there seem to be a new error encountered on creating the notification rule.
AppService-stack | 3/10 | 2:59:02 pm | CREATE_FAILED | AWS::CodeStarNotifications::NotificationRule | AppService-pipeline-dev/AppService-pipeline-dev/NotifyOnExecutionStateChange (AppServicepipelinedevNotifyOnExecutionStateChangeE355A12F) Resource handler returned message: "Invalid request provided: AWS::CodeStarNotifications::NotificationRule" (RequestToken: <GUID>, HandlerErrorCode: InvalidRequest)
AppService-stack | 3/10 | 2:59:03 pm | CREATE_FAILED | AWS::IAM::Role | AppService-pipeline-dev/AppService-pipeline-dev/AppService-pipeline-events-to-teams-dev/ServiceRole (AppServicepipelinedevAppServicepipelineeventstoteamsdevServiceRoleDE6A960E) Resource creation cancelled
Why has this been considered an invalid request?