Отправить исходный код из конвейера в другой шаблон в облачной информации - PullRequest
0 голосов
/ 06 марта 2020

Я пытаюсь реализовать 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\" ] } }"

В этот момент мне интересно, возможно ли то, чего я пытаюсь достичь, и правильно ли я это делаю.

Может кто-нибудь мне помочь,

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...