Azure DevOps - AWS CloudFormation 和参数

Azure DevOps - AWS CloudFormation and parameters

我有一个简单的 CloudFomration 模板来创建 VPC:

vpc.yaml
---
Parameters:
  CidrBlock:
    Type: String
    Description: The primary IPv4 CIDR block for the VPC

Resources:
  VPC:
    Type: "AWS::EC2::VPC"
    Properties:
      CidrBlock: !Ref "CidrBlock"
      Tags:
      - Key: "Name"
        Value: "This is the main VPC"

在我的 Azure Devops 管道中,我想使用 AWS Stack create 通过使用此 CloudFormation 模板来创建 VPC。

Azure-pipeline.yaml
---
jobs:
- job: Job1
  steps:
  - task: CloudFormationCreateOrUpdateStack@1
    inputs:
      awsCredentials: 'My-cred'
      regionName: 'ap-southeast-2'
      stackName: 'Stack1'
      templateSource: 'file'
      templateFile: 'vpc.yaml'
      templateParametersSource: inline
      templateParameters: |
        - ParameterKey: CidrBlock
          ParameterValue: '10.10.10.0/24'

显然,当我在调用 vpc.yaml 模板(如上 ^)时手动提供 CidrBlock 参数的值时,它会正常工作。但我想要做的是使用另一个文件来存储参数和值,并在 运行 连接 vpc 模板时传递它。 换句话说,我有一个 params.yaml 文件,其中我将所需的参数存储到 运行 vpc.yaml。当 运行 将 vpc.yaml 模板作为参数文件时,我该如何使用它?

params.yaml
---
parameters:
- name: CidrBlock
  value: '10.10.10.0/24'

就像我在上面的 azure-pipeline 文件中引用模板文件的方式一样,有没有类似的方法可以用来引用参数文件而不是使用 templateParametersSource: inline ?

YAML 参数文件似乎有问题 aws-cli:

https://github.com/aws/aws-cli/issues/2275

您可以使用 JSON 文件:

[
  {
    "CidrBlock": "10.10.10.0/24",
  }
]

听起来不像 Azure Bicep 或 ARM,您可以在创建参数文件时使用自己的密钥,AWS 需要一个特定的结构,您必须始终使用 ParameterKeyParameterValue 作为键。 在我的例子中,params 文件应该是这样的:

---
- ParameterKey: CidrBlock
  ParameterValue: '10.10.10.0/24'