如何解决是否可以在AWS的option_settings上使用Ref函数?
我正在使用Elastic Beanstalk通过SQS部署工人层环境。
在我的.ebextensions
中,有以下文件:
option_settings:
aws:elasticbeanstalk:sqsd:
WorkerQueueURL:
Ref: WorkerQueue
HttpPath: "/sqs/"
InactivityTimeout: 1650
VisibilityTimeout: 1680
MaxRetries: 1
Resources:
WorkerQueue:
Type: AWS::SQS::Queue
Properties:
QueueName: "tpc-clients-aws-queue"
VisibilityTimeout: 1680
但是,此操作失败,并显示以下错误:
其中一个配置文件中的“ option_settings”验证失败。更多详细信息。
无效的选项值:'Ref = WorkerQueue'(名称空间:'aws:elasticbeanstalk:sqsd,OptionName:'WorkerQueueURL'):值不满足正则表达式:'^ $ | ^ http(s)?://。 + $'[以http开头的有效非空URL]
似乎option_settings
中不能使用AWSCloudFormation Ref function。有人可以确认是否是这种情况吗?
我在option_settings
中使用诸如this answer的mount-config.config
和this question中的内在函数在StackOverflow上看到了一些代码片段。那么,这些示例是否使用了无效的语法?还是可以在option_settings
上使用某些内在功能或特定资源?
最后,如果我不能使用Ref函数,该怎么办?
解决方法
是的,您可以在.ebextentions
中进行引用,但是语法有点奇怪。它显示在文档here中。
您可以尝试以下方法(注意各种引号):
option_settings:
aws:elasticbeanstalk:sqsd:
WorkerQueueURL: '`{"Ref" : "WorkerQueue"}`'
HttpPath: "/sqs/"
InactivityTimeout: 1650
VisibilityTimeout: 1680
MaxRetries: 1
Resources:
WorkerQueue:
Type: AWS::SQS::Queue
Properties:
QueueName: "tpc-clients-aws-queue"
VisibilityTimeout: 1680
如果在输出中导出ImportValue
,也可以使用WorkerQueue
。
更新
要检查获得的值,可以将其设置为env变量,然后在EB控制台中进行检查:
option_settings:
aws:elasticbeanstalk:application:environment:
SQS_NAME: '`{"Ref" : "WorkerQueue"}`'
,
在深入探讨此问题后,我发现了一些发现,希望与以后的读者分享。
Ref
可用于option_settings
正如@Marcin回答所指出的那样,Ref
内在函数可以使用。语法不同:
option_settings
在'`{"Ref" : "ResourceName"}`'
上使用Ref
(环境变量)
上面的一个用例是将队列URL存储在环境变量中,如下所示:
aws:elasticbeanstalk:application:environment
请注意,如果您检查Elastic Beanstalk控制台(“环境”>“配置”>“软件”),则不会看到实际值:
在option_settings:
aws:elasticbeanstalk:application:environment:
QUEUE_URL: '`{"Ref" : "WorkerQueue"}`'
上使用Ref
如果您尝试使用以下设置:
aws:elasticbeanstalk:sqsd:WorkerQueueURL
它将失败:
无效的选项值:'`{“ Ref”:“ WorkerQueue”}`'(名称空间:'aws:elasticbeanstalk:sqsd',OptionName:'WorkerQueueURL'):值不满足正则表达式:'^ $ | ^ http (s)?://.+$'[有效的非空URL,以http(s)开头]
此配置选项似乎不接受引用。
您可以仅更新Elastic Beanstalk创建的队列,而不是创建新队列并将其分配给sqs守护程序:
option_settings:
aws:elasticbeanstalk:sqsd:
WorkerQueueURL: '`{"Ref" : "WorkerQueue"}`'
HttpPath: "/sqs/"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。