有没有一种方法可以“不”使用 AWS 凭证向 Amazon SQS 发送消息?

Nis*_*ngh 1 amazon-sqs amazon-web-services

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

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

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

有人可以告诉我如何在没有信用的情况下执行简单的 SQS 推送吗?最近我认为答案可以围绕 IAM 角色(某些策略相关或角色)或 SQS 队列创建。

帮帮兄弟吧:)

fil*_*tto 5

答案是使用 IAM 角色。你在哪里运行 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

您必须创建一个 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"
    }
}
Run Code Online (Sandbox Code Playgroud)

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