在EC2上部署java应用程序时,我只能使用
new ProfileCredentialsProvider()
以注入一些实例凭据。但它将是哪个IAM用户?如何管理该用户的权限?例如,将他的权限限制在某个特定的S3桶
Mark B对EC2实例配置文件的描述是100%正确的。除此之外,Java ProfileCredentialsProvider指的是AWS SDK和AWS CLI可用的凭据配置文件,而不是EC2实例配置文件。从文件来看:
基于AWS配置文件的凭据提供商。这提供程序从的配置文件中提供AWSCredentials默认配置文件,或特定的命名配置文件。
AWS证书配置文件允许您共享多组AWS安全凭据在不同的工具之间,如AWS SDK for Java和AWS CLI。
这对于部署到EC2是不可取的,因为这意味着您必须将配置文件存储在EC2实例上。根据Mark B的回答,EC2实例配置文件更适合将凭据传递给EC2上的应用程序。
为了能够在没有进一步代码更改的情况下检索其中一个,只需使用DefaultAWSCredentialsProviderChain(注意:在AWS SDK for Java v2中重命名为DefaultCredentialsProvider),它将通过几个凭据方案,直到在您的系统上找到有效的凭据方案。根据文档,它按以下顺序查找凭据:
Java系统属性-aws.accessKeyId和aws.secretKey
环境变量-AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY
所有aws SDK和aws CLI 共享的默认位置的凭据配置文件(~/.aws/credentials)
如果设置了AWS_container_Credentials_RELATIVE_URI"环境变量,则通过Amazon EC2容器服务传递的凭据并且安全管理器具有访问该变量的权限。
通过AmazonEC2元数据服务提供的实例配置文件凭据
这将允许您在本地开发环境中查找凭据配置文件,并在生产EC2环境中查找EC2实例配置文件。
进一步阅读
- AWS文档-使用实例配置文件
- AWS文档-使用AWS凭据-请注意,此文档适用于AWS SDK for Java 2.0预览版
它不是IAM用户,而是EC2实例配置文件。首先,您必须在您的帐户中创建实例配置文件,就像您必须创建IAM用户一样。通过向实例配置文件分配适当的IAM安全策略,您可以像管理IAM用户的权限一样管理EC2实例配置文件的权限。