我正在使用PHP中的AWS SDK与SQS队列进行通信.目前,队列中只包含简单的测试消息.我试图从队列中读取下10条消息.为此,我将MaximumNumberOfMessages设置为10,并将WaitTimeSeconds设置为20.
我对此的理解应该是SqsClient将连接并消耗来自队列的消息,直到它具有消息数(10)或达到超时(20)秒.
然而,客户端几乎立即返回,只有3-4条消息(现在队列中有+20条消息).当只有4-5条消息时,它只返回一条消息.
我还将VisibilityTimeout设置为1秒,并且没有在循环中运行测试脚本,只是从CLI手动触发.
我传递给SqsClient receiveMessage的数组是:
[
'QueueUrl' => $this->uri,
'MaxNumberOfMessages' => 10,
'VisibilityTimeout' => 1,
'WaitTimeSeconds' => 20,
]
Run Code Online (Sandbox Code Playgroud)
任何想法为什么呼叫不至少等待整整20秒(对于少量队列消息),而不是返回多于几条消息(对于更完整的队列)?
谢谢
我想将我的代码部署到EC2实例,但我不想在AWS Key和Secret中进行烘焙.AWS提供IAM服务,允许我为我的EC2实例分配一个角色,允许这些实例使用临时密钥进行访问.
我如何让它工作?我已经尝试使用SDK和StsClient来假设角色,但这会引发错误
User: arn:aws:sts::XXXXXXXXXXXX:assumed-role/ROLE-NAME/INSTANCE No is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::XXXXXXXXXXXX:role/ROLE-NAME
Run Code Online (Sandbox Code Playgroud)
阅读并且似乎STS请求需要使用凭证本身来执行角色分配?但我认为会使用EC2实例密钥?