【问题标题】:How can I specify Account ID in CDK when I'm authorized with temp credentials to the AWS account?当我获得 AWS 账户的临时凭证授权时,如何在 CDK 中指定账户 ID?
【发布时间】:2022-10-13 18:37:27
【问题描述】:

我已经看到了这个问题的相关问题。

但我的问题尤其是我正在承担一个角色来检索临时凭证。它工作得很好;但是,在运行 CDK Bootstrap 时,我收到:需要为账户 <account_id> 执行 AWS 调用,但没有配置凭据。

我也尝试过使用 CDK Deploy,但收到:无法解析要使用的 AWS 帐户。它必须在您定义 CDK 堆栈时进行配置,或者通过环境进行配置

使用临时凭证或担任角色时,如何在 CDK 中指定 AWS 账户环境?

【问题讨论】:

    标签: amazon-web-services amazon-iam aws-cdk aws-cdk-python


    【解决方案1】:

    您还需要定义您尝试引导的帐户。

    对于bootstrap,您可以将其用作命令的一部分-cdk bootstrap aws://ACCOUNT-NUMBER-1/REGION-1 aws://ACCOUNT-NUMBER-2/REGION-2 ... 请注意,给定的帐户/区域在其生命周期内只需引导一次,无论将在那里部署多少 cdk 堆栈。

    并且您的凭据需要成为默认配置文件的一部分。如果您通过某种企业脚本假设凭据,请与他们确认他们将其存储为默认配置文件的一部分。如果没有,请在您的 bash 终端中至少运行 aws config 并在其中获取您的临时假定凭据

    对于cdk deploy,您需要确保在您的app.py 中拥有env defined

    env_EU = cdk.Environment(account="8373873873", region="eu-west-1")
    env_USA = cdk.Environment(account="2383838383", region="us-west-2")
    
    MyFirstStack(app, "first-stack-us", env=env_USA)
    MyFirstStack(app, "first-stack-eu", env=env_EU)
    

    但是,我建议不要对您的帐号进行硬编码;)

    【讨论】:

    • 实际上,硬编码帐号是 CDK 中的首选方法。它导致确定性代码,这是“一件好事”
    • 硬编码帐号不是良好的安全做法。零信任,这是难题的一部分。
    • 如果您不愿意在其中输入 AWS 帐号,那么 CDK 的某些功能将会非常困难。一种解决方法是让它成为一个环境变量,比如process.env.PROD_ACCOUNT
    • 你知道 Stack 有一个 account 属性吗? this.Account 在堆栈结构中?您不必在任何地方传递任何帐号,Stack 可以从您的合成器/部署位置的 aws cli 配置文件中确定它。如果您使用的是代码构建或代码部署,它会自动识别它,如果是本地的,您可以添加它而无需对数字进行硬编码
    • 是的。如果你在一个构造中,你可以使用 Stack.of(this).account (首先获取堆栈)。但我认为这不是最初的问题所要问的。至于硬编码帐号,正如您所建议的那样,这实际上是最佳实践的一部分 (docs.aws.amazon.com/cdk/v2/guide/best-practices.html)。阅读“在代码中为所有生产阶段建模”部分。为此,您必须提供帐号,而不仅仅是从环境中检索它们。
    【解决方案2】:

    凭据和配置文件的名称应该相同 喜欢:

    -credentials
    [cdk]
    aws_access_key_id = xxxxxxxxxxx
    aws_secret_access_key = xxxxxxxxxxx
    -config
    [cdk]
    region = "us-east-1"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-08
      • 1970-01-01
      • 2020-07-17
      • 1970-01-01
      • 2020-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多