【发布时间】:2015-04-12 14:31:43
【问题描述】:
我的弹性 beanstalk 应用程序中需要一个队列,因此我在 .ebextensions/app.conf 中使用这个 sn-p 创建队列和队列策略:
Resources:
BackgroundTaskQueue:
Type: "AWS::SQS::Queue"
AllowWorkerSQSPolicy:
Type: "AWS::SQS::QueuePolicy"
Properties:
Queues:
-
Ref: "BackgroundTaskQueue"
PolicyDocument:
Version: "2008-10-17"
Id: "PublicationPolicy"
Statement:
-
Sid: "Allow-Create-Task"
Effect: "Allow"
Principal:
AWS: "*"
Action:
- "sqs:SendMessage"
Resource:
Fn::GetAtt:
- "BackgroundTaskQueue"
- "Arn"
很遗憾,我找不到在自动扩展组中引用我的 EC2 实例的实例配置文件的方法。 (目前队列向世界开放)我尝试了两种方法:
-
读取配置:
Principal: AWS: Fn::GetOptionSetting: OptionName: "IamInstanceProfile"
据我所知,OptionName 总是从 aws:elasticbeanstalk:customoption 命名空间中检索,但 IamInstanceProfile 是在 aws:autoscaling:launchconfiguration 命名空间中定义的。 -> 运气不好
-
从实际
AWSEBAutoScalingLaunchConfiguration资源中读取:Principal: AWS: Fn::GetAtt: - "AWSEBAutoScalingLaunchConfiguration" - "IamInstanceProfile"
此方法失败,因为属性IamInstanceProfile 未公开。
有没有人想办法让这样的政策发挥作用? 有谁知道如何指示 GetOptionSetting 在不同的命名空间中查找? 有人找到了获取实例配置文件的方法吗?
【问题讨论】:
标签: amazon-web-services amazon-ec2 amazon-elastic-beanstalk