2017-08-24 136 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