错误 [验证错误]: 无法从参数存储获取参数 [/route53resolver/query-log-id]
我在尝试使用一个来自其他账户的共享参数时,遇到了以下错误。
❌ SensorsRootHub-egress-stack failed: Error [ValidationError]: Unable to fetch parameters [/route53resolver/query-log-id] from parameter store for this account.
at Request.extractError (/usr/local/lib/node_modules/aws-cdk/lib/index.js:376:46692)
at Request.callListeners (/usr/local/lib/node_modules/aws-cdk/lib/index.js:376:91437)
at Request.emit (/usr/local/lib/node_modules/aws-cdk/lib/index.js:376:90885)
at Request.emit (/usr/local/lib/node_modules/aws-cdk/lib/index.js:376:199281)
at Request.transition (/usr/local/lib/node_modules/aws-cdk/lib/index.js:376:192833)
at AcceptorStateMachine.runTo (/usr/local/lib/node_modules/aws-cdk/lib/index.js:376:157705)
at /usr/local/lib/node_modules/aws-cdk/lib/index.js:376:158035
at Request.<anonymous> (/usr/local/lib/node_modules/aws-cdk/lib/index.js:376:193125)
at Request.<anonymous> (/usr/local/lib/node_modules/aws-cdk/lib/index.js:376:199356)
at Request.callListeners (/usr/local/lib/node_modules/aws-cdk/lib/index.js:376:91605) {
code: 'ValidationError',
time: 2024-03-10T14:41:14.406Z,
requestId: 'a8081114-6ede-4867-9c72-4032284d0490',
statusCode: 400,
retryable: false,
retryDelay: 788.1716239431858
}
根据CloudFormation文档的说明:对于由其他AWS账户共享的SSM参数,必须输入完整的参数ARN。
但是,当我尝试引用这个参数的完整ARN时,却出现了以下错误:
jsii.errors.JavaScriptError:
@jsii/kernel.RuntimeError: Error: Parameter names must be fully qualified (if they include "/" they must also begin with a "/"): arn:aws:ssm:eu-west-1:402736836567:parameter/route53resolver/query-log-id
at Kernel._Kernel_ensureSync (/tmp/tmpe5jnm3bc/lib/program.js:10491:23)
at Kernel.sinvoke (/tmp/tmpe5jnm3bc/lib/program.js:9876:102)
at KernelHost.processRequest (/tmp/tmpe5jnm3bc/lib/program.js:11696:36)
at KernelHost.run (/tmp/tmpe5jnm3bc/lib/program.js:11656:22)
at Immediate._onImmediate (/tmp/tmpe5jnm3bc/lib/program.js:11657:46)
at process.processImmediate (node:internal/timers:476:21)
代码如下:
vpc: IVpc
query_log_id = ssm.StringParameter.value_for_string_parameter(
self, parameter_name="/route53resolver/query-log-id"
)
route53resolver.CfnResolverQueryLoggingConfigAssociation(
self,
id="QueryLogConfigAssociation",
resolver_query_log_config_id=query_log_id,
resource_id=vpc.vpc_id
)
我尝试通过命令行工具来获取这个参数,只有在使用完整的ARN值时才成功,否则我会收到在调用GetParameter操作时发生错误(ParameterNotFound)
的提示。
我遗漏了什么呢?
1 个回答
0
根据CloudFormation 的文档,目前这项功能是不支持的:
现在,CloudFormation 不支持跨账户访问 SSM 参数。
你提到的文档是关于 CloudFormation 参数类型的,但这和 CDK 在生成对 SSM 参数的引用时使用的方式不一样。