

# Jira Cloud への接続
<a name="connecting-to-data-jira-cloud"></a>

Jira Cloud は、Atlassian によって開発されたプラットフォームです。このプラットフォームに含まれる問題追跡製品は、チームがアジャイルプロジェクトを計画および追跡するのに役立ちます。Jira Cloud ユーザーとして、アカウントには問題、ワークフロー、イベントなどのプロジェクトに関するデータが含まれます。AWS Glue を使用して、特定の AWS サービスや他のサポートされているアプリケーションに Jira Cloud データを転送できます。

**Topics**
+ [Jira Cloud 用 AWS Glue サポート](jira-cloud-support.md)
+ [接続を作成および使用するための API オペレーションを含むポリシー](jira-cloud-configuring-iam-permissions.md)
+ [Jira Cloud の設定](jira-cloud-configuring.md)
+ [Jira Cloud 接続の設定](jira-cloud-configuring-connections.md)
+ [Jira Cloud エンティティからの読み取り](jira-cloud-reading-from-entities.md)
+ [Jira Cloud 接続オプション](jira-cloud-connection-options.md)
+ [Jira Cloud コネクタの制限事項と注意事項](jira-cloud-connector-limitations.md)

# Jira Cloud 用 AWS Glue サポート
<a name="jira-cloud-support"></a>

AWS Glue は、次のように Jira Cloud をサポートします。

**ソースとしてサポートされていますか?**  
はい。AWS Glue ETL ジョブを使用して、Jira Cloud からデータをクエリできます。

**ターゲットとしてサポートされていますか?**  
いいえ。

**サポートされている Jira Cloud の API バージョン**  
次の Jira Cloud の API バージョンがサポートされています。
+ v3

バージョン固有ごとのエンティティサポートについては、「[Jira Cloud エンティティからの読み取り](jira-cloud-reading-from-entities.md)」を参照してください。

# 接続を作成および使用するための API オペレーションを含むポリシー
<a name="jira-cloud-configuring-iam-permissions"></a>

