有没有办法在没有使用AWS Credentials的情况下向Amazon SQS发送消息?

问题描述:

我的应用程序需要发送消息到sqs队列。我能够使用http://boto.cloudhackers.com/en/latest/sqs_tut.htmlboto.sqs.connect_to_region()轻松完成所需的操作。这个想法非常简洁[这里没有问题]有没有办法在没有使用AWS Credentials的情况下向Amazon SQS发送消息?

最近我意识到需要发送数据而不使用AWS密码。我想知道如何在不提供凭据的情况下将数据发送到AWS SQS。

我也读到:https://github.com/chilts/awssum/issues/48

有人点我就如何在不creds执行一个简单的推SQS。最近我认为答案可以围绕IAM角色(某些与策略有关的角色)或SQS队列创建。

帮助兄弟姐妹们:)

答案是使用AIM角色。你在哪里运行你的python boto脚本?一个EC2? AWS Lambda与Python?

你可以学到一些关于使用角色在这里获得证书:http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html#using-temp-creds-sdk-ec2-instances

您必须创建具有的权限与SQS执行你的政策。示例:http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/SQSExamples.html)。

{ 
    "Version": "2012-10-17", 
    "Id": "Queue1_Policy_UUID", 
    "Statement": 
    { 
     "Sid":"Queue1_Send_Receive", 
     "Effect": "Allow", 
     "Principal": { 
      "AWS": "111122223333" 
     }, 
     "Action": ["sqs:SendMessage","sqs:ReceiveMessage"], 
     "Resource": "arn:aws:sqs:*:444455556666:queue1" 
    } 
} 

然后您将创建的策略附加到您的角色。然后,您将您的角色分配给您正在运行脚本的EC2,因此当它运行时,EC2实例将根据其角色生成临时凭证。