Skip to content

Commit 983b2da

Browse files
author
Michael Kania
authored
Merge pull request #48 from trussworks/mk-govcloud
Fix IAM Role ARN if trying to run against GovCloud
2 parents e89b01d + 52d145c commit 983b2da

File tree

5 files changed

+34
-14
lines changed

5 files changed

+34
-14
lines changed

.circleci/config.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
version: 2.1
22

33
references:
4-
circleci-docker-primary: &circleci-docker-primary trussworks/circleci-docker-primary:d7f27acdab24f86297220a43f704f23f2bab667d
4+
circleci-docker-primary: &circleci-docker-primary trussworks/circleci-docker-primary:c542b22c7fb95db0a1bbe043928a457ae6fbeaca
55

66
jobs:
77
test:

.pre-commit-config.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
repos:
22
- repo: git://github.com/golangci/golangci-lint
3-
rev: v1.24.0
3+
rev: v1.26.0
44
hooks:
55
- id: golangci-lint
66

@@ -17,6 +17,6 @@ repos:
1717
- id: trailing-whitespace
1818

1919
- repo: git://github.com/igorshubovych/markdownlint-cli
20-
rev: v0.22.0
20+
rev: v0.23.0
2121
hooks:
2222
- id: markdownlint

cmd/main.go

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package main
33
import (
44
"fmt"
55
"io/ioutil"
6-
76
"log"
87
"os"
98

@@ -12,6 +11,7 @@ import (
1211
"github.com/99designs/keyring"
1312
"github.com/aws/aws-sdk-go/aws"
1413
"github.com/aws/aws-sdk-go/aws/credentials"
14+
"github.com/aws/aws-sdk-go/aws/endpoints"
1515
"github.com/aws/aws-sdk-go/aws/session"
1616
"github.com/aws/aws-sdk-go/service/iam"
1717
"github.com/aws/aws-sdk-go/service/sts"
@@ -453,6 +453,14 @@ func checkExistingAWSProfile(profileName string, config *vault.Config) error {
453453
return nil
454454
}
455455

456+
func getPartition(region string) (string, error) {
457+
partition, ok := endpoints.PartitionForRegion(endpoints.DefaultPartitions(), region)
458+
if !ok {
459+
return "", fmt.Errorf("Error finding partition for region: %s", region)
460+
}
461+
return partition.ID(), nil
462+
}
463+
456464
func main() {
457465
// parse command line flags
458466
var options cliOptions
@@ -466,10 +474,17 @@ func main() {
466474
validate = validator.New()
467475

468476
// initialize things
477+
partition, err := getPartition(options.AwsRegion)
478+
if err != nil {
479+
log.Fatal(err)
480+
}
481+
469482
profile := vault.Profile{
470483
Name: options.AwsProfile,
471-
RoleARN: fmt.Sprintf("arn:aws:iam::%v:role/%v",
472-
options.AwsAccountID, options.Role),
484+
RoleARN: fmt.Sprintf("arn:%s:iam::%d:role/%s",
485+
partition,
486+
options.AwsAccountID,
487+
options.Role),
473488
Region: options.AwsRegion,
474489
}
475490

cmd/main_test.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,3 +61,16 @@ func TestGenerateQrCode(t *testing.T) {
6161
err = generateQrCode("otpauth://totp/super@top?secret=secret", tempFile)
6262
assert.NoError(t, err)
6363
}
64+
65+
func TestGetPartition(t *testing.T) {
66+
commPartition, err := getPartition("us-west-2")
67+
assert.Equal(t, commPartition, "aws")
68+
assert.NoError(t, err)
69+
70+
govPartition, err := getPartition("us-gov-west-1")
71+
assert.Equal(t, govPartition, "aws-us-gov")
72+
assert.NoError(t, err)
73+
74+
_, err = getPartition("aws-under-the-sea")
75+
assert.Error(t, err)
76+
}

go.sum

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,6 @@ github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuy
99
github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d h1:UQZhZ2O0vMHr2cI+DC1Mbh0TJxzA3RcLoMsFw+aXw7E=
1010
github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho=
1111
github.com/aws/aws-sdk-go v1.25.17/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
12-
github.com/aws/aws-sdk-go v1.29.19 h1:+jifYixffn6kzWygtGWFWQMv0tDGyISZHNwugF9V2sE=
13-
github.com/aws/aws-sdk-go v1.29.19/go.mod h1:1KvfttTE3SPKMpo8g2c6jL3ZKfXtFvKscTgahTma5Xg=
14-
github.com/aws/aws-sdk-go v1.29.26 h1:T8LJNOVt0HZgJQySeE+1Pr3ClcX+rb7ddq/ZAjnHzDc=
15-
github.com/aws/aws-sdk-go v1.29.26/go.mod h1:1KvfttTE3SPKMpo8g2c6jL3ZKfXtFvKscTgahTma5Xg=
16-
github.com/aws/aws-sdk-go v1.29.29 h1:4TdSYzXL8bHKu80tzPjO4c0ALw4Fd8qZGqf1aozUcBU=
17-
github.com/aws/aws-sdk-go v1.29.29/go.mod h1:1KvfttTE3SPKMpo8g2c6jL3ZKfXtFvKscTgahTma5Xg=
1812
github.com/aws/aws-sdk-go v1.29.34 h1:yrzwfDaZFe9oT4AmQeNNunSQA7c0m2chz0B43+bJ1ok=
1913
github.com/aws/aws-sdk-go v1.29.34/go.mod h1:1KvfttTE3SPKMpo8g2c6jL3ZKfXtFvKscTgahTma5Xg=
2014
github.com/danieljoos/wincred v1.0.2 h1:zf4bhty2iLuwgjgpraD2E9UbvO+fe54XXGJbOwe23fU=
@@ -120,8 +114,6 @@ gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8
120114
gopkg.in/go-playground/validator.v9 v9.31.0 h1:bmXmP2RSNtFES+bn4uYuHT7iJFJv7Vj+an+ZQdDaD1M=
121115
gopkg.in/go-playground/validator.v9 v9.31.0/go.mod h1:+c9/zcJMFNgbLvly1L1V+PpxWdVbfP1avr/N00E2vyQ=
122116
gopkg.in/ini.v1 v1.49.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
123-
gopkg.in/ini.v1 v1.54.0 h1:oM5ElzbIi7gwLnNbPX2M25ED1vSAK3B6dex50eS/6Fs=
124-
gopkg.in/ini.v1 v1.54.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
125117
gopkg.in/ini.v1 v1.55.0 h1:E8yzL5unfpW3M6fz/eB7Cb5MQAYSZ7GKo4Qth+N2sgQ=
126118
gopkg.in/ini.v1 v1.55.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
127119
gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=

0 commit comments

Comments
 (0)