【问题标题】:How to grant EC2 access to SQS如何授予 EC2 对 SQS 的访问权限
【发布时间】:2015-08-27 04:24:26
【问题描述】:

这些文档让我很困惑。我已通读 SQS 访问文档。但真正让我震惊的是这个页面:http://docs.aws.amazon.com/aws-sdk-php/v2/guide/service-sqs.html

您可以像前面的示例一样提供您的凭据配置文件, 直接指定您的访问密钥(通过密钥和秘密),或者您可以 如果您使用的是 AWS,请选择省略任何凭证信息 EC2 实例的身份和访问管理 (IAM) 角色 或 来自 AWS_ACCESS_KEY_ID 的凭证和 AWS_SECRET_ACCESS_KEY 环境变量。

1)关于我加粗的内容,这怎么可能?我找不到步骤,而您可以使用 IAM 角色授予 EC2 实例对 SQS 的访问权限。这非常令人困惑。

2) 上述环境变量应该放在哪里?您从哪里获得密钥和秘密?

有人可以帮忙澄清一下吗?

【问题讨论】:

    标签: laravel amazon-web-services amazon-ec2 amazon-sqs


    【解决方案1】:

    应用程序可以通过多种方式发现 AWS 凭证。任何使用AWS SDK 的软件都会自动查找这些位置。这包括AWS Command-Line Interface (CLI),这是一个使用 AWS 开发工具包的 Python 应用程序。

    你的粗体字是指下面的#3:

    1.环境变量

    SDK 将查找 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY 环境变量。这是提供凭据的很棒方法,因为不会在 github 或其他存储库中意外包含凭据文件的危险。在 Windows 中,使用系统控制面板设置变量。在 Mac/Linux 中,只需 EXPORT 来自 shell 的变量。

    凭据是在创建 IAM 用户 时提供的。您有责任将这些凭据放入环境变量中。

    2。本地凭证文件

    SDK 会查找本地配置文件,例如:

    • ~/.aws/credentials
    • C:\users\awsuser\.aws\credentials

    这些文件非常适合存储用户特定的凭据,实际上可以存储多个配置文件,每个配置文件都有自己的凭据。这对于在 Dev 和 Test 等不同环境之间切换很有用。

    凭据是在创建 IAM 用户 时提供的。将这些凭据放入配置文件是您的责任。

    3. Amazon EC2 实例上的 IAM 角色

    IAM 角色可以在启动时与 Amazon EC2 实例相关联。然后将通过实例元数据服务通过 URL 自动提供临时凭证:

    http://instance-data/latest/meta-data/iam/security-credentials/<role-name>/
    

    这将返回包含 AWS 凭证的元数据,例如:

    {
      "Code" : "Success",
      "LastUpdated" : "2015-08-27T05:09:23Z",
      "Type" : "AWS-HMAC",
      "AccessKeyId" : "ASIAI5OXLTT3D5NCV5MS",
      "SecretAccessKey" : "sGoHyFaVLIsjm4WszUXJfyS1TVN6bAIWIrcFrRlt",
      "Token" : "AQoDYXdzED4a4AP79/SbIPdV5N8k....lZwERog07b6rgU=",
      "Expiration" : "2015-08-27T11:11:50Z"
    }
    

    这些凭证继承了启动实例时分配的 IAM 角色的权限。它们每 6 小时自动轮换一次(注意此示例中的 Expiration,大约在 LastUpdated 时间后 6 小时。

    使用 AWS 开发工具包的应用程序将自动查看此 URL 以检索安全凭证。当然,它们只有在 Amazon EC2 实例上运行时才可用。

    凭证提供者链

    每个特定的 AWS 开发工具包(例如 Java、.Net、PHP)可能会在不同的位置寻找凭证。有关详细信息,请参阅相应的文档,例如:

    【讨论】:

    • 如何将 IAM 与已经运行的 EC2 实例关联起来?这可能吗?
    • 另外,该应用程序要求我提供密钥和秘密。如果它每 6 小时更改一次,如何将它们提供给应用程序?
    • 您不提供它们。该应用程序会自动查看该 URL 并获取当前凭据。只需在启动时为 EC2 实例分配一个角色,一切正常! (例如,尝试使用 AWS CLI:aws s3 ls 将列出存储桶。看看它是否适合您!)
    • 如果您有一个要求提供凭证的应用程序,那么要么它没有在分配了角色的 EC2 实例上运行,要么应用程序编写不当(未使用自动功能)。如果是这种情况,您必须创建一个 IAM 用户,分配权限,然后使用与该用户关联的凭证。
    猜你喜欢
    • 2018-09-18
    • 2018-02-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-05
    • 2018-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多