首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法从此帐户的参数存储中获取参数(参数值

无法从此帐户的参数存储中获取参数(参数值
EN

Stack Overflow用户
提问于 2018-08-19 21:40:29
回答 4查看 9.1K关注 0票数 5

我得到了错误:

代码语言:javascript
运行
复制
$ aws cloudformation deploy --template-file ./packaged-stack.yml --stack-name mystackname --capabilities CAPABILITY_NAMED_IAM`


An error occurred (ValidationError) when calling the CreateChangeSet operation: Unable to fetch parameters [XXX] from parameter store for this account.

这里出了什么问题?

奇怪的是,XXX是来自参数存储的值,所以CloudFormation实际上能够获得值……但它似乎试图从参数中读取,该参数的名称是它获得的值。我想我的用法是不正确的?

代码语言:javascript
运行
复制
AWSTemplateFormatVersion : '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: '...'

Parameters:
  BaseStack:
    Type: AWS::SSM::Parameter::Value<String>
    Default: /some/thing/baseStack

在本例中,存储在/some/thing/baseStack中的值为XXX

EN

回答 4

Stack Overflow用户

发布于 2019-10-09 07:51:36

当您将参数从一个模板传递到另一个模板时,通常会发生这种情况。

代码语言:javascript
运行
复制
Template 1 has parameter reading from SSM store and passing it to another template
代码语言:javascript
运行
复制
Parameters:
  SNSTopicArnParam:
    Description: Arn of the SNS topic
    Type: AWS::SSM::Parameter::Value<String>
    Default: /arn/topics/topic1
Resources:
  CallOtherStack:
    Type: AWS::CloudFormation::Stack
    Properties:
      TemplateURL: someurl/template2.yaml
      Parameters:
        SNSTopicArn: !Ref SNSTopicArnParam

模板2具有以下参数和资源(将出现Unable to fetch parameters错误)。

代码语言:javascript
运行
复制
Parameters:
  SNSTopicArnFromCaller:
    Description: Arn of the SNS topic
    Type: AWS::SSM::Parameter::Value<String>
    Default: /arn/topics/topic1
Resources:
  NewSubscription:
    Type: AWS::SNS::Subscription
    Properties:
      Parameters:
        TopicArn: !Ref SNSTopicArnFromCaller
        Endpoint: someValue
        Protocol: SQS

这是因为模板one的值为/ arn /topic/topic1(主题的arn ),并在调用它时将arn值传递给template2。并且template2将该值的类型作为另一个SSM参数。

要解决此问题,template2参数类型应仅为实际参数值的类型。在这种情况下,它应该是字符串

因此,模板2应该按如下所示进行更新以正常工作

代码语言:javascript
运行
复制
Parameters:
  SNSTopicArnFromCaller:
    Description: Arn of the SNS topic
    Type: String
Resources:
  NewSubscription:
    Type: AWS::SNS::Subscription
    Properties:
      Parameters:
        TopicArn: !Ref SNSTopicArnFromCaller
        Endpoint: someValue
        Protocol: SQS
票数 9
EN

Stack Overflow用户

发布于 2019-01-03 21:31:01

我们遇到了类似的问题,并发现在更新参数的定义时遇到了这个问题。

我们的情况是:

已使用类型为String default Dev的参数StageName创建堆栈。

然后,我们转到使用参数存储,并使用参数存储路径将参数定义更新为AWS::SSM:: parameter ::Value和default类型。

当调用更新堆栈时,Cloudformation正在读取现有值' Dev‘,并将其作为默认值传递给参数,因此它会在路径Dev处查找参数存储值。显然,这并不存在,并导致了错误:

调用CreateChangeSet操作时出错(ValidationError):无法从此帐户的参数存储区获取参数Dev。

对我们来说,最简单的修复方法是删除堆栈并重新创建,但可以看到这对其他人来说是一个问题。如果有人有更好的“升级”方法,那将是很好的发现。

我们对Lambda使用sam deploy进行部署,所以不确定这是否适用于其他堆栈的update-stack。

更新**

我尝试通过create/update stack重新创建它,但失败了,所以看起来这个问题仅限于pacakge/deploy升级机制

票数 8
EN

Stack Overflow用户

发布于 2019-11-23 06:33:40

更新堆栈似乎不会更新堆栈参数的默认值。如果要更新默认值,则需要重命名参数,然后更新堆栈。一旦成功,您可以立即将该参数重新命名。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51918238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档