无法使用AWS CDK从SSM获取参数?



什么:-我正在尝试创建包含虚拟值的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

最新更新