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

时间:2016-02-05 10:01:59

标签: amazon-web-services amazon-sqs

我的应用程序需要将消息发送到sqs队列。我可以使用http://boto.cloudhackers.com/en/latest/sqs_tut.html中的boto.sqs.connect_to_region()轻松完成所需操作。这个想法非常简洁[没有问题]

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

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

有人能指出我如何在没有信誉的情况下对SQS进行简单的推送。最近我认为答案可能是围绕IAM角色(某些策略相关或角色)或SQS队列创建。

帮助兄弟们:)

1 个答案:

答案 0 :(得分:4)

答案是使用IAM角色。你在哪里运行Python boto脚本? EC2? AWS Lambda with Python?

您可以在此处了解如何使用角色获取凭据:

http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html#using-temp-creds-sdk-ec2-instances

您必须创建一个IAM策略,该策略具有执行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实例将根据其角色生成临时凭证。