选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

里面有多个访问令牌 CodeBuild

聚焦模式
里面有多个访问令牌 CodeBuild - AWS CodeBuild

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

CodeBuild 支持从您的密钥中 AWS Secrets Manager 或通过 AWS CodeConnections 连接向第三方提供商获取访问令牌。您可以将您的密钥或连接设置为与指定第三方提供商(例如 En GitHub terprise 或 Bitbucket)进行交互的默认凭据。 GitHub

您可以将您的源凭证设置为三个不同级别:

  1. 适合所有项目的账户级别凭证:这些是 AWS 账户中所有项目的默认凭证。如果未指定项目或源级别凭证,则凭证将用于项目。

  2. 特定存储库的源代码级别凭据:这是在项目源上定义 Secrets Manager 密钥或 CodeConnections 连接的时候。这些凭证将仅用于指定源存储库上的操作。这样您就可以在同一个项目中设置具有不同权限范围的多个访问令牌,而不使用默认的账户级别凭证。

  3. 项目级别的备用凭证:您可以使用 NO_SOURCE 作为主源类型来设置项目级别的备用凭证,并在其上定义一个密钥或连接。当您在一个项目中有多个源,但想对它们使用相同的凭证,或者不想为项目使用默认的账户级别凭证时,可以使用这个选项。

第 1 步:创建 Secrets Manager 密钥或 CodeConnections 连接

按照以下说明创建 Secrets Manager 密钥或 CodeConnections 连接:

第 2 步:向 CodeBuild 项目 IAM 角色授予对 Secrets Manager 密钥的访问权限

注意

在继续操作之前,你必须有权访问在 Secrets Manager 中创建的令牌或者 CodeConnections。

要向 CodeBuild 项目 IAM 角色授予对 Secrets Manager 或的访问权限 CodeConnections,您必须添加以下 IAM 策略。

授予 CodeBuild 项目 IAM 角色访问权限
  1. 按照项目的说明为您的 CodeBuild 项目创建 IAM 角色。 CodeBuild 允许与其他 AWS 服务进行交互 CodeBuild

  2. 请执行以下操作之一:

    • 将以下 IAM 策略添加到您的 CodeBuild 项目角色以授予对您的密钥的访问权限。

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "<secret-arn>" ] } ] }

      (可选)如果您使用 AWS KMS 客户管理的密钥来加密 Secrets Manager 密钥,则可以添加以下政策声明来授予访问权限。

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": "<kms-key-arn>", "Condition": { "StringEquals": { "kms:EncryptionContext:SecretARN": "<secret-arn>" } } } ] }
    • 将以下 IAM 策略添加到您的 CodeBuild 项目角色以授予对连接的访问权限。

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codeconnections:GetConnectionToken", "codeconnections:GetConnection" ], "Resource": [ <connection-arn> ] } ] }

第 3 步:配置 Secrets Manager 或 CodeConnections 令牌

您可以使用 Secrets Manager 或 CodeConnections 令牌将源证书设置为三个不同的级别。

将 Secrets Manager 或 CodeConnections 令牌配置为账户级别凭证

您可以将 Secrets Manager 密钥或 CodeConnections 连接配置为账户级凭证,并在项目中使用。

AWS Management Console
要将连接配置为账户级别的凭证,请参阅 AWS Management Console
  1. 对于源提供商,请选择 Bitbucket 或 E GitHub nter prise。GitHub

  2. 对于凭证,执行以下操作之一:

    • 选择默认来源凭证,使用您账户的默认来源凭证应用于所有项目。

      1. 如果未连接到源提供商,请选择管理默认来源凭证

      2. 凭证类型中,选择一个凭证类型。

      3. 如果您选择 CodeConnections,请选择使用现有连接或创建新连接。

        如果您选择了另一个凭证类型,请在服务中选择要用于存储令牌的服务,然后执行以下操作:

        • 如果您选择使用 Secrets Manager,则可以选择使用现有密钥连接或创建新密钥并选择保存。有关如何创建新密钥的更多信息,请参阅在 Secrets Manager 密钥中创建和存储令牌

        • 如果您选择使用 CodeBuild,请输入您的令牌或用户名和应用程序密码,然后选择保存

    • 选择自定义来源凭证,以便使用自定义来源凭证来覆盖您账户的默认设置。

      1. 凭证类型中,选择一个凭证类型。

      2. 连接中,选择使用现有连接或创建新连接。

