小编Fab*_*oni的帖子

如何授予向不同 AWS 账户中的 SQS 队列发送消息的权限?

我正在编写一个 Python 应用程序,该应用程序从帐户 A 中提取数据并将其发送到帐户 B 中的 SQS 队列。执行 lambda 函数时,它返回以下错误:

"errorMessage": "调用 SendMessage 操作时发生错误 (AccessDenied):访问资源https://eu-central-1.queue.amazonaws.com/被拒绝。",

如果我在同一帐户中使用 SQS 队列,它就可以工作。

我正在使用无服务器框架,我需要在跨账户角色中使用ExternalId 。

我做了什么:

在账户 A(执行 Lambda 函数的地方)

以下功能是使用Serverless框架部署的:

  TotalCollectorWeekToDate:
    handler: environment.total_wtd_summary_handler
    module: collectors
    memorySize: 128
    role: arn:aws:iam::<ACCOUNT_A>:role/FunctionsLambdaRole
    timeout: 30
    events:
      - schedule:
          rate: cron(0 7 * * ? *)
          enabled: true
    environment:
      COST_DATA_SQS_QUEUE_URL: https://sqs.eu-central-1.amazonaws.com/<ACCOUNT_B>/prod-analyser-queue
Run Code Online (Sandbox Code Playgroud)

角色

Resources:
  FunctionsLambdaRole:
    Type: AWS::IAM::Role
    Properties:
      RoleName: FunctionsLambdaRole
      AssumeRolePolicyDocument:
        Statement:
          - Effect: Allow
            Principal:
              Service:
                - lambda.amazonaws.com
            Action: "sts:AssumeRole"
      Path: /
      ManagedPolicyArns: …
Run Code Online (Sandbox Code Playgroud)

python amazon-sqs amazon-iam serverless-framework

2
推荐指数
1
解决办法
2万
查看次数