アクションタイプの使用 - AWS CodePipeline

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

アクションタイプの使用

アクションタイプは、プロバイダとして AWS CodePipelineでサポートされているインテグレーションモデルのいずれかを使用して顧客用に作成する、事前構成済みのアクションです。

アクションタイプをリクエスト、表示、および更新できます。所有者としてアカウントに対してアクションタイプが作成されている場合は、 AWS CLI を使用してアクションタイプのプロパティと構造を表示または更新できます。アクションタイプのプロバイダーまたは所有者である場合、顧客はアクションを選択し、 で利用可能になった後にパイプラインに追加できます CodePipeline。

注記

custom フィールド内の owner でアクションを作成して、ジョブワーカーで実行します。インテグレーションモデルでは作成しません。カスタムアクションの詳細については、「でカスタムアクションを作成して追加する CodePipeline」を参照してください。

アクションタイプのコンポーネント

次のコンポーネントがアクションタイプを構成します。

  • アクションタイプ ID - ID はカテゴリ、所有者、プロバイダー、およびバージョンで構成されます。次の例は、ThirdParty の所有者、Test のカテゴリ、TestProvider というプロバイダー、1 のバージョンのアクションタイプ ID であることを示しています。

    { "Category": "Test", "Owner": "ThirdParty", "Provider": "TestProvider", "Version": "1" },
  • 実行者設定 - アクションの作成時に指定されたインテグレーションモデルまたはアクションエンジン。アクションタイプの実行者を指定するときは、次の 2 つのタイプのいずれかを選択します。

    • Lambda: アクションタイプの所有者は、統合を Lambda 関数として書き込みます。Lambda 関数は、アクションに使用できるジョブがある CodePipeline たびに によって呼び出されます。

    • JobWorker: アクションタイプの所有者は、カスタマーパイプラインで使用可能なジョブをポーリングするジョブワーカーとして統合を書き込みます。次に、ジョブワーカーはジョブを実行し、API CodePipeline を使用してジョブ結果を に送信します。 CodePipeline APIs

      注記

      ジョブワーカーインテグレーションモデルは、推奨されるインテグレーションモデルではありません。

  • 入力および出力アーティファクト: アクションタイプの所有者がアクションの顧客に対して指定するアーティファクトの制限。

  • アクセス許可: サードパーティーのアクションタイプにアクセスできる顧客を指定するアクセス許可戦略。使用可能なアクセス許可戦略は、アクションタイプで選択したインテグレーションモデルによって異なります。

  • URL: アクションタイプの所有者の設定ページなど、顧客が操作できるリソースへのディープリンク。

アクションタイプをリクエストする

サードパーティープロバイダーによって新しい CodePipeline アクションタイプがリクエストされると、 のアクションタイプの所有者に対してアクションタイプが作成され CodePipeline、所有者はアクションタイプを管理および表示できます。

アクションタイプは、プライベートアクションまたは公開アクションのいずれかです。アクションタイプの作成時、アクションタイプはプライベートになります。アクションタイプをパブリックアクションに変更するようにリクエストするには、 CodePipeline サービスチームにお問い合わせください。

CodePipeline チームのアクション定義ファイル、エグゼキュターリソース、およびアクションタイプのリクエストを作成する前に、統合モデルを選択する必要があります。

ステップ 1: インテグレーションモデルを選択する

インテグレーションモデルを選択し、そのモデルの構成を作成します。インテグレーションモデルを選択したら、インテグレーションリソースを構成する必要があります。

  • Lambda インテグレーションモデルの場合、Lambda 関数を作成し、許可を追加します。インテグレータ Lambda 関数にアクセス許可を追加して、 CodePipeline サービスプリンシパル を使用して呼び出すアクセス許可を CodePipeline サービスに提供しますcodepipeline.amazonaws.com。アクセス許可は、 AWS CloudFormation またはコマンドラインを使用して追加できます。

    • AWS CloudFormationを使用して許可を追加する例

      CodePipelineLambdaBasedActionPermission: Type: 'AWS::Lambda::Permission' Properties: Action: 'lambda:invokeFunction' FunctionName: {"Fn::Sub": "arn:${AWS::Partition}:lambda:${AWS::Region}:${AWS::AccountId}:function:function-name"} Principal: codepipeline.amazonaws.com
    • コマンドラインのドキュメント

  • ジョブワーカー統合モデルでは、ジョブワーカーが APIs を使用してジョブをポーリングする CodePipeline許可されたアカウントのリストとの統合を作成します。

ステップ 2: アクションタイプ定義ファイルを作成する