AWS CLI
要将连接配置为账户级别的凭证,请参阅 AWS CLI
  • 打开终端(Linux、macOS 或 Unix)或命令提示符(Windows)。 AWS CLI 使用运行import-source-credentials命令。

    使用以下命令配置 Secrets Manager 密钥:

    aws codebuild import-source-credentials \ --token "<secret-arn>" \ --server-type <source-provider> \ --auth-type SECRETS_MANAGER \ --region <aws-region>

    使用以下命令配置 CodeConnections 连接:

    aws codebuild import-source-credentials \ --token "<connection-arn>" \ --server-type <source-provider> \ --auth-type CODECONNECTIONS \ --region <aws-region>

    使用此命令可以将令牌作为账户级别的默认来源凭证导入。使用 ImportSourceCredentialsAPI 导入凭证时,除非在项目中配置了更具体的凭据集,否则 CodeBuild 将使用该令牌进行与源提供商的所有交互,例如 webhook、构建状态报告和 git clone 操作。

要将连接配置为账户级别的凭证,请参阅 AWS Management Console
  1. 对于源提供商,请选择 Bitbucket 或 E GitHub nter prise。GitHub

  2. 对于凭证,执行以下操作之一:

    • 选择默认来源凭证,使用您账户的默认来源凭证应用于所有项目。

      1. 如果未连接到源提供商,请选择管理默认来源凭证

      2. 凭证类型中,选择一个凭证类型。

      3. 如果您选择 CodeConnections,请选择使用现有连接或创建新连接。

        如果您选择了另一个凭证类型,请在服务中选择要用于存储令牌的服务,然后执行以下操作:

        • 如果您选择使用 Secrets Manager,则可以选择使用现有密钥连接或创建新密钥并选择保存。有关如何创建新密钥的更多信息,请参阅在 Secrets Manager 密钥中创建和存储令牌

        • 如果您选择使用 CodeBuild,请输入您的令牌或用户名和应用程序密码,然后选择保存

    • 选择自定义来源凭证,以便使用自定义来源凭证来覆盖您账户的默认设置。

      1. 凭证类型中,选择一个凭证类型。

      2. 连接中,选择使用现有连接或创建新连接。

现在,您可以在构建项目中使用该令牌并运行它。有关更多信息,请参阅在中创建构建项目 AWS CodeBuild手动运行 AWS CodeBuild 构建

将多个令牌配置为源级别凭证

要使用 Secrets Manager 密钥或 CodeConnections 连接作为源代码级凭据,请直接在 CodeBuild 项目中引用该令牌,然后开始构建。

AWS Management Console
要在中将多个令牌配置为源级凭证 AWS Management Console
  1. 对于源提供商,请选择GitHub

  2. 对于凭证,执行以下操作之一:

    • 选择默认来源凭证,使用您账户的默认来源凭证应用于所有项目。

      1. 如果您未连接到 GitHub,请选择 “管理默认来源凭据”。

      2. 对于凭据类型,请选择GitHub 应用程序

      3. 连接中,选择使用现有连接或创建新连接。

    • 选择自定义来源凭证,以便使用自定义来源凭证来覆盖您账户的默认设置。

      1. 对于凭据类型,请选择GitHub 应用程序

      2. 连接中,选择使用现有连接或创建新连接。

  3. 选择添加源,然后重复选择源提供商和凭证的过程。

AWS CLI
要在中将多个令牌配置为源级凭证 AWS CLI
  • 打开终端(Linux、macOS 或 Unix)或命令提示符(Windows)。 AWS CLI 使用运行create-project命令。

    使用以下命令:

    aws codebuild create-project --region <aws-region> \ --name <project-name> \ --artifacts type=NO_ARTIFACTS \ --environment "type=LINUX_CONTAINER, computeType=BUILD_GENERAL1_SMALL, image=aws/codebuild/amazonlinux-x86_64-standard:5.0" \ --service-role <service-role-name> \ --source "type=GITHUB, location=<github-repository-1>, auth={type=SECRETS_MANAGER,resource=<secret-or-connection-arn-1>}" \ --secondary-sources "type=GITHUB, location=<github-repository-2>, auth={type=SECRETS_MANAGER,resource=<secret-or-connection-arn-2>}, sourceIdentifier=secondary" aws codebuild start-build --region <aws-region> --project-name <project-name>
要在中将多个令牌配置为源级凭证 AWS Management Console
  1. 对于源提供商,请选择GitHub

  2. 对于凭证,执行以下操作之一:

    • 选择默认来源凭证,使用您账户的默认来源凭证应用于所有项目。

      1. 如果您未连接到 GitHub,请选择 “管理默认来源凭据”。

      2. 对于凭据类型,请选择GitHub 应用程序

      3. 连接中,选择使用现有连接或创建新连接。

    • 选择自定义来源凭证,以便使用自定义来源凭证来覆盖您账户的默认设置。

      1. 对于凭据类型,请选择GitHub 应用程序

      2. 连接中,选择使用现有连接或创建新连接。

  3. 选择添加源,然后重复选择源提供商和凭证的过程。

设置项目级别源凭证回退

要设置项目级别源凭证回退,请使用项目主源的 NO_SOURCE 并引用令牌。

aws codebuild create-project \ --name <project-name> \ --service-role <service-role-name> \ --artifacts type=NO_ARTIFACTS \ --environment "type=LINUX_CONTAINER, computeType=BUILD_GENERAL1_SMALL, image=aws/codebuild/amazonlinux-x86_64-standard:5.0" \ --service-role <service-role-name> \ --source "type=NO_SOURCE, auth={type=SECRETS_MANAGER,resource=<secret-or-connection-arn>}, buildspec=<buildspec>" --secondary-sources "type=GITHUB, location=<github-repository>, sourceIdentifier=secondary" aws codebuild start-build --region <aws-region> --project-name <project_name>

使用 NO_SOURCE 时,因为源模型没有直接配置为使用外部源来获取 buildspec,所以通常在源模型中提供一个 buildspec。通常,NO_SOURCE 源将负责从 buildspec 中克隆所有相关存储库。为确保配置的凭证可用于这些操作,您可以在 buildspec 中启用 git-credential-helper 选项。

env: git-credential-helper: yes

在构建过程中, CodeBuild 将从配置的令牌中读取该AuthServer字段,并将令牌凭据用于向该特定第三方源提供商发出的所有 git 请求。

其他设置选项

您可以使用 AWS CloudFormation 模板配置 Secrets Manager 账户级别的证书。您可以使用以下 AWS CloudFormation 模板来设置账户级别证书:

Parameters: GitHubToken: Type: String NoEcho: true Default: placeholder Resources: CodeBuildAuthTokenSecret: Type: AWS::SecretsManager::Secret Properties: Description: CodeBuild auth token Name: codebuild-auth-token SecretString: !Join - '' - - '{"ServerType":"GITHUB","AuthType":"PERSONAL_ACCESS_TOKEN","Token":"' - !Ref GitHubToken - '"}' Tags: - Key: codebuild:source:provider Value: github - Key: codebuild:source:type Value: personal_access_token CodeBuildSecretsManagerAccountCredential: Type: AWS::CodeBuild::SourceCredential Properties: ServerType: GITHUB AuthType: SECRETS_MANAGER Token: !Ref CodeBuildAuthTokenSecret
注意

如果您还在同一个堆栈中创建项目,请使用 AWS CloudFormation 属性DependsOn来确保在项目之前创建AccountCredential的。

您还可以使用 AWS CloudFormation 模板配置 Secrets Manager 多个源代码级别的证书。您可以使用以下 AWS CloudFormation 模板使用多个令牌来提取多个来源:

Parameters: GitHubTokenOne: Type: String NoEcho: true Default: placeholder GitHubTokenTwo: Type: String NoEcho: true Default: placeholder Resources: CodeBuildSecretsManagerProject: Type: AWS::CodeBuild::Project Properties: Name: codebuild-multitoken-example ServiceRole: <service-role> Environment: Type: LINUX_CONTAINER ComputeType: BUILD_GENERAL1_SMALL Image: aws/codebuild/amazonlinux-x86_64-standard:5.0 Source: Type: GITHUB Location: <github-repository-one> Auth: Type: SECRETS_MANAGER Resource: !Ref CodeBuildAuthTokenSecretOne SecondarySources: - Type: GITHUB Location: <github-repository-two> Auth: Type: SECRETS_MANAGER Resource: !Ref CodeBuildAuthTokenSecretTwo SourceIdentifier: secondary Artifacts: Type: NO_ARTIFACTS LogsConfig: CloudWatchLogs: Status: ENABLED CodeBuildProjectIAMRoleSecretAccess: Type: AWS::IAM::RolePolicy Properties: RoleName: <role-name> PolicyName: CodeBuildProjectIAMRoleSecretAccessPolicy PolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Action: - secretsmanager:GetSecretValue Resource: - !Ref CodeBuildAuthTokenSecretOne - !Ref CodeBuildAuthTokenSecretTwo CodeBuildAuthTokenSecretOne: Type: AWS::SecretsManager::Secret Properties: Description: CodeBuild auth token one Name: codebuild-auth-token-one SecretString: !Join - '' - - '{"ServerType":"GITHUB","AuthType":"PERSONAL_ACCESS_TOKEN","Token":"' - !Ref GitHubTokenOne - '"}' Tags: - Key: codebuild:source:provider Value: github - Key: codebuild:source:type Value: personal_access_token CodeBuildAuthTokenSecretTwo: Type: AWS::SecretsManager::Secret Properties: Description: CodeBuild auth token two Name: codebuild-auth-token-two SecretString: !Join - '' - - '{"ServerType":"GITHUB","AuthType":"PERSONAL_ACCESS_TOKEN","Token":"' - !Ref GitHubTokenTwo - '"}' Tags: - Key: codebuild:source:provider Value: github - Key: codebuild:source:type Value: personal_access_token
隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。