次のサンプル ポリシーで、接続の作成と使用に必要な AWS IAM 権限について説明します。新しいロールを作成する場合は、以下を含むポリシーを作成します。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "glue:ListConnectionTypes",
        "glue:DescribeConnectionType",
        "glue:RefreshOAuth2Tokens",
        "glue:ListEntities",
        "glue:DescribeEntity"
      ],
      "Resource": "*"
    }
  ]
}
```

------

上記の方法を使用しない場合は、代わりに次のマネージド IAM ポリシーを使用します:
+ [AWSGlueServiceRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole) – さまざまな AWS Glue プロセスを実行するために必要なリソースへのアクセス権をユーザーに代わって付与します。これらのリソースには AWS Glue 、Amazon S3、IAM、CloudWatch Logs、および Amazon EC2 が含まれます。このポリシーで指定されたリソースの命名規則に従った場合、AWS Glue プロセスは必要なアクセス権限を使用できます。このポリシーは、通常、クローラ、ジョブ、開発エンドポイントを定義するときに指定されたロールにアタッチされます。
+ [AWSGlueConsoleFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSGlueConsoleFullAccess) — ポリシーがアタッチされているアイデンティティが AWS マネージメントコンソールを使用するときは、AWS Glue リソースへのフルアクセスを許可します。このポリシーで指定されたリソースの命名規則に従った場合、ユーザーは完全なコンソール機能を使用できます。このポリシーは、通常 AWS Glue コンソールのユーザーにアタッチされています。

# Jira Cloud の設定
<a name="jira-cloud-configuring"></a>

AWS Glue を使用して Jira Cloud からサポートされている送信先にデータを転送できるようにするには、次の要件を満たす必要があります。

## 最小要件
<a name="jira-cloud-configuring-min-requirements"></a>

以下に、最小要件を示します。
+ Jira クラウドで Jira ソフトウェア製品を使用する Atlassian アカウントを持っていること。詳細については、「[Jira Cloud アカウントの作成](#jira-cloud-configuring-creating-jira-cloud-account)」を参照してください。
+ AWS Glue へのサービスアクセスがある AWS アカウントを作成する必要があります。
+ このアプリにより、AWS Glue がお客様のアカウントに対して認可呼び出しを行うときに、お客様のデータに安全にアクセスするために使用するクライアントの認証情報が提供されます。詳細については、Atlassian デベロッパードキュメントの「[Enabling OAuth 2.0 (3LO)](https://developer.atlassian.com/cloud/jira/platform/oauth-2-3lo-apps/#enabling-oauth-2-0--3lo-)」を参照してください。

これらの要件を満たしている場合、AWS Glue を Jira Cloud アカウントに接続する準備ができています。

## Jira Cloud アカウントの作成
<a name="jira-cloud-configuring-creating-jira-cloud-account"></a>

Jira Cloud アカウントを作成する方法

1. [Atlassian サインアップ URL](https://id.atlassian.com/signup) に移動します。

1. 勤務先 E メールアドレスおよび名前を入力し、**[同意]** を選択します。確認用 E メールを受信します。

1. E メールを確認したら、パスワードを作成して **[サインアップ]** を選択します。

1. 名前およびパスワードを入力し、**[サインアップ]** を選択します。

1. サイトの入力が必要なページにリダイレクトされます。サイト名を入力して **[同意]** を選択します。

Atlassian Cloud サイトが起動したら、プロジェクトタイプの設定に基づいていくつかの質問に回答することで、Jira を設定できます。

既存のアカウントにログインする方法

1. [Atlassian ログイン URL ](https://id.atlassian.com/login) に移動して、認証情報を入力します。

1. E メールおよびパスワードを入力して、**[ログイン]** をクリックします。Jira ダッシュボードにリダイレクトされます。

## Jira Cloud でアプリの作成
<a name="jira-cloud-configuring-creating-jira-cloud-app"></a>

Jira Cloud でアプリを作成し、マネージドクライアントアプリからクライアント ID とクライアントシークレットを取得する方法

1. [Jira Cloud URL](https://id.atlassian.com/login) に移動して、認証情報を入力します。

1. **[作成]** を選択し、**[OAuth 2.0 統合]** オプションを選択します。

1. アプリ名を入力し、**[T&C]** を確認して **[作成]** を選択します。

1. 左側のメニューの **[ディストリビューション]** セクションに移動し、**[編集]** を選択します。

1. **[ディストリビューションコントロールを編集]** セクションで、次の操作を行います。

   1. **[DISTRIBUTION STATUS]** を **[共有]** として選択します。

   1. ベンダー名を入力します。

   1. **[プライバシーポリシー]** の URL を入力します。例: https://docs.aws.amazon.com/glue/latest/dg/security-iam-awsmanpol.html

   1. **[利用規約]** の URL を入力します (オプション)。

   1. **[カスタマーサポートの連絡先]** の URL を入力します (オプション)。

   1. **[PERSONAL DATA DECLARATION]** で [はい/いいえ] を選択し、**[変更を保存]** を選択します。

1. 各アプリの左側のメニューにある **[アクセス許可]** に移動します。

1. **[Jira API]** には、**[追加]** を選択します。追加したら、**[設定]** オプションを選択します。

1. **[クラシックスコープ]** > **[Jira プラットフォーム REST API]** セクションで **[スコープを編集]** を選択し、すべてのスコープを確認します。**[保存]** をクリックします。

1. **[詳細スコープ]** で **[スコープを編集]** を選択し、次のスコープを選択します。

1. 下にスクロールしてスコープを見つけます。「CRM」と「標準」の見出しの下に、選択する必要がある 2 種類のスコープがあります。

1. 以下のスコープを追加します。

   ```
   read:application-role:jira
   read:audit-log:jira
   read:avatar:jira
   read:field:jira
   read:group:jira
   read:instance-configuration:jira
   read:issue-details:jira
   read:issue-event:jira
   read:issue-link-type:jira
   read:issue-meta:jira
   read:issue-security-level:jira
   read:issue-security-scheme:jira
   read:issue-type-scheme:jira
   read:issue-type-screen-scheme:jira
   read:issue-type:jira
   read:issue.time-tracking:jira
   read:label:jira
   read:notification-scheme:jira
   read:permission:jira
   read:priority:jira
   read:project:jira
   read:project-category:jira
   read:project-role:jira
   read:project-type:jira
   read:project-version:jira
   read:project.component:jir
   read:project.property:jira
   read:resolution:jira
   read:screen:jira
   read:status:jira
   read:user:jira
   read:workflow-scheme:jira
   read:workflow:jira
   read:field-configuration:jira
   read:issue-type-hierarchy:jira
   read:webhook:jira
   ```

1. 左側のメニューで **[認証]** に移動し、**[追加]** を選択します。

1. https://us-east-1.console.aws.amazon.com/gluestudio/oauth などの **[コールバック URL]** を入力します。

1. 左側のメニューで **[設定]** に移動し、下にスクロールして **[認証]** の詳細を表示します。クライアントシークレットおよび ID をメモします。

# Jira Cloud 接続の設定
<a name="jira-cloud-configuring-connections"></a>

Jira Cloud は、OAuth2 の AUTHORIZATION\$1CODE のグラントタイプをサポートしています。
+ このグラントタイプは、ユーザーを認証するためにサードパーティーの認証サーバーにユーザーをリダイレクトすることから、「three-legged」の OAuth と見なされます。AWS Glue コンソール経由で接続を作成するときに使用されます。AWS Glue コンソールでは、ユーザーが Jira Cloud にリダイレクトされます。ここではユーザーがログインし、Jira Cloud インスタンスにアクセスするためのリクエストされた権限を AWS Glue に許可する必要があります。
+ ユーザーは、Jira Cloud で独自の接続アプリを作成し、AWS Glue コンソールを介して接続を作成するときに独自のクライアント ID とクライアントシークレットを指定することを選択できます。このシナリオでは、引き続き Jira Cloud にリダイレクトされてログインし、リソースへアクセスするために AWS Glue を承認します。
+ このグラントタイプは、更新トークンとアクセストークンになります。アクセストークンの有効期間は短く、更新トークンを使用してユーザーとやり取りすることなく自動的に更新される場合があります。
+ 認可コード OAuth フロー用の接続アプリケーションの作成に関する Jira Cloud の公開ドキュメントについては、「[OAuth 2.0 (3LO) の有効化](https://developer.atlassian.com/cloud/jira/platform/oauth-2-3lo-apps/#enabling-oauth-2-0--3lo-)」を参照してください。

Jira Cloud 接続を設定するには:

1. AWS Secrets Manager で、次の詳細を含むシークレットを作成します。

   1. カスタマーマネージド接続アプリケーションの場合、シークレットには、`USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` を使用して接続されたアプリケーションのコンシューマーシークレットをキーとして含める必要があります。

   1. 注: AWS Glue で接続ごとにシークレットを作成する必要があります。

1. AWS Glue Glue Studio で、以下の手順に従って **[データ接続]** の下に接続を作成します。

   1. **[接続タイプ]** を選択する際に、[Jira Cloud] を選択します。

   1. Jira Cloud 環境を指定します。

   1. 次のアクションを実行でき、AWS Glue がその権限を持つ AWS IAM ロールを選択します。

------
#### [ JSON ]

****  

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Action": [
              "secretsmanager:DescribeSecret",
              "secretsmanager:GetSecretValue",
              "secretsmanager:PutSecretValue",
              "ec2:CreateNetworkInterface",
              "ec2:DescribeNetworkInterfaces",
              "ec2:DeleteNetworkInterface"
            ],
            "Resource": "*"
          }
        ]
      }
      ```

