"Parameter values specified for a template which does not require them." 尝试通过 AWS cloudformation 部署一致性包时
"Parameter values specified for a template which does not require them." when trying to deploy a conformance pack via AWS cloudformation
我正在研究通过 AWS cloudformation 部署一致性包的概念证明,但我被错误“为不需要它们的模板指定的参数值”难住了。我使用的配置规则确实需要一个参数。附上代码。我还使用 cfn-lint 测试了模板,但没有收到任何 feedback/errors.
我的模板是“简单”及以下:
Parameters:
ElbPredefinedSecurityPolicySslCheckParamPredefinedPolicyName:
Default: ELBSecurityPolicy-2016-08
Type: String
Resources:
TestingConformancePack:
Type: AWS::Config::ConformancePack
Properties:
ConformancePackName: TestCP
ConformancePackInputParameters:
-
ParameterName: PredefinedPolicyName
ParameterValue: !Ref ElbPredefinedSecurityPolicySslCheckParamPredefinedPolicyName
TemplateBody: |
Resources:
ElbPredefinedSecurityPolicySslCheck:
Properties:
ConfigRuleName: elb-predefined-security-policy-ssl-check
InputParameters:
predefinedPolicyName:
Ref: ElbPredefinedSecurityPolicySslCheckParamPredefinedPolicyName
Scope:
ComplianceResourceTypes:
- AWS::ElasticLoadBalancing::LoadBalancer
Source:
Owner: AWS
SourceIdentifier: ELB_PREDEFINED_SECURITY_POLICY_SSL_CHECK
Type: AWS::Config::ConfigRule
原因是您将参数(ConformancePackInputParameters
中指定的参数)传递给不包含 Parameters
的 CloudFormation 模板(TemplateBody
中指定的参数)部分,因此不需要参数。为了解决这个问题,你需要在CloudFormation内部模板中添加一个参数,然后你可以在predefinedPolicyName
:
中引用它
以下模板适合我:
Parameters:
ElbPredefinedSecurityPolicySslCheckParamPredefinedPolicyName:
Default: ELBSecurityPolicy-2016-08
Type: String
Resources:
TestingConformancePack:
Type: AWS::Config::ConformancePack
Properties:
ConformancePackName: TestCP
ConformancePackInputParameters:
-
ParameterName: PredefinedPolicyName
ParameterValue: !Ref ElbPredefinedSecurityPolicySslCheckParamPredefinedPolicyName
TemplateBody: |
Parameters:
PredefinedPolicyName:
Type: String
Resources:
ElbPredefinedSecurityPolicySslCheck:
Properties:
ConfigRuleName: elb-predefined-security-policy-ssl-check
InputParameters:
predefinedPolicyName:
Ref: PredefinedPolicyName
Scope:
ComplianceResourceTypes:
- AWS::ElasticLoadBalancing::LoadBalancer
Source:
Owner: AWS
SourceIdentifier: ELB_PREDEFINED_SECURITY_POLICY_SSL_CHECK
Type: AWS::Config::ConfigRule
我在使用 cloudformation 制作测试用例资源时偶然发现了同样的错误。
“为不需要它们的模板指定的参数值。”
由于是测试用例,所以完全没有使用任何参数。上面的答案有助于我理解它必须对参数做一些事情。即使您没有使用任何参数,在部署 cfn 时也会传递一些参数。
默认情况下,cloudformation 还会将 env 作为参数发送,该参数需要包含在参数中。 (下面 JSON 中的代码片段)
"Parameters": {
"env": {
"Type": "String"
}
},
希望这对您有所帮助。
我正在研究通过 AWS cloudformation 部署一致性包的概念证明,但我被错误“为不需要它们的模板指定的参数值”难住了。我使用的配置规则确实需要一个参数。附上代码。我还使用 cfn-lint 测试了模板,但没有收到任何 feedback/errors.
我的模板是“简单”及以下:
Parameters:
ElbPredefinedSecurityPolicySslCheckParamPredefinedPolicyName:
Default: ELBSecurityPolicy-2016-08
Type: String
Resources:
TestingConformancePack:
Type: AWS::Config::ConformancePack
Properties:
ConformancePackName: TestCP
ConformancePackInputParameters:
-
ParameterName: PredefinedPolicyName
ParameterValue: !Ref ElbPredefinedSecurityPolicySslCheckParamPredefinedPolicyName
TemplateBody: |
Resources:
ElbPredefinedSecurityPolicySslCheck:
Properties:
ConfigRuleName: elb-predefined-security-policy-ssl-check
InputParameters:
predefinedPolicyName:
Ref: ElbPredefinedSecurityPolicySslCheckParamPredefinedPolicyName
Scope:
ComplianceResourceTypes:
- AWS::ElasticLoadBalancing::LoadBalancer
Source:
Owner: AWS
SourceIdentifier: ELB_PREDEFINED_SECURITY_POLICY_SSL_CHECK
Type: AWS::Config::ConfigRule
原因是您将参数(ConformancePackInputParameters
中指定的参数)传递给不包含 Parameters
的 CloudFormation 模板(TemplateBody
中指定的参数)部分,因此不需要参数。为了解决这个问题,你需要在CloudFormation内部模板中添加一个参数,然后你可以在predefinedPolicyName
:
以下模板适合我:
Parameters:
ElbPredefinedSecurityPolicySslCheckParamPredefinedPolicyName:
Default: ELBSecurityPolicy-2016-08
Type: String
Resources:
TestingConformancePack:
Type: AWS::Config::ConformancePack
Properties:
ConformancePackName: TestCP
ConformancePackInputParameters:
-
ParameterName: PredefinedPolicyName
ParameterValue: !Ref ElbPredefinedSecurityPolicySslCheckParamPredefinedPolicyName
TemplateBody: |
Parameters:
PredefinedPolicyName:
Type: String
Resources:
ElbPredefinedSecurityPolicySslCheck:
Properties:
ConfigRuleName: elb-predefined-security-policy-ssl-check
InputParameters:
predefinedPolicyName:
Ref: PredefinedPolicyName
Scope:
ComplianceResourceTypes:
- AWS::ElasticLoadBalancing::LoadBalancer
Source:
Owner: AWS
SourceIdentifier: ELB_PREDEFINED_SECURITY_POLICY_SSL_CHECK
Type: AWS::Config::ConfigRule
我在使用 cloudformation 制作测试用例资源时偶然发现了同样的错误。 “为不需要它们的模板指定的参数值。”
由于是测试用例,所以完全没有使用任何参数。上面的答案有助于我理解它必须对参数做一些事情。即使您没有使用任何参数,在部署 cfn 时也会传递一些参数。
默认情况下,cloudformation 还会将 env 作为参数发送,该参数需要包含在参数中。 (下面 JSON 中的代码片段)
"Parameters": {
"env": {
"Type": "String"
}
},
希望这对您有所帮助。