亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 terratest 中通過承擔角色

如何在 terratest 中通過承擔角色

Go
素胚勾勒不出你 2022-05-05 17:38:23
我正在為 terraform 模塊編寫測試用例。我有一個假設角色,我想將它傳遞給我的 go 測試。我不知道如何通過它。我將它定義為一個常量,然后我應該如何傳遞它以便它在 terraform init 和 terraform apply、destroy 期間被喚起。package testimport (    "testing"    "github.com/gruntwork-io/terratest/modules/aws"    "github.com/gruntwork-io/terratest/modules/terraform"    "github.com/stretchr/testify/assert"    "github.com/stretchr/testify/require")// An example of how to test the Terraform module in examples/terraform-aws-network-example using Terratest.func TestTerraformAwsNetworkExample(t *testing.T) {    t.Parallel()    const authAssumeRoleEnvVar = "TERRATEST_IAM_ROLE"    // Give the VPC and the subnets correct CIDRs    vpcCidr := "1x.x.x.x/20"    Env := "staging"    privateSubnetCidr := []string{"1x.x.x.x/30"}    publicSubnetCidr := []string{"1x.x.x.x/30"}    Tag := map[string]string{"owner":"xxx"}    awsRegion := "us-east-1"    terraformOptions := &terraform.Options{        // The path to where our Terraform code is located        TerraformDir: "..",        // Variables to pass to our Terraform code using -var options        Vars: map[string]interface{}{            "vpc_cidr":       vpcCidr,            "env": Env,            "private_subnet_cidrs": privateSubnetCidr,            "public_subnet_cidrs":  publicSubnetCidr,            "tags" : Tag,        },        EnvVars: map[string]string{                 "AWS_DEFAULT_REGION": awsRegion,        },    }}
查看完整描述

2 回答

?
慕尼黑8549860

TA貢獻1818條經驗 獲得超11個贊

將此變量TERRATEST_IAM_ROLE作為文檔中提到的os環境變量傳遞的唯一方法您也可以將其定義為您的后端文件,但如果您有讀取值的斷言測試用例,則不會被拾取,因為它使用aws cli


所以我做了這件事,它奏效了。


import (


    "os"



)

 os.Setenv("TERRATEST_IAM_ROLE", "arn:aws:iam::xxxx/xxxx")


查看完整回答
反對 回復 2022-05-05
?
SMILET

TA貢獻1796條經驗 獲得超4個贊

**


這段代碼是不可測試的,所以你不能測試它。


** https://github.com/gruntwork-io/terratest/blob/f3916f7a5f58e3fedf603388d3e3e8052d6a47a3/modules/aws/auth.go#L18


我希望他們可以像這樣重構它:


var AuthAssumeRoleEnvVar string


func SetAuthAssumeRoleEnvVar(role string){

    AuthAssumeRoleEnvVar = role

}


func NewAuthenticatedSession(region string) (*session.Session, error) {

    if assumeRoleArn, ok := os.LookupEnv(AuthAssumeRoleEnvVar); ok {

        return NewAuthenticatedSessionFromRole(region, assumeRoleArn)

    } else {

        return NewAuthenticatedSessionFromDefaultCredentials(region)

    }

}

所以我們可以這樣稱呼它:


aws.SetAuthAssumeRoleEnvVar("testrole")

aws.NewAuthenticatedSession(region)


查看完整回答
反對 回復 2022-05-05
  • 2 回答
  • 0 關注
  • 131 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號