

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

# アクションタイプの使用
<a name="action-types"></a>

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

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

**注記**  
`custom` フィールド内の `owner` でアクションを作成して、ジョブワーカーで実行します。インテグレーションモデルでは作成しません。カスタムアクションの詳細については、「[CodePipeline でカスタムアクションを作成および追加する](actions-create-custom-action.md)」を参照してください。

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

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

  ```
              {
                  "Category": "Test",
                  "Owner": "ThirdParty",
                  "Provider": "TestProvider",
                  "Version": "1"
              },
  ```
+ **実行者設定** - アクションの作成時に指定されたインテグレーションモデルまたはアクションエンジン。アクションタイプの実行者を指定するときは、次の 2 つのタイプのいずれかを選択します。
  + *Lambda:* アクションタイプの所有者は、インテグレーションを Lambda 関数として書き込みます。Lambda 関数は、アクションで使用可能なジョブがあるたびに CodePipeline によって呼び出されます。
  + *ジョブワーカー:* アクションタイプの所有者は、カスタマーパイプラインで利用可能なジョブをポーリングするジョブワーカーとしてインテグレーションを書き込みます。その後ジョブワーカーはジョブを実行し、CodePipeline API を使用してジョブ結果を CodePipeline に送り返します。
**注記**  
ジョブワーカーインテグレーションモデルは、推奨されるインテグレーションモデルではありません。
+ **入力および出力アーティファクト:** アクションタイプの所有者がアクションの顧客に対して指定するアーティファクトの制限。
+ **アクセス許可: **サードパーティーのアクションタイプにアクセスできる顧客を指定するアクセス許可戦略。使用可能なアクセス許可戦略は、アクションタイプで選択したインテグレーションモデルによって異なります。
+ **URL:** アクションタイプの所有者の設定ページなど、顧客が操作できるリソースへのディープリンク。

**Topics**
+ [アクションタイプをリクエストする](#action-types-request)
+ [使用可能なアクションタイプをパイプラインに追加する (コンソール)](#action-types-in-pipelines)
+ [アクションタイプを表示する](#action-types-view-cli)
+ [アクションタイプを更新する](#action-types-update-cli)

## アクションタイプをリクエストする
<a name="action-types-request"></a>

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

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

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



### ステップ 1: インテグレーションモデルを選択する
<a name="action-types-choose-model"></a>

インテグレーションモデルを選択し、そのモデルの構成を作成します。インテグレーションモデルを選択したら、インテグレーションリソースを構成する必要があります。
+ Lambda インテグレーションモデルの場合、Lambda 関数を作成し、許可を追加します。インテグレータである Lambda 関数に許可を追加して、CodePipeline サービスプリンシパル `codepipeline.amazonaws.com` を使用して呼び出す許可を CodePipeline サービスに提供します。アクセス許可は、 CloudFormation またはコマンドラインを使用して追加できます。
  +  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
    ```
  + [コマンドラインのドキュメント](https://docs.aws.amazon.com/cli/latest/reference/lambda/add-permission.html)
+ ジョブワーカーインテグレーションモデルの場合、ジョブワーカーが CodePipeline API を使用してジョブをポーリングすることが許可されたアカウントのリストを使用してインテグレーションを作成します。

### ステップ 2: アクションタイプ定義ファイルを作成する
<a name="action-type-definition-file"></a>

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

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

アクションタイプ定義ファイルパラメータの詳細については、「[ActionTypeDeclaration](https://docs.aws.amazon.com/cli/latest/reference/codepipelineAPI_ActionTypeDeclaration.html)」および [[CodePipeline API リファレンス](https://docs.aws.amazon.com/cli/latest/reference/codepipelineAPI_UpdateActionType.html)] の「[UpdateActionType](https://docs.aws.amazon.com/cli/latest/reference/codepipeline)」を参照してください。

アクションタイプ定義ファイルには 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`: CodePipeline がユーザーに表示する URL のリスト。
  + `entityUrlTemplate`: 設定ページなど、アクションタイプの外部リソースへの URL。
  + `executionUrlTemplate`: アクションの最新の実行の詳細への URL。
  + `revisionUrlTemplate`: CodePipeline コンソールに表示される、顧客が外部アクションの設定を更新、または変更できるページへの URL。
  + `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 にインテグレーションを登録する
<a name="action-types-register"></a>

アクションタイプを CodePipeline に登録するには、CodePipeline サービスチームにお問い合わせください。

CodePipeline サービスチームにより、サービスコードベースを変更して、新しいアクションタイプのインテグレーションが登録されます。CodePipeline は *公開アクション* と *プライベートアクション* の 2 つの新しいアクションを登録します。プライベートアクションをテストに使用し、準備ができたら、顧客トラフィックを処理する公開アクションを起動します。

**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: 新しいインテグレーションを起動する
<a name="action-types-activate"></a>

新しいインテグレーションを一般的に使用する準備ができたら、CodePipeline サービスチームにお問い合わせください。

## 使用可能なアクションタイプをパイプラインに追加する (コンソール)
<a name="action-types-in-pipelines"></a>

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

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

**CodePipeline コンソールから既存のパイプラインにアクションタイプを追加するには**

1. にサインイン AWS マネジメントコンソール し、[http://console.aws.amazon.com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home) で CodePipeline コンソールを開きます。

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

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

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

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

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

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

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

   `Artifactname::FileName`

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

1. [**<Action\$1Name> への接続 **] を選択します。

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

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

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

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

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

   `Artifactname::FileName`

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

1. [**完了**] を選択して、パイプラインの詳細ページに戻ります。
**注記**  
顧客は、オプションで CLI を使用してアクションタイプをパイプラインに追加できます。

1. アクションをテストするには、パイプラインのソースステージで指定されたソースに変更をコミットするか、[[パイプラインを手動で開始する](https://docs.aws.amazon.com/codepipeline/latest/userguide/how-to-manually-start.html)] の手順に従います。

アクションタイプでパイプラインを作成するには、[パイプライン、ステージ、アクションを作成する](pipelines-create.md) のステップに従い、テストをするステージの数だけアクションタイプを選択します。

## アクションタイプを表示する
<a name="action-types-view-cli"></a>

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

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

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

   ```
   {
       "category": "Test",
       "owner": "ThirdParty",
       "provider": "TestProvider",
       "version": "1"
   }
   ```

1. ターミナルウィンドウまたはコマンドラインで、**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": []
       }
   }
   ```

## アクションタイプを更新する
<a name="action-types-update-cli"></a>

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

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

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

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

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

   次の例では、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"
              }
         }
     }
     ```

1. ターミナルまたはコマンドラインで、**update-action-type** コマンドを実行します。

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

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