2017-08-24 100 views
-1

我正在将EC2实例分配给实例配置文件。实例配置文件运行以下命令有权采取跨帐户的角色(比如,账户B)获取由AWS STS返回的凭证

aws sts assume-role --role-arn "arn:aws:iam::Account_B_ID:role/admin" 

--role会话名称“Admin_in_acc_B”

,它会返回一个临时安全包括会话令牌在内的凭证。现在,它涉及到如何利用的信息,将其注入到环境变量,以使CLI将能够在账户B.

export EC2_URL=https://ec2.ap-southeast-1.amazonaws.com 
 
export EC2_HOME=/usr/bin 
 
export JAVA_HOME=/usr/lib/jvm/default-java/jre 
 

 
export AWS_ACCESS_KEY= 
 
export AWS_SECRET_KEY= 
 

 
export AWS_SESSION_TOKEN= 
 

 
PATH=$PATH:/usr/bin 
 

 
ec2-describe-instances

运行的任务(EC2-描述,实例)
+2

你的问题是什么? –

回答

0

首先,不要使用诸如ec2-describe-instances之类的单个命令,而应使用AWS Command-Line Interface (CLI)

这AWS CLI允许在几个方面,包括要指定凭据:

  • 环境变量(如你在上面所做的)
  • 配置文件(通过--profile
通过 aws configure命令创建并激活

因此,你可以:

  • 呼叫assume-role使用aws configure --profile foo
  • 如果使用配置文件然后,只需调用命令,如aws ec2 describe-instances --profile foo
0

你可以有CLI做这一切引擎盖下供您检索凭据

  • Store them in the credentials file,例如。例如,如果您的证书文件(〜/ .aws /凭证)看起来像这样(通过aws configure设置):

    [assume-role-source-credentials] 
    aws_access_key_id = akid 
    aws_secret_access_key = skid 
    

    而且你的配置文件(〜/ .aws/config中)看起来是这样的:

    [profile assume-role-profile] 
    source_profile = assume-role-source-credentials 
    role_arn = arn:aws:iam::Account_B_ID:role/admin 
    role_session_name = Admin_in_acc_B 
    region = us-west-2 
    

    然后,CLI将自动承担角色,缓存并刷新它们以减少承担角色的调用数量。请注意,您需要更改这些配置文件以符合您的确切配置(特别是区域)。

    更多文档here

  • +0

    EC2是使用附加的实例配置文件创建的。我们不想将凭证硬编码到凭证文件中。问题出现在它要求源凭证本身是可再生令牌时 – user2155404