什么:-我正在尝试创建包含虚拟值的SSM参数。然后访问它们并在聊天机器人配置中引用它们。
一旦它被存储,我想在聊天机器人访问它。
new ssm.StringListParameter(this, 'store-slack-ssm-param', {
parameterName: "slackChannelChatbotConfiguration",
stringListValue: ['slackChannelNameTobeAddedFromConsole', 'slack channelIdFromConsole'],
});
const slackParam = new CfnParameter(this, 'access-slack-ssm-param', {
type: 'AWS::SSM::Parameter::Value<List<String>>',
default: 'slackChannelChatbotConfiguration',
})
new chatbot.SlackChannelConfiguration(this, 'chatbot-slack-notification', {
slackChannelConfigurationName: Fn.select(0, slackParam.valueAsList),
slackWorkspaceId: this.slackWorkspaceId,
slackChannelId: Fn.select(1, slackParam.valueAsList),
notificationTopics: [this.snsTopic],
})
在部署过程中显示这个错误
[ValidationError]: Unable to fetch parameters [slackChannelChatbotConfiguration] from parameter store for this account.
注意:-如果我手动存储这些ssm参数并直接在我的cdk代码中访问它们,这是有效的,只有在cdk代码中创建然后访问不起作用。
更新:根据这个https://docs.aws.amazon.com/cdk/v2/guide/get_ssm_value.html
这些方法返回令牌,而不是实际值。该值由AWS CloudFormation在部署时解析。
来自ssm的值是在部署期间解析的,所以当您创建它时无法访问,但是如果您已经有类似的现有参数,则可以使用
您不需要CfnParameter
构造—正如您发现的那样,它要求参数在部署之前存在。
简单地使用你创建的参数,如下所示:
const slackParam = new ssm.StringListParameter(this, 'store-slack-ssm-param', {
parameterName: "slackChannelChatbotConfiguration",
stringListValue: ['slackChannelNameTobeAddedFromConsole', 'slack channelIdFromConsole'],
});
new chatbot.SlackChannelConfiguration(this, 'chatbot-slack-notification', {
slackChannelConfigurationName: Fn.select(0, slackParam.stringListValue),
slackWorkspaceId: this.slackWorkspaceId,
slackChannelId: Fn.select(1, slackParam.stringListValue),
notificationTopics: [this.snsTopic],
});
参考:https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ssm.StringListParameter.html stringlistvalue-1