------

   1. AWS Glue でこの接続に使用する `secretName` を選択して、トークンを配置します。

   1. ネットワークを使用する場合は、ネットワークオプションを選択します。

1. AWS Glue ジョブに関連付けられている IAM ロールに `secretName` を読み取るアクセス許可を付与します。

# Jira Cloud エンティティからの読み取り
<a name="jira-cloud-reading-from-entities"></a>

**前提条件**

読み取り元の Jira Cloud オブジェクト。監査レコードまたは問題などのオブジェクト名が必要です。次の表に、サポートされているエンティティを示します。

**ソースに対応するエンティティ**:


| エンティティ | フィルタリング可能 | 制限をサポートする | Order By をサポートする | Select \$1 をサポートする | パーティション分割をサポートする | 
| --- | --- | --- | --- | --- | --- | 
| Audit Record | はい | あり | なし | あり | あり | 
| 問題 | はい | あり | なし | あり | あり | 
| Issue Field | なし | なし | なし | あり | いいえ | 
| Issue Field Configuration | はい | あり | なし | あり | あり | 
| Issue Link Type | なし | なし | なし | あり | いいえ | 
| Issue Notification Scheme | はい | あり | なし | あり | あり | 
| Issue Security Scheme | なし | なし | なし | あり | いいえ | 
| Issue Type Scheme | はい | あり | あり | あり | あり | 
| Issue Type Screen Scheme | はい | あり | あり | あり | あり | 
| Issue Type | なし | なし | なし | あり | いいえ | 
| Jira Setting | あり | なし | なし | あり | いいえ | 
| Jira Setting Advanced | なし | なし | なし | あり | いいえ | 
| Jira Setting Global | なし | なし | なし | あり | いいえ | 
| ラベル | なし | なし | なし | あり | あり | 
| Myself | あり | なし | なし | あり | いいえ | 
| アクセス許可 | なし | なし | なし | あり | いいえ。 | 
| プロジェクト | はい | あり | あり | あり | あり | 
| Project Category | なし | なし | なし | あり | いいえ | 
| プロジェクトタイプ | なし | なし | なし | あり | いいえ | 
| Server Info | なし | なし | なし | あり | いいえ | 
| Users | なし | なし | いいえ。 | あり | いいえ | 
| ワークフロー | はい | あり | あり | あり | あり | 
| Workflow Scheme | なし | あり | なし | あり | あり | 
| Workflow Scheme Project Association | あり | なし | なし | あり | いいえ | 
| ワークフローステータス | なし | なし | なし | あり | いいえ | 
| Workflow Status Category | なし | なし | なし | あり | いいえ | 

