В шаблоне Cloudformation я определяю два сегмента S3.
Bucket1: Type: AWS::S3::Bucket Properties: … Bucket2: Type: AWS::S3::Bucket Properties: … Outputs: Bucket1: Description: S3 Bucket Value: !Ref Bucket1 Export: Name: !Sub «${AWS::StackName}:Bucket1» Bucket2: Description: S3 Bucket Value: !Ref Bucket2 Export: Name: !Sub «${AWS::StackName}:Bucket2»
Я использую эти экспортированные сегменты в двух разных шаблонах облачной информации.
Шаблон 1
Parameters: LoaderCodeBucket: Type: String Resources: MyLambdaFunction: Type: AWS::Lambda::Function Properties: Code: S3Bucket: Fn::ImportValue: !Sub «${LoaderCodeBucket}:Bucket1»
Шаблон 2
Parameters: ProcessorCodeBucket: Type: String Resources: MyOtherLambdaFunction: Type: AWS::Lambda::Function Properties: Code: S3Bucket: Fn::ImportValue: !Sub «${ProcessorCodeBucket}:Bucket2»
Шаблон 1 проходит aws cloudformation validate-template —template-body …, а шаблон 2 не проходит из-за
Ошибка шаблона: атрибут в Fn :: ImportValue не должен зависеть от каких-либо ресурсов, импортированных значений или Fn :: GetAZ.
Единственное отличие состоит в том, что лямбда-функция в шаблоне 2 используется в приложении аналитики aws, которое также определено в шаблоне 2.
Я точно знаю, что проблемы возникают из-за S3 Bucket, потому что, когда я удаляю этот раздел кода, он проходит проверку.
Я использую этот сайт, чтобы попытаться отладить эту проблему, но, похоже, ни один из вопросов не дает ответа на эту конкретную проблему.
Это в том же регионе / той же учетной записи.
Мой вопрос: почему этот конкретный раздел кода (шаблон 2) выдает ошибку шаблона, когда шаблон 1 проходит без ошибок?
Куда присваивается ProcessorCodeBucket? Вероятно, разница в том, как заполняется ProcessorCodeBucket, и как заполняется LoaderCodeBucket — person DanSchneiderNA schedule 02.02.2021
Что вы имеете в виду, как это назначается? Корзины заполняются из внешнего репо, которое загружает zip-файл с кодом, который находится во внешнем репо. Обе корзины заполняются из одного и того же внешнего репо. — person DanSchneiderNA schedule 02.02.2021
Источник: