Я строю конвейер CD, используя AWS CodePipeline.Я извлекаю свой шаблон YAML
из использования корзины S3 в качестве источника для конвейера, а затем помещаю его в качестве выходного артефакта, чтобы он был входом для этапа развертывания в качестве входного артефакта.
Проблема, с которой я сталкиваюсь, заключается вэтот CodePipeline зашифровывает шаблон YAML
и помещает его в хранилище артефактов S3, поэтому, когда CloudFormation просматривает входную артефакт, он находит файл, так как его имя изменяется, так как можно остановить конвейер от шифрования артефакта?
Вот мой шаблон CodePipeline CloudFormation:
Resources:
ArtifactStoreBucket:
Type: AWS::S3::Bucket
Properties:
VersioningConfiguration:
Status: Enabled
Pipeline:
Type: AWS::CodePipeline::Pipeline
Properties:
ArtifactStore:
Location: !Ref 'ArtifactStoreBucket'
Type: S3
DisableInboundStageTransitions: []
Name: !Ref 'PipelineName'
RoleArn: !GetAtt [PipelineRole, Arn]
Stages:
- Name: S3Source
Actions:
- Name: TemplateSource
ActionTypeId:
Category: Source
Owner: AWS
Provider: S3
Version: '1'
Configuration:
S3Bucket: !Ref 'S3Bucket'
S3ObjectKey: !Ref 'CFNTemplateName'
OutputArtifacts:
- Name: TemplateSource
EncryptionDisabled: true
RunOrder: '1'
- Name: DeployToTest
Actions:
- Name: CreateChangeSetTest
ActionTypeId:
Category: Deploy
Owner: AWS
Version: 1
Provider: CloudFormation
Configuration:
ChangeSetName: sample-lambda-dev
ActionMode: CHANGE_SET_REPLACE
StackName: sample-lambda-dev
Capabilities: CAPABILITY_NAMED_IAM
TemplatePath: !Sub "TemplateSource2::${CFNTemplateName}"
RoleArn: !GetAtt [CFNRole, Arn]
RunOrder: 1
- Name: DeployChangeSetTest
ActionTypeId:
Category: Deploy
Owner: AWS
Version: 1
Provider: CloudFormation
Configuration:
ChangeSetName: sample-lambda-dev
ActionMode: CHANGE_SET_EXECUTE
StackName: sample-lambda-dev
RoleArn: !GetAtt [CFNRole, Arn]
RunOrder: 2
Я убедился, что предоставляю правильный артефакт и правильные имена шаблонов.