访问资源https://queue.amazonaws.com/被拒绝在AWS Lambda函数中出错



我正在尝试使用boto3设置从AWS帐户A中的AWS Lambda到AWS帐户B中的SQS的跨帐户数据传输。以下是我所遵循的步骤。

  1. 在账户A中创建IAM角色;发送消息";访问帐户B中的SQS队列。(给定帐户B的SQS排队的ARN(
  2. 在账户A中IAM角色的信任关系中添加了AWS账户B的账户ID
  3. 将此IAM角色附加到Lambda函数,并编写了一个代码,使用SQS队列URL将消息发送到SQS队列
  4. 在帐户B中创建了一个SQS队列
  5. 在SQS队列访问策略中,我编写了一个策略,允许帐户a的lambda角色向其SQS队列发送消息

====================================================

After that when I am trying to test my lambda function, it is giving me below error.
[ERROR] ClientError: An error occurred (AccessDenied) when calling the SendMessage operation: Access to the resource https://queue.amazonaws.com/ is denied.

================================================

有人能帮忙了解一下这里出了什么问题吗?。

如果您试图在启用了专用DNS的VPC内通过boto3 Python库(例如OP的lambda(访问SQS,则可能会发生此错误。

根据AWS文件:

专用DNS不支持传统端点,如queue.amazonaws.com或us-east-2.queue.amasonaws.com.

(强调矿(

要解决此错误:

  1. 在您的专有网络中为com.amazonaws.<region>.sqs创建一个专有网络端点
  2. 将适当的服务端点URL传递给boto3.client()构造函数:
    import boto3
    client = boto3.client('sqs', endpoint_url=f'https://sqs.{region}.amazonaws.com')
    

IAM权限留给读者练习。

相关内容

  • 没有找到相关文章

最新更新