sparse-intern-71089
04/18/2023, 3:55 AMable-energy-34495
04/18/2023, 3:58 AMsalmon-account-74572
04/18/2023, 4:20 AMable-energy-34495
04/18/2023, 4:22 AMfresh-spring-82225
04/18/2023, 5:30 AMaws:allowedAccountIds
config setting.dry-journalist-60579
04/18/2023, 2:08 PMPulumi.{stack}.yaml
per account and specify
config:
aws:allowedAccountIds: [xxx]
in that yaml filedry-journalist-60579
04/18/2023, 2:12 PMpulumi up
via Pulumi Deploymentsable-energy-34495
04/18/2023, 5:01 PMdry-journalist-60579
04/18/2023, 5:06 PM# Create Provider to assume role
provider = aws.Provider(
f"Provider: {account.name}",
region="us-east-1",
assume_role={
"roleArn": pulumi.Output.format(
"arn:aws:iam::{0}:role/AWSControlTowerExecution", account.id
),
},
)
This creates a provider per account such that you can create resources in a specific account:
aws.iam.AccountPasswordPolicy(
name,
**PASSWORD_PARAMS,
opts=ResourceOptions(parent=self, provider=provider),
)
dry-journalist-60579
04/18/2023, 5:07 PMable-energy-34495
04/18/2023, 5:07 PMdry-journalist-60579
04/18/2023, 5:07 PMpulumi up
with (e.g.) AWS_* credentials in the CLI environment for a specific accountdry-journalist-60579
04/18/2023, 5:08 PMdry-journalist-60579
04/18/2023, 5:09 PM$ aws-sso-util login
# => browser opens and I approve
$ awsume MyAccount.AWSAdministratorAccess
$ pulumi up ...
dry-journalist-60579
04/18/2023, 5:10 PMpulumi up
against any of our non-sandbox infrastructure. We use #C048NVDH6DV to automatically run pulumi up
when PRs are mergeddry-journalist-60579
04/18/2023, 5:16 PMarn:aws:iam::{ACCOUNT_ID}:role/AWSControlTowerExecution
role. We then set up every stack with an explicit assume role configuration in the YAML:
# project/Pulumi.yaml
name: my-project
runtime:
name: python
# project/Pulumi.prod.yaml
config:
aws:allowedAccountIds: [xxx]
aws:assumeRole:
roleArn: arn:aws:iam::xxx:role/AWSControlTowerExecution
aws:region: us-east-1
able-energy-34495
04/19/2023, 8:09 PMable-energy-34495
04/19/2023, 8:09 PMable-energy-34495
04/19/2023, 8:21 PM