当前位置: 首页 > 知识库问答 >
问题:

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

沃宇
2023-03-14

我试图设置跨帐户数据搬迁从AWS帐户A的AWS Lambda到SQS在AWS帐户B使用boto3。以下是我遵循的步骤。

  1. 在帐户A中创建了一个IAM角色,该角色对帐户B中的SQS队列具有“SendMessage”访问权限。(给定帐户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.

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

谁能帮我弄明白这里出了什么问题?

共有1个答案

姚洲
2023-03-14

如果您试图通过boto3 Python库访问SQS,则可能会出现此错误(例如:OP的lambda)从启用专用DNS的VPC内部。

根据AWS文件:

专用DNS不支持队列等旧endpoint。亚马逊。com或us-east-2。队列亚马逊。通用域名格式。

(强调我的)

要解决此错误,请执行以下操作:

  1. Create a VPC endpoint for com.amazonaws.<region>.sqs in your VPC
  2. Pass the appropriate service endpoint URL to the boto3.client() constructor:
    import boto3
    
    client = boto3.client('sqs', endpoint_url='https://sqs.%s.amazonaws.com' % region)
    

    IAM权限留给读者作为练习。

 类似资料:
  • 我尝试了所有命令来推送我的映像docker集线器,但失败了。每次我都遇到相同的问题 请帮帮我。。。。

  • 有很多人提到这个错误,但是, 下面是为lambda()创建的执行角色: 其中

  • 我按照这个链接创建我的第一个docker映像,它成功了,现在我正试图从这个链接将这个映像推送到我的docker存储库中。但每当我试图将此图像推入存储库时,就会出现这种类型的错误。 有人能给我一些关于这个问题的提示吗?任何帮助都将不胜感激。 注意:我已成功登录docker

  • 我正在按照这个链接创建我的第一个docker映像,它成功了,现在我正在尝试从这个链接将此映像推送到我的docker存储库中。但是每当我试图将此映像推送到存储库时,我都会遇到此类错误。 注意:我已成功登录docker

  • 问题内容: 在某种程度上,当我尝试通过命令行访问MySQL时,已经设法解决了该错误: 我尝试使用此HowTo重置密码,但没有任何运气。 我已经卸载了mysql completley并重新安装了,但是仍然需要输入密码。我不知道为什么会这样! 有人可以帮我获得默认安装的MySQL吗? 环境 Fedora Core 10,完全根访问权限,安装了Apache和PHP 感谢您的任何帮助!! 编辑 对于所有想

  • 我最近才更新到新版本的forge,没有改变我的设置,当我去构建我的应用程序时,我得到了一个错误,说它找不到文件…