Я пытаюсь реализовать AWS::CloudFormation::Stack
в моем коде, чтобы избежать повторения кода, кратного разу. (в данном случае оповещение в облаке для каждой лямбды)
До этого изменения, которое я делаю, у меня были свои "тревоги. json" в одном из действий на AWS::CodePipeline::Pipeline
, и оно работало правильно.
Но файл становится беспорядочным, так как у меня 15 одинаковых сигналов тревоги, просто меняются имена лямбда-имен, на которые нужно перейти. поэтому для этого у меня была идея создать файл с одним сигналом; который получает лямбда-имя в качестве параметра.
Таким образом, это стало моим сомнением, в AWS::CloudFormation::Stack
TemplateURL
должно быть S3
местоположение, но я могу делать что-то не так, потому что ошибка, которую я получаю, говорит, что TemplateURL must be an Amazon S3 URL.
поэтому, чтобы добиться этого, я делаю следующее: json, что у меня есть сигнал тревоги, я добавил новый параметр
"SourceCodeS3":
{
"Description": "Sourcecode",
"Type": "String",
"ConstraintDescription": "Source code Location in s3"
}
, а затем в том же файле у меня есть стек как
"stackAlarm":
{
"Type" : "AWS::CloudFormation::Stack",
"Properties" : {
"Parameters" : {"Name" : {"Ref": "lambda"} },
"TemplateURL" : {
"Fn::ImportValue": { "Fn::Sub": "${SourceCodeS3}/AWSAlarms/lambdaAlarm.json" }
},
"TimeoutInMinutes" : 20
}
}
Так что в конвейере у меня есть action deploy
, как показано ниже:
{
"ActionTypeId" : {
"Category" : "Deploy",
"Owner" : "AWS",
"Provider" : "CloudFormation",
"Version" : "1"
},
"Configuration" : {
"ActionMode": "REPLACE_ON_FAILURE",
"StackName": "RawDataApplication",
"Capabilities": "CAPABILITY_IAM,CAPABILITY_NAMED_IAM",
"ChangeSetName": "code-pipeline-update",
"RoleArn": "arn",
"TemplatePath": "BuildArtifact::lambdas.json", //This calls properly
"ParameterOverrides": "{\"Environment\": \"Internal\", \"SourceCodes3\" : \"BuildArtifact::AWS\" }"
},
"Name" : "namehere",
"InputArtifacts" : [{
"Name": "BuildArtifact"
}],
"Region" : {"Ref": "AWS::Region"},
"RoleArn" : "arn",
"RunOrder" : 1
}
Расположение файла $AWS/AWSAlarms/lambdaAlarm.json
Это странно, потому что я получаю две разные ошибки: 1 в конвейере: Parameters: [SourceCodeS3] must have values
, что заставляет меня думать, что я ничего не посылаю 2 в облачной информации: если я go к фактической ошибке и go к событию, которое я вижу : TemplateURL must be an Amazon S3 URL.
, что, вероятно, потому что пусто
В дополнение к этому я попытался в файле buildspec
вернуть артефакт, который является файлом. но это не сработало. Я также попытался получить доступ к файлу, используя sourceCode
, добавив его в InputArtifacts
, а затем к ParameterOverrides
"InputArtifacts" :
[{
"Name": "BuildArtifact"
},{
"Name": "SourceCode"
}]
"ParameterOverrides": "{\"Environment\": \"Internal\", \"SourceCodes3\" : \"BuildArtifact::AWS\" }"
, а также используя команду get attr
"ParameterOverrides": "{\"Environment\": \"Internal\", \"SourceCodes3\" : { \"Fn::GetArtifactAtt\" : [ \"SourceCode\", \"Name\" ] } }"
В этот момент мне интересно, возможно ли то, чего я пытаюсь достичь, и правильно ли я это делаю.
Может кто-нибудь мне помочь,
Спасибо.