**例**:

```
jiracloud_read = glueContext.create_dynamic_frame.from_options(
    connection_type="JiraCloud",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "audit-record",
        "API_VERSION": "v3"
    }
```

**Jira Cloud エンティティとフィールドの詳細**:

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/jira-cloud-reading-from-entities.html)

## パーティショニングクエリ
<a name="jira-cloud-reading-partitioning-queries"></a>

Spark で並行処理を使用する場合は、追加の Spark オプション `NUM_PARTITIONS` を指定できます。これらのパラメータを使用すると、元のクエリは Spark タスクで同時に実行できるサブクエリの `NUM_PARTITIONS` の数に分割されます。
+ `NUM_PARTITIONS`: パーティション数。

例:

```
jiraCloud_read = glueContext.create_dynamic_frame.from_options(
    connection_type="JiraCloud",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "issue",
        "API_VERSION": "v3",
        "NUM_PARTITIONS": "10"
    }
```

# Jira Cloud 接続オプション
<a name="jira-cloud-connection-options"></a>

Jira Cloud の接続オプションは次のとおりです。
+ `ENTITY_NAME` (文字列) – (必須) 読み取りに使用されます。Jira Cloud のオブジェクトの名前。
+ `API_VERSION` (文字列) – (必須) 読み取りに使用されます。使用する Jira Cloud Rest の API バージョン。例: v3。
+ `DOMAIN_URL` (文字列) – (必須) 使用する Jira Cloud ID。
+ `SELECTED_FIELDS` (List<String>) – Default: empty(SELECT \$1). 読み取りに使用されます。オブジェクトに選択する列です。
+ `FILTER_PREDICATE`(文字列) – デフォルト: 空 読み取りに使用されます。Spark SQL 形式である必要があります。
+ `QUERY`(文字列) - デフォルト: 空 読み取りに使用されます。完全な Spark SQL クエリです。
+ `NUM_PARTITIONS`(整数) – デフォルト: 1。読み取りに使用されます。読み取り用のパーティションの数です。

# Jira Cloud コネクタの制限事項と注意事項
<a name="jira-cloud-connector-limitations"></a>

Jira Cloud コネクタの制限事項または注意事項は次のとおりです。
+  `Contains` 演算子は、`String` データタイプの `resourceName` フィールドには機能しません。
+  デフォルトでは、明示的なフィルターが適用されない場合、過去 30 日間の問題のみがクロールされます。ユーザーには、カスタムフィルターを指定して、このデフォルトフィルターを上書きするオプションがあります。