簡體   English   中英

從lambda賬戶A發送消息到賬戶B的SQS

[英]Send message from lambda account A to an SQS of account B

我需要從 lambda 賬戶 A 發送消息到另一個賬戶 B 的 SQS。

在帳戶 B 中,我創建了這樣的 sq:

Resources:
    SampleSqs:
      Type: "AWS::SQS::Queue"
      Properties:
        QueueName: sample-sqs-service-queue.fifo
        FifoQueue: true
        VisibilityTimeout: 400
        ContentBasedDeduplication: true

並將訪問角色策略創建為:

    SqsRole:
      Type: AWS::IAM::Role
      Properties:
        RoleName: sample-sqs-Account-Role
        AssumeRolePolicyDocument:
          Version: '2012-10-17'
          Statement:
            - Effect: Allow
              Principal:
                AWS:
                  - arn:aws:iam::<Account-A>:root
              Action: sts:AssumeRole
        ManagedPolicyArns:
          - arn:aws:iam::aws:policy/AmazonSQSFullAccess

我還嘗試將 sqs 隊列添加為語句部分下的資源,但在部署時失敗並顯示以下消息:

SqsRole - 具有禁止的字段資源(服務:AmazonIdentityManagement;狀態代碼:400;錯誤代碼:MalformedPolicyDocument;

在帳戶 A 中,我試圖通過導入隊列 url 來訪問帳戶 B sqs SampleSqs,但我的訪問被拒絕,帳戶 A 的代碼:

  iamRoleStatements:
    - Effect: Allow
      Action:
        - sts:AssumeRole
      Resource:
         - arn:aws:iam::$<AccountB>:role/sample-sqs-Account-Role

試圖通過我的代碼中的 url 訪問該 sqs 但訪問被拒絕。

我對 aws 和無服務器框架很陌生,有人可以幫助我在兩個接口中設置我需要的無服務器代碼設置,以使帳戶 B sqs 隊列可以訪問帳戶 A。

我嘗試將 sqs 隊列作為資源添加到 sqsRole 的語句部分下,但在部署時失敗並顯示以下消息:

SqsRole - 具有禁止的字段資源(服務:AmazonIdentityManagement;狀態代碼:400;錯誤代碼:MalformedPolicyDocument;

您是否檢查過錯誤的亞馬遜文檔: https://aws.amazon.com/premiumsupport/knowledge-center/iam-principal-policy/

更重要的是,我不知道你在這里的確切情況,但我認為與其在帳戶中創建一個完整的角色被假定為訪問 sqs,不如通過更改 sqs 上的策略來簡單地授予必要的權限會更容易,也可能更合適(資源策略)。

這里有非常容易理解的直接解決此用例的示例: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-basic-examples-of-sqs-policies.html

暫無
暫無

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

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