JSON を使用して、アクションタイプ定義ファイルでアクションタイプを定義します。ファイルには、アクションカテゴリ、アクションタイプの管理に使用されるインテグレーションモデル、および構成プロパティが含まれます。

注記

パブリックアクションの作成後は、properties のアクションタイププロパティを optional から required へ変更することはできません。owner を変更することもできません。

アクションタイプ定義ファイルパラメータの詳細については、 CodePipeline API リファレンスUpdateActionTypeActionTypeDeclaration「」および「」を参照してください。

アクションタイプ定義ファイルには 8 つのセクションがあります。

  • description: 更新するアクションタイプの説明。

  • executor: Lambda または job worker のサポートされているインテグレーションモデルで作成されたアクションタイプの実行者に関する情報。実行者タイプに基づき、jobWorkerExecutorConfiguration または lambdaExecutorConfiguration のどちらかのみを提供できます。

    • configuration: 選択したインテグレーションモデルに基づいたアクションタイプの構成のリソース。Lambda インテグレーションモデルの場合は、Lambda 関数 ARN を使用します。ジョブワーカーインテグレーションモデルの場合は、ジョブワーカーが実行されるアカウントまたはアカウントのリストを使用します。

    • jobTimeout: ジョブのタイムアウト (秒単位)。アクションの実行は、複数のジョブで構成できます。これは 1 つのジョブに対するタイムアウトであり、アクションの実行全体に対するタイムアウトではありません。

      注記

      Lambda インテグレーションモデルの最大タイムアウトは 15 分です。

    • policyStatementsTemplate: アクションの実行を正常に実行するために必要な CodePipeline 、お客様のアカウントのアクセス許可を指定するポリシーステートメント。

    • type: Lambda または JobWorker のアクションタイプの作成と更新に使用されるインテグレーションモデル。

  • id: アクションタイプのカテゴリ、所有者、プロバイダー、およびバージョン ID。

    • category: ソース、ビルド、デプロイ、テスト、呼び出し、承認のステージで実行できるアクションの種類。

    • provider: プロバイダ会社や製品名など、呼び出されるアクションタイプのプロバイダ。プロバイダ名は、アクションタイプの作成時に指定されます。

    • owner: AWS または ThirdParty の呼び出されているアクションの作成者。

    • version: アクションタイプのバージョン設定に使用する文字列。最初のバージョンでは、バージョン番号を 1 に設定します。

  • inputArtifactDetails: パイプラインの前のステージから期待されるアーティファクトの数。

  • outputArtifactDetails: アクションタイプステージの結果から期待されるアーティファクトの数。

  • permissions: アクションタイプを使用する許可のあるアカウントを識別する詳細。

  • properties: プロジェクトタスクを完了するために必要なパラメータ。

    • description: ユーザーに表示されるプロパティの説明。

    • optional: 設定プロパティがオプションであるかどうか。

    • noEcho: 顧客が入力したフィールド値をログから除外するかどうか。の場合true、 GetPipeline API リクエストで返された値は編集されます。

    • key 設定プロパティがキーであるかどうか。

    • queryable: プロパティがポーリングで使用されるかどうか。アクションタイプには、1 つだけ問い合わせ可能なプロパティを設定できます。1 つ設定されている場合、そのプロパティは必須でなければならず、シークレットであってはなりません。

    • name: ユーザーに表示されるプロパティ名。

  • urls: URLs CodePipeline のリストがユーザーに表示されます。

    • entityUrlTemplate: 設定ページなど、アクションタイプの外部リソースへの URL。

    • executionUrlTemplate: アクションの最新の実行の詳細への URL。

    • revisionUrlTemplate: コンソールに表示される URL で CodePipeline、ユーザーが外部アクションの設定を更新または変更できるページが表示されます。

    • thirdPartyConfigurationUrl: ユーザーが外部サービスにサインアップし、そのサービスによって提供されるアクションの初期設定を実行できるページへの URL。

次のコードは、アクションタイプ定義ファイルの例を示しています。

{ "actionType": { "description": "string", "executor": { "configuration": { "jobWorkerExecutorConfiguration": { "pollingAccounts": [ "string" ], "pollingServicePrincipals": [ "string" ] }, "lambdaExecutorConfiguration": { "lambdaFunctionArn": "string" } }, "jobTimeout": number, "policyStatementsTemplate": "string", "type": "string" }, "id": { "category": "string", "owner": "string", "provider": "string", "version": "string" }, "inputArtifactDetails": { "maximumCount": number, "minimumCount": number }, "outputArtifactDetails": { "maximumCount": number, "minimumCount": number }, "permissions": { "allowedAccounts": [ "string" ] }, "properties": [ { "description": "string", "key": boolean, "name": "string", "noEcho": boolean, "optional": boolean, "queryable": boolean } ], "urls": { "configurationUrl": "string", "entityUrlTemplate": "string", "executionUrlTemplate": "string", "revisionUrlTemplate": "string" } } }

