【问题标题】:pulumi/aws - create resources in newly created oranizations accountpulumi/aws - 在新创建的 oranizations 帐户中创建资源
【发布时间】:2022-11-11 05:03:14
【问题描述】:

我目前正在使用 pulumi 引导 AWS 组织设置。 (prod/dev/... 帐户、安全帐户、ci 访问等 - 我认为在 azure 中这个概念被称为“登陆区”,但由于这个名称是指 AWS 上的特定产品,所以我没有在这里使用它.)

我想做的是

  1. 新建一堆子账号aws.organizations.Account
  2. 部署资源进入这些子帐户(例如:ci 访问、用户、角色等)

    这是我尝试过的——据我所知,“相同”的代码在 terraform 中有效:

    const account = new organizations.Account("account", {
      roleName: "some-role-name-for-the-parent-account-to-assume",
      ...
    })
    
    const provider = new Provider("subaccount-provider", {
      assumeRole: {
        roleArn: `arn:aws:iam::${account.id}:role/${account.roleName}`
      }
    })
    
    const otherResource = new WhateverAWSResource(
      "other-resource",
      { ... },
      // the role assumed by the provider will result in the resource being created in the subaccount  
      { provider }
    )
    

    现在的问题是:

    • Account 实例不公开roleArn
    • 在 pulumi 中不允许字符串插值,因为 account.idaccount.roleNameOutput<string> 类型

    问题:有没有办法让这样的工作?最好

    • 没有在-.yaml 级别显式拆分项目/堆栈。这将需要额外的管道并且感觉非常不雅,因为它会在回购结构中引入大量噪音。
    • 不使用自动化 API。

    我认为自动化 API 可以很好地使其工作,但对于这个用例来说似乎有点不合时宜。

【问题讨论】:

    标签: amazon-web-services pulumi infrastructure-as-code aws-organizations


    【解决方案1】:

    pulumi 中不允许字符串插值,因为 account.id 和 account.roleName 是 Output 类型

    您可以使用pulumi.all 将输出数组映射到包装数组的输出(与Promise.all 类似)。

    对于字符串,pulumi.interpolatepulumi.concat 可能会更好(参见the docs.

    示例(pulumi.interpolate):

    const provider = new Provider("subaccount-provider", {
      assumeRole: {
        roleArn: pulumi.interpolate`arn:aws:iam::${account.id}:role/${account.roleName}`
      }
    })
    

    【讨论】:

      【解决方案2】:

      我正在尝试实施相同的策略,除了我使用的是 Python(使用Output.concat)。你成功了吗?

      随后使用该提供程序创建 iam 用户时遇到以下错误:

      Diagnostics:
        aws:iam:User (an):
          error: unable to validate AWS credentials.
          Details: Assume Role: role ARN not set
          
          Make sure you have:
          
               • Set your AWS region, e.g. `pulumi config set aws:region us-west-2`
               • Configured your AWS credentials as per https://pulumi.io/install/aws.html
               You can also set these via cli using `aws configure`.
      

      任何想法?

      【讨论】:

        猜你喜欢
        • 2020-05-11
        • 1970-01-01
        • 1970-01-01
        • 2019-05-11
        • 2018-11-30
        • 2022-07-24
        • 2014-07-19
        • 1970-01-01
        • 2021-10-05
        相关资源
        最近更新 更多