gpt4 book ai didi

amazon-web-services - AWS Copilot - 将导入的策略附加到任务角色

转载 作者:行者123 更新时间:2023-12-03 07:20:07 28 4
gpt4 key购买 nike

我尝试在以下场景中使用 CloudFormation AddOn 模板:

  • 服务 1创建一个 SNS 主题和一个具有发布到该主题的所有必要权限的托管策略。 SNS 主题将收集“事件”记录,然后将其分发给多个订阅者。
  • 通用代码库抽象了 SNS 的使用 - 任何需要发布事件消息的应用程序都会这样做,而不知道 SNS 正在幕后使用。
  • 服务 N 需要使用公共(public)代码库发布事件消息,并且需要任何必要的权限。

因此,服务 1 将托管策略 ARN 作为导出输出写入 AddOn 堆栈,如下所示:

Outputs:
activityPublishPolicy:
Description: "Activity Publish Policy ARN"
Value: !Ref activitySnsTopicPublishPolicy
Export:
Name: !Sub ${App}-${Env}-activity-publish-policy

然后在服务 N 中,我希望导入发布策略的 ARN 并将其附加到任务角色:

Outputs:
activityPublishAccessPolicy:
Description: "The IAM::ManagedPolicy to attach to the task role."
Value: !ImportValue
'Fn::Sub': '${App}-${Env}-activity-publish-policy'

ARN 导入得很好,并写入到服务 N 的 Cloud Formation 堆栈中;但是,任务角色不会附加托管策略。

我做了一个快速测试,看看将策略直接添加到 AddOn 堆栈是否会附加,并且确实有效。

Outputs:
activityPublishAccessPolicy:
Description: "The IAM::ManagedPolicy to attach to the task role."
Value: !Ref activityPolicy

这让我相信 Copilot 仅将 ManagedPolicies 附加到在其自己的 AddOn Stack 中创建的任务角色,但这只是猜测。

我不想在每个服务中编写新策略来执行此操作,并且如果可能的话,我不想在整个 VPC 中开放主题策略。

有更好的方法吗?谢谢!

最佳答案

这是因为 Copilot 会扫描 Addons 模板以确定您要输出的资源的类型。插件有几个“神奇”的输出。他们是:

  • 安全组
  • 托管政策
  • secret

为了检测这些输出,我们扫描模板以查找引用资源的逻辑 ID。这意味着我们目前无法派生 Fn::ImportValue 调用结果的资源类型,因为它们不引用该插件模板中定义的逻辑 ID!

很抱歉,这给您带来了问题 - 似乎您可能需要将托管策略添加到您想要授予此访问权限的每个服务的插件堆栈中。不过,我们或许可以对此做点什么,如果您能给我们一个 Github 问题,我们会很高兴,这样我们就可以优先考虑提案并收集提案的反馈。

关于amazon-web-services - AWS Copilot - 将导入的策略附加到任务角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68304189/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com