簡體   English   中英

AWS Copilot - 將導入的策略附加到任務角色

[英]AWS Copilot - Attach Imported Policy to Task Role

我正在嘗試在以下場景中使用 CloudFormation AddOn 模板:

  • 服務 1 創建一個 SNS 主題和一個托管策略,該策略具有向其發布所需的所有權限。 SNS 主題會收集“活動”記錄,然后將它們分發給多個訂閱者。
  • 一個公共代碼庫抽象了 SNS 的使用 - 任何需要發布活動消息的應用程序都不會知道 SNS 正在被使用。
  • 服務 N 需要使用公共代碼庫發布活動消息,並且需要任何必要的權限。

因此,服務 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 會掃描插件模板以確定您輸出的資源類型。 插件有幾個“神奇”的輸出。 他們是:

  • 安全組
  • 托管策略
  • 秘密

為了檢測這些輸出,我們掃描模板以查找引用資源的邏輯 ID。 這意味着我們目前沒有辦法推導出Fn::ImportValue調用結果的資源類型,因為它們不引用該插件模板中定義的邏輯 ID!

很抱歉,這給您帶來了問題——似乎您可能需要將托管策略添加到您要授予此訪問權限的每個服務的插件堆棧中。 不過,這是我們可能能夠做的事情,如果你能幫我們解決 Github 問題,我們會很高興,這樣我們就可以優先考慮並收集對提案的反饋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM