可変 - AWS CodePipeline

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

可変

このセクションは参照のみを目的としています。変数の作成については、「変数の操作」を参照してください。

変数を使用すると、パイプラインの実行時またはアクションの実行時に決定される値でパイプラインアクションを設定できます。

一部のアクションプロバイダは、変数の定義されたセットを生成します。コミット ID など、そのアクションプロバイダのデフォルトの変数キーから選択します。

重要

シークレットパラメータを渡すときは、値を直接入力しないでください。値はプレーンテキストとしてレンダリングされるため、読み取り可能です。セキュリティ上の理由から、シークレットを含むプレーンテキストは使用しないでください。AWS Secrets Manager を使用してシークレットを保存することを強くお勧めします。

変数の使用 step-by-step 例を確認するには:

変数の制限

制限の詳細については、「AWS CodePipeline のクォータ」を参照してください。

注記

アクション設定フィールドに変数構文を入力する場合は、設定フィールドの 1,000 文字制限を超えないようにしてください。この制限を超えると、検証エラーが返されます。

概念

このセクションでは、変数と名前空間に関連する主要な用語と概念を示します。

可変

変数は、パイプラインでアクションを動的に設定するために使用できるキーと値のペアです。現在、これらの変数を使用可能にする方法は 3 つあります。

  • 各パイプライン実行の開始時に暗黙的に使用できる一連の変数があります。このセットには PipelineExecutionId、現在のパイプライン実行の ID が含まれています。

  • パイプラインレベルの変数は、パイプラインの作成時に定義され、パイプラインの実行時に解決されます。

    パイプラインの作成時にパイプラインレベルの変数を指定し、パイプラインの実行時にその値を設定できます。

  • 実行時に変数のセットを生成するアクションタイプがあります。ListActionExecutions API の一部である outputVariablesフィールドを調べることで、アクションによって生成された変数を確認できます。アクションプロバイダごとに使用できるキー名のリストについては、「パイプラインアクションで使用できる変数」を参照してください。各アクションタイプが生成する変数を確認するには、「」を参照してください CodePipeline アクション構造リファレンス

アクション設定でこれらの変数を参照するには、正しい名前空間で変数リファレンス構文を使用する必要があります。

変数ワークフローの例については、「変数の設定 」を参照してください。

名前空間

変数を一意に参照できるようにするには、変数を名前空間に割り当てる必要があります。名前空間に変数のセットを割り当てた後、次の構文で名前空間と変数キーを使用して、アクション設定で変数を参照できます。

#{namespace.variable_key}

変数を割り当てることができる名前空間には、次の 3 種類があります。

  • codepipeline 予約済み名前空間

    これは、各パイプライン実行の開始時に利用可能な暗黙的な変数のセットに割り当てられた名前空間です。この名前空間は codepipeline です。変数リファレンスの例:

    #{codepipeline.PipelineExecutionId}
  • パイプラインレベルの変数の名前空間

    これは、パイプラインレベルの変数に割り当てられる名前空間です。パイプラインレベルのすべての変数の名前空間は variables です。変数リファレンスの例:

    #{variables.variable_name}
  • アクションに割り当てられた名前空間

    これは、アクションに割り当てる名前空間です。アクションによって生成されるすべての変数は、この名前空間に属します。アクションによって生成された変数をダウンストリームアクション設定で使用できるようにするには、生成アクションを名前空間で設定する必要があります。名前空間はパイプライン定義全体で一意でなければならず、アーティファクト名と競合することはできません。次に、SourceVariables の名前空間で設定されたアクションの変数リファレスの例を示します。

    #{SourceVariables.VersionId}

変数のユースケース

以下に、パイプラインレベルの変数の最も一般的な使用例をいくつか示します。これらは、特定のニーズに合わせて変数をどのように使用するかを決定するのに役立ちます。

  • パイプラインレベルの変数は、アクション設定への入力にわずかなバリエーションを持たせて、毎回同じパイプラインを使用したい CodePipeline お客様を対象としています。パイプラインを開始するどの開発者も、パイプラインの開始時は UI に変数値を追加します。この設定では、その実行にのみ使用するパラメータを渡します。

  • パイプラインレベルの変数を使用すると、パイプライン内のアクションに動的な入力を渡すことができます。パラメータ化されたパイプラインは、同じパイプラインの異なるバージョンを維持したり、複雑なパイプラインを作成 CodePipeline したりすることなく、 に移行できます。

  • パイプラインレベルの変数を使用して入力パラメータを渡すことで、実行ごとにパイプラインを再利用できます。例えば、本番環境にデプロイするバージョンを指定する場合などで、パイプラインを複製する必要がなくなります。

  • 1 つのパイプラインを使用して、複数のビルド環境とデプロイ環境にリソースをデプロイできます。例えば、 CodeCommit リポジトリがあるパイプラインの場合、指定されたブランチとターゲットデプロイ環境からのデプロイは、パイプラインレベルで渡された CodeBuild および CodeDeploy パラメータを使用して行うことができます。

変数の設定

パイプラインレベルまたはアクションレベルの変数は、パイプライン構造で設定できます。

パイプラインレベルの変数を設定する

パイプラインレベルで 1 つ以上の変数を追加できます。この値は、 CodePipeline アクションの設定で参照できます。パイプラインを作成するときに、変数名、デフォルト値、説明を追加できます。変数は実行時に解決されます。

注記

パイプラインレベルの変数にデフォルト値が定義されていない場合、その変数は必須とみなされます。パイプラインの開始時には、必須のすべての変数に対して上書きを指定する必要があります。指定しない場合、パイプラインの実行は検証エラーで失敗します。

パイプライン構造の変数属性を使用して、パイプラインレベルの変数を指定します。以下の例では、変数 Variable1 の値は Value1 です。

"variables": [ { "name": "Variable1", "defaultValue": "Value1", "description": "description" } ]

パイプライン JSON 構造の例については、「でパイプラインを作成する CodePipeline」を参照してください。

パイプラインの実行時に渡されるパイプラインレベルの変数のチュートリアルについては、「チュートリアル: パイプラインレベルの変数を使用する」を参照してください。

パイプラインレベルの変数を任意の種類のソースアクションで使用することはできません。

注記

variables 名前空間がパイプライン内のいくつかのアクションで既に使用されている場合、アクション定義を更新し、競合するアクションに別の名前空間を選択する必要があります。

アクションレベルの変数の設定

アクションの名前空間を宣言して、変数を生成するようにアクションを設定します。アクションは、すでに変数を生成するアクションプロバイダの 1 つであることが必要です。それ以外の場合、使用可能な変数はパイプラインレベルの変数です。

名前空間は、次のいずれかの方法で宣言します。

  • コンソールの [アクションの編集] ページで、[Variable namespace (変数の名前空間)] に名前空間を入力します。

  • JSON パイプライン構造の namespace パラメータフィールドに名前空間を入力します。

この例では、 namespaceパラメータを という名前の CodeCommit ソースアクションに追加しますSourceVariables。これにより、そのアクションプロバイダ (CommitId など) で使用可能な変数を生成するようにアクションが設定されます。

{ "name": "Source", "actions": [ { "outputArtifacts": [ { "name": "SourceArtifact" } ], "name": "Source", "namespace": "SourceVariables", "configuration": { "RepositoryName": "MyRepo", "BranchName": "mainline", "PollForSourceChanges": "false" }, "inputArtifacts": [], "region": "us-west-2", "actionTypeId": { "provider": "CodeCommit", "category": "Source", "version": "1", "owner": "AWS" }, "runOrder": 1 } ] },

次に、前のアクションによって生成された変数を使用するようにダウンストリームアクションを設定します。これは次の方法で行います。

  • コンソールの [アクションの編集] ページで、アクション設定フィールドに変数構文 (ダウンストリームアクション用) を入力します。

  • JSON パイプライン構造のアクション設定フィールドに変数構文 (ダウンストリームアクション用) を入力する

この例では、ビルドアクションの設定フィールドには、アクションの実行時に更新される環境変数が表示されます。この例では、#{codepipeline.PipelineExecutionId} で実行 ID の名前空間と変数を指定し、コミット ID には #{SourceVariables.CommitId} で名前空間と変数を指定します。

{ "name": "Build", "actions": [ { "outputArtifacts": [ { "name": "BuildArtifact" } ], "name": "Build", "configuration": { "EnvironmentVariables": "[{\"name\":\"Release_ID\",\"value\":\"#{codepipeline.PipelineExecutionId}\",\"type\":\"PLAINTEXT\"},{\"name\":\"Commit_ID\",\"value\":\"#{SourceVariables.CommitId}\",\"type\":\"PLAINTEXT\"}]", "ProjectName": "env-var-test" }, "inputArtifacts": [ { "name": "SourceArtifact" } ], "region": "us-west-2", "actionTypeId": { "provider": "CodeBuild", "category": "Build", "version": "1", "owner": "AWS" }, "runOrder": 1 } ] },

変数の解決

アクションがパイプライン実行の一部として実行されるたびに、アクションが生成する変数は、生成アクションの後に発生することが保証される任意のアクションで使用できます。これらの変数を消費アクションで使用するには、前の例で示した構文を使用して、消費アクションの設定に変数を追加します。消費アクションを実行する前に、 はアクションの実行を開始する前に、設定に存在するすべての変数参照を CodePipeline 解決します。


        例: 複数のアクションの変数

変数のルール

次のルールは、変数の設定に役立ちます。

  • アクションの名前空間と変数を指定するには、新しいアクションプロパティを使用するか、アクションを編集します。

  • パイプライン作成ウィザードを使用すると、ウィザードで作成された各アクションの名前空間がコンソールによって生成されます。

  • 名前空間が指定されていない場合、そのアクションによって生成された変数は、どのアクション設定でも参照できません。

  • アクションによって生成された変数を参照するには、参照アクションは、変数を生成するアクションの後に発生する必要があります。これは、変数を生成するアクションよりも後の段階にあるか、同じ段階にあるが、より高い実行順序にあることを意味します。

パイプラインアクションで使用できる変数

アクションプロバイダは、アクションによって生成できる変数を決定します。

変数を管理する step-by-step 手順については、「」を参照してください変数の操作

定義された変数キーを持つアクション

選択できる名前空間とは異なり、ほとんどの変数キーは編集できません。たとえば、Amazon S3 アクションプロバイダの場合、ETag および VersionId 変数キーのみを使用できます。

各実行には、パイプラインリリース ID など、実行に関するデータを含む CodePipeline生成のパイプライン変数のセットもあります。これらの変数は、パイプライン内の任意のアクションで消費できます。

CodePipeline 実行 ID 変数

CodePipeline 実行 ID 変数
プロバイダー 変数キー 値の例 可変構文例
codepipeline PipelineExecutionId 8abc75f0-fbf8-4f4c-bfEXAMPLE #{codepipeline.PipelineExecutionId}

Amazon ECR アクションの出力変数

Amazon ECR 変数
変数キー 値の例 可変構文例
ImageDigest sha256:EXAMPLE1122334455 #{SourceVariables.ImageDigest}
ImageTag 最新 #{SourceVariables.ImageTag}
ImageURI 11111EXAMPLE.dkr.ecr.us-west-2.amazonaws.com/ecs-repo:latest #{SourceVariables.ImageURI}
RegistryId EXAMPLE12233 #{SourceVariables.RegistryId}
RepositoryName my-image-repo #{SourceVariables.RepositoryName}

AWS CloudFormation StackSets アクション出力変数

AWS CloudFormation StackSets 変数
変数キー 値の例 可変構文例
OperationId 11111111-2bbb-111-2bbb-11111 例 #{DeployVariables.OperationId}
StackSetId my-stackset: 1111aaa-1111-2222-2bbb-11111 例 #{DeployVariables.StackSetId}

CodeCommit アクション出力変数

CodeCommit 変数
変数キー 値の例 可変構文例
AuthorDate 2019-10-29T03:32:21Z #{SourceVariables.AuthorDate}
BranchName 開発 #{SourceVariables.BranchName}
CommitId

exampleb01f91b31

#{SourceVariables.CommitId}
CommitMessage バグを修正 (最大サイズ 100 KB ) #{SourceVariables.CommitMessage}
CommitterDate 2019-10-29T03:32:21Z #{SourceVariables.CommitterDate}
RepositoryName myCodeCommitリポジトリ #{SourceVariables.RepositoryName}

CodeStarSourceConnection アクション出力変数

CodeStarSourceConnection 変数 (Bitbucket Cloud、 GitHub GitHubEnterprise Repository、 GitLab.com)
変数キー 値の例 可変構文例
AuthorDate 2019-10-29T03:32:21Z #{SourceVariables.AuthorDate}
BranchName 開発 #{SourceVariables.BranchName}
CommitId

exampleb01f91b31

#{SourceVariables.CommitId}
CommitMessage バグを修正 (最大サイズ 100 KB ) #{SourceVariables.CommitMessage}
ConnectionArn arn:aws:codestar-connections:region: account-id :connection/ connection-id #{SourceVariables.ConnectionArn}
FullRepositoryName username/GitHubRepo #{SourceVariables.FullRepositoryName}

GitHub アクション出力変数 (GitHub アクションバージョン 1)

GitHub 変数 (GitHub アクションバージョン 1)
変数キー 値の例 可変構文例
AuthorDate 2019-10-29T03:32:21Z #{SourceVariables.AuthorDate}
BranchName メイン #{SourceVariables.BranchName}
CommitId

exampleb01f91b31

#{SourceVariables.CommitId}
CommitMessage

バグを修正 (最大サイズ 100 KB )

#{SourceVariables.CommitMessage}
CommitterDate 2019-10-29T03:32:21Z #{SourceVariables.CommitterDate}
CommitUrl #{SourceVariables.CommitUrl}
RepositoryName myGitHubリポジトリ #{SourceVariables.RepositoryName}

S3 アクションの出力変数

S3 変数
変数キー 値の例 可変構文例
ETag example28be1c3 #{SourceVariables.ETag}
VersionId exampleta_IUQCv #{SourceVariables.VersionId}

ユーザー設定の変数キーを使用したアクション

CodeBuild、AWS CloudFormation、および Lambda アクションの場合、変数キーはユーザーによって設定されます。

CloudFormation アクション出力変数

AWS CloudFormation 変数
変数キー 可変構文例

AWS CloudFormation アクションの場合、変数はスタックテンプレートの Outputs セクションに指定した値から生成されます。出力を生成する唯一の CloudFormation アクションモードは、スタックの作成、スタックの更新、変更セットの実行など、スタックを作成または更新するアクションモードであることに注意してください。変数を生成するアクションモードは次のとおりです。

  • CREATE_UPDATE

  • CHANGE_SET_EXECUTE

  • CHANGE_SET_REPLACE

  • REPLACE_ON_FAILURE

これらのアクションの詳細については、「AWS CloudFormation」を参照してください。AWS CloudFormation 出力変数を使用するパイプラインを AWS CloudFormation デプロイアクションで作成するためのチュートリアルについては、「チュートリアル: AWS CloudFormation デプロイアクションの変数を使用するパイプラインを作成する」を参照してください。
#{DeployVariables.StackName}

CodeBuild アクション出力変数

CodeBuild 変数
変数キー 可変構文例

CodeBuild アクションの場合、変数はエクスポートされた環境変数によって生成された値から生成されます。でアクションを編集する CodeBuild CodePipeline か、ビルド仕様に CodeBuild 環境変数を追加して、環境変数を設定します。

CodeBuild ビルド仕様に指示を追加して、エクスポートされた変数セクションの下に 環境変数を追加します。env/exported-variablesAWS CodeBuild ユーザーガイド を参照してください。

#{BuildVariables.EnvVar}

Lambda アクションの出力変数

Lambda 変数
変数キー 可変構文例
Lambda アクションは、PutJobSuccessResult API リクエストの outputVariablesセクションに含まれるすべてのキーと値のペアを変数として生成します。

アップストリームアクション (CodeCommit) の変数を使用し、出力変数を生成する Lambda アクションのチュートリアルについては、「」を参照してくださいチュートリアル: Lambda 呼び出しアクションで可変を使用する

#{TestVariables.testRunId}