ステップ 3: との統合を登録する CodePipeline

アクションタイプを に登録するには CodePipeline、 CodePipeline サービスチームに連絡してリクエストしてください。

CodePipeline サービスチームは、サービス codebase に変更を加えて新しいアクションタイプ統合を登録します。 は、パブリックアクションプライベートアクション の 2 つの新しいアクション CodePipeline を登録します。プライベートアクションをテストに使用し、準備ができたら、顧客トラフィックを処理する公開アクションを起動します。

Lambda インテグレーションのリクエストを登録するには
  • 次のフォームを使用して、 CodePipeline サービスチームにリクエストを送信します。

    This issue will track the onboarding of [Name] in CodePipeline. [Contact engineer] will be the primary point of contact for this integration. Name of the action type as you want it to appear to customers: Example.com Testing Initial onboard checklist: 1. Attach an action type definition file in JSON format. This includes the schema for the action type 2. A list of test accounts for the allowlist which can access the new action type [{account, account_name}] 3. The Lambda function ARN 4. List of AWS リージョン where your action will be available 5. Will this be available as a public action?
ジョブワーカーインテグレーションのリクエストを登録するには
  • 次のフォームを使用して、 CodePipeline サービスチームにリクエストを送信します。

    This issue will track the onboarding of [Name] in CodePipeline. [Contact engineer] will be the primary point of contact for this integration. Name of the action type as you want it to appear to customers: Example.com Testing Initial onboard checklist: 1. Attach an action type definition file in JSON format. This includes the schema for the action type. 2. A list of test accounts for the allowlist which can access the new action type [{account, account_name}] 3. URL information: Website URL: https://www.example.com/%TestThirdPartyName%/%TestVersionNumber% Example URL pattern where customers will be able to review their configuration information for the action: https://www.example.com/%TestThirdPartyName%/%customer-ID%/%CustomerActionConfiguration% Example runtime URL pattern: https://www.example.com/%TestThirdPartyName%/%customer-ID%/%TestRunId% 4. List of AWS リージョン where your action will be available 5. Will this be available as a public action?

ステップ 4: 新しいインテグレーションを起動する

新しい統合をパブリックに使用する準備ができたら、 CodePipeline サービスチームに連絡してください。

使用可能なアクションタイプをパイプラインに追加する (コンソール)

アクションタイプをパイプラインに追加して、テストできるようにします。新しいパイプラインを作成するか、既存のパイプラインを編集することでこれが可能になります。

注記

アクションタイプがソース、ビルド、またはデプロイカテゴリのアクションの場合は、パイプラインを作成することで追加できます。アクションタイプがテストカテゴリにある場合は、既存のパイプラインを編集して追加する必要があります。

CodePipeline コンソールから既存のパイプラインにアクションタイプを追加するには
  1. にサインイン AWS Management Console し、http://console.aws.amazon.com/codesuite/codepipeline/home で CodePipeline コンソールを開きます。

  2. パイプラインのリストで、アクションタイプを追加したいパイプラインを選択します。

  3. パイプラインの概要ビューページで、[編集] を選択します。

  4. ステージの編集を選択します。アクションタイプを追加したいステージで、[ Add action group (アクショングループの追加) ] を選択します。[アクションの編集 ] ページが表示されます。

  5. [アクションの編集 ] ページで、[Action name (アクション名) ] にアクションの名前を入力します。これは、パイプラインのステージに表示される名前です。

  6. [アクションプロバイダ ] で、リストからアクションタイプを選択します。

    リスト内の値は、アクションタイプ定義ファイルで指定された provider に基づいています。

  7. [入力アーティファクト ] で、次の形式でアーティファクト名を入力します。

    Artifactname::FileName

    許容される最小数量と最大数量は、アクションタイプ定義ファイルで指定される inputArtifactDetails に基づいて定義されます。

  8. [<Action_Name> への接続 ] を選択します。

    ブラウザウィンドウが開き、アクションタイプ用に作成したウェブサイトに接続します。

  9. 顧客としてウェブサイトにログインし、顧客がアクションタイプを使用するための手順を完了します。手順はアクションのカテゴリ、ウェブサイト、および構成によって異なりますが、通常、顧客を [アクションの編集 ] ページへ送り返す完了アクションが含まれます。

  10. CodePipeline 「アクションの編集」ページに、アクションの追加設定フィールドが表示されます。表示されるフィールドは、アクション定義ファイルで指定した設定プロパティです。アクションタイプに合わせてカスタマイズしたフィールドに情報を入力します。

    例えば、アクション定義ファイルで Host という名前のプロパティが指定されている場合、ホスト のラベルが付いたフィールドが、お客様のアクション用に [アクションの編集 ] ページに表示されます。

  11. [出力アーティファクト ] で、次の形式でアーティファクト名を入力します。

    Artifactname::FileName

    許容される最小数量と最大数量は、アクションタイプ定義ファイルで指定される outputArtifactDetails に基づいて定義されます。

  12. [完了] を選択して、パイプラインの詳細ページに戻ります。

    注記

    顧客は、オプションで CLI を使用してアクションタイプをパイプラインに追加できます。

  13. アクションをテストするには、パイプラインのソースステージで指定されたソースに変更をコミットするか、[パイプラインを手動で開始する] の手順に従います。

アクションタイプでパイプラインを作成するには、でパイプラインを作成する CodePipeline のステップに従い、テストをするステージの数だけアクションタイプを選択します。

アクションタイプを表示する

CLI を使用して、アクションタイプを表示できます。get-action-type コマンドを使用して、インテグレーションモデルを使用して作成されたアクションタイプを表示します。

アクションタイプを表示するには
  1. 入力 JSON ファイルを作成し、ファイルの名前を file.json にします。アクションタイプ ID を次の例に示すように JSON 形式で追加します。

    { "category": "Test", "owner": "ThirdParty", "provider": "TestProvider", "version": "1" }
  2. ターミナルウィンドウまたはコマンドラインで、get-action-type コマンドを実行します。

    aws codepipeline get-action-type --cli-input-json file://file.json

    このコマンドは、アクションタイプのアクション定義の出力を返します。この例では、Lambda インテグレーションモデルで作成されたアクションタイプを表示します。

    { "actionType": { "executor": { "configuration": { "lambdaExecutorConfiguration": { "lambdaFunctionArn": "arn:aws:lambda:us-west-2:<account-id>:function:my-function" } }, "type": "Lambda" }, "id": { "category": "Test", "owner": "ThirdParty", "provider": "TestProvider", "version": "1" }, "inputArtifactDetails": { "minimumCount": 0, "maximumCount": 1 }, "outputArtifactDetails": { "minimumCount": 0, "maximumCount": 1 }, "permissions": { "allowedAccounts": [ "<account-id>" ] }, "properties": [] } }

アクションタイプを更新する

CLI を使用して、インテグレーションモデルで作成されたアクションタイプを編集できます。

公開アクションタイプの場合、所有者を更新することはできず、オプションのプロパティを必須事項に変更することはできません。また、新しいオプションプロパティのみを追加できます。

  1. get-action-type コマンドを使用して、アクションタイプの構造を取得します。構造をコピーします。

  2. 入力 JSON ファイルを作成し、ファイルの名前を action.json にします。前のステップでコピーしたアクションタイプ構造を、そこに貼り付けます。変更したいパラメータを更新します。オプションのパラメータを追加することもできます。

    入力ファイルのパラメータの詳細については、ステップ 2: アクションタイプ定義ファイルを作成する の「アクション定義ファイルの説明」を参照してください。

    次の例では、Lambda インテグレーションモデルで作成されたアクションタイプの例を更新する方法を表示します。この例では、以下の変更が発生します。

    • provider の名前を TestProvider1 に変更します。

    • 900 秒のジョブタイムアウト制限を追加します。

    • Host という名前のアクション設定プロパティを追加します。これは、アクションを使用する顧客に表示されます。

      { "actionType": { "executor": { "configuration": { "lambdaExecutorConfiguration": { "lambdaFunctionArn": "arn:aws:lambda:us-west-2:<account-id>:function:my-function" } }, "type": "Lambda", "jobTimeout": 900 }, "id": { "category": "Test", "owner": "ThirdParty", "provider": "TestProvider1", "version": "1" }, "inputArtifactDetails": { "minimumCount": 0, "maximumCount": 1 }, "outputArtifactDetails": { "minimumCount": 0, "maximumCount": 1 }, "permissions": { "allowedAccounts": [ "account-id" ] }, "properties": { "description": "Owned build action parameter description", "optional": true, "noEcho": false, "key": true, "queryable": false, "name": "Host" } } }
  3. ターミナルまたはコマンドラインで、update-action-type コマンドを実行します。

    aws codepipeline update-action-type --cli-input-json file://action.json

    このコマンドは、更新されたパラメータに適合するアクションタイプの出力を返します。