2016-04-25 145 views

回答

3

这方面的工作了一段时间后,发现一个办法。

将TeamCity代理托管在使用AWS中的IAM角色启动的EC2实例中。

设置部署者IAM角色可以访问S3存储桶并允许TeamCity IAM角色承担它。

然后使用AWS CLI命令将内容上传到存储桶。

实施例(Powershell的)

STEP 1.请求帐户临时凭证

#----------------------------- 
# Get parameters 
#----------------------------- 
$RoleArn = "%param_deployer_arn%" 
$ExternalId = "%param_assume_role_external_id%" 
$Region = "%param_region%" 
$SessionName = "%param_session_name%" 

#----------------------------- 
# AWS Authentication - Assume Role 
#----------------------------- 
$Response = (Use-STSRole -Region $Region -RoleArn $RoleArn -ExternalId $ExternalId -RoleSessionName $SessionName).Credentials 
$SecretAccessKey = $Response.SecretAccessKey 
$SessionToken = $Response.SessionToken 
$AccessKeyId = $Response.AccessKeyId 

#----------------------------- 
# Set environment variables 
#----------------------------- 
"##teamcity[setParameter name='env.AWS_SECRET_ACCESS_KEY' value='$SecretAccessKey']" 
"##teamcity[setParameter name='env.AWS_SECURITY_TOKEN' value='$SessionToken']" 
"##teamcity[setParameter name='env.AWS_ACCESS_KEY_ID' value='$AccessKeyId']" 

步骤2.

(使用存储在环境变量会话令牌和访问密钥的访问AWS)

重要提示:需要在TeamCity的不同步骤中完成)

#----------------------------- 
# List S3 bucket content 
#----------------------------- 
aws s3 ls s3://%S3Bucket% 
+1

您能否请您说明您是如何在TeamCity上执行CLI步骤的? –

+0

刚编辑我原来的帖子,并添加了一个例子。 – MaRoBet

相关问题