Amazon Q Developer Pro を組織で使う際の設定あれこれ

## はじめに
Amazon Q Developerは、開発者が AWS アプリケーションをより効率的に理解、構築、拡張、運用できるようするための AI アシスタントおよびコードジェネレーターです。

Amazon Q Developer は無料枠 (Free Tier) とユーザー数課金の有償版 (Pro Tier) 2 種類の価格帯で提供されます。Pro 版を検証する機会があったので組織レベルで使う際の必要な設定を本記事でまとめます。Amazon Q Developer が提供する機能そのものには触れません。

https://aws.amazon.com/q/developer/pricing/

2025/5/8 最新の AWS コンソールや機能に合わせて内容を更新しました。

## AWS Organization 関連の設定
### AI サービスオプトアウトポリシー
設定対象: 管理アカウント
#### 概要
生成 AI を業務利用するためのルールとして、サービスの利用データを AI の学習に使用させないことを前提としている企業も多いのではないでしょうか。

Amazon Q Developer Pro を使用している場合は、ユーザーデータがサービスの改善に使用されることはありません。無料枠の場合は Amazon Q への質問や、Q が生成するレスポンスとコードなどがサービス改善に使用される可能性があります。

AWS Organizations で AI サービスオプトアウトポリシーを設定すると組織内のメンバーアカウントに対し、ユーザーコンテンツの保存と利用を一律オプトアウトできます。

AI サービスオプトアウトポリシーでサポートされているサービスのリストは以下に記載があります。

https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_ai-opt-out_all.html

* Amazon CodeWhisperer (now part of Amazon Q Developer)
* Amazon Q

の記載がありますね。
ケースによりますが、必ずしも全ユーザーが Pro プランを契約するわけではなく、無料枠を利用するユーザーもいることを考えるとオプトアウトは設定しておくべきでしょう。

#### 設定方法
AWS Organizations のコンソールからポリシー→ AI サービスのオプトアウトポリシーをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/018032ff-a967-40d1-94b3-49cbfc77c7da.png)


進んだ画面で「AI サービスのオプトアウトポリシーを有効にする」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/16ad3d42-4489-4d74-83d8-12abcbc5a89e.png)


ここではすべてのサービスからオプトアウトをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/cc3fa436-b1ee-4e18-9660-9496511e8491.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/846b4fe2-e2fa-4e87-968b-1207445b2630.png)

これにより現在サポートするサービスおよび将来的に追加されるすべてのサービスについてオプトアウトをおこなうカスタマー管理ポリシー `OptOutFromAllAIServces` が作成され、組織の Root にアタッチされます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/487e1264-b30c-459a-81ef-de85fe2d85ba.png)

```json:OptOutFromAllServices
{
  "services": {
    "@@operators_allowed_for_child_policies": [
      "@@none"
    ],
    "default": {
      "@@operators_allowed_for_child_policies": [
        "@@none"
      ],
      "opt_out_policy": {
        "@@operators_allowed_for_child_policies": [
          "@@none"
        ],
        "@@assign": "optOut"
      }
    }
  }
}
```

ポリシーは特殊な文法になっていますが、以下を押さえることで記載内容が理解できると思います。

* `@@operators_allowed_for_child_policies: ["@@none"]` で子ポリシーでのポリシー上書きを禁止します
    * `services` セクション: 個々のサービスに対して、子ポリシーが新しいセクションを追加することを防いでいます
    * `services.default` セクション: 子ポリシーで `opt_out_policy` 以外の新しいセクションを追加することを防いでいます
    * `services.default.opt_out_policy` セクション: 子ポリシーが outOut 設定の値を変更したり、設定を追加したりすることを防ぎます
* オプトアウトは `@@assign` 演算子を使用して指定します


サービス毎にポリシーをカスタマイズしたい場合などはドキュメントを参照ください。

https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_ai-opt-out_syntax.html

:::note warn
AI サービスオプトアウトポリシーでオプトアウトできるのは、マネジメントコンソール、モバイルアプリ、AWS ウェブサイト、AWS Chatbot に限定されます。
:::

無料プランにおける IDE でのデータ共有をオプトアウトするには、利用者ごとに利用者自身で設定をおこなう必要があります。組織の管理者がまとめて管理することはできません。手順はエディタごとに異なるため以下のドキュメントを参照してください。

https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/opt-out-IDE.html

### 信頼されたアクセスの有効化
設定対象: 管理アカウント

信頼されたアクセスとは特定の AWS サービスが、ユーザーに代わって組織およびそのメンバーアカウントで特定のタスクを実行できるようにする機能です。

https://docs.aws.amazon.com/organizations/latest/userguide/orgs_integrate_services.html

Amazon Q Developer Pro は、信頼されたアクセスを使用して、組織の管理アカウントで行われた設定を同じ組織のメンバーアカウントと共有します。

これにより組織の管理者が組織全体のサブスクリプション利用状況を確認できるようになったり、Amazon Q Customizations による提案のカスタマイズをすべてのメンバーアカウントに対して有効化できるようになります。

信頼されたアクセスの有効化は後述の Amazon Q Developer 関連の設定の中でおこなうため、ここでは手順を割愛します。

## AWS IAM Identity Center 関連の設定
### インスタンスタイプの選択
設定対象: 管理アカウント

Amazon Q Developer Pro は IAM Identity Center によるユーザー管理が必須です。組織インスタンスまたはアカウントインスタンスのどちらでも利用が可能ですが、本記事では組織インスタンスの利用を前提とします。IAM Idnetity Center 自体の設定方法は割愛します。

https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/q-pro-tier-setting-up-access.html

### identity-aware console sessions の有効化
設定対象: 管理アカウント

Identity-aware console sessions (ID 強化セッション) は現在 Amazon Q Developer Pro との連携でのみサポートされている機能です。ユーザーが Amazon Q Developer Pro サブスクリプションを通じて Amazon Q にアクセスするにはこの機能を必ず有効化する必要があります。 

https://docs.aws.amazon.com/singlesignon/latest/userguide/identity-aware-sessions.html?icmpid=docs_sso_console

:::note warn
有効化しない場合、マネジメントコンソールや AWS ウェブサイトから Amazon Q Developer Pro の機能を利用することはできません。
:::

組織インスタンスの設定が完了している状態で IAM Identity Center の設定から ID 強化セッションを有効化することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/94ff4a74-762c-4ada-8a8f-ea613277f500.png)

ID 強化セッションの詳細は以下のブログでも紹介されています。

https://aws.amazon.com/jp/blogs/devops/implementing-identity-aware-sessions-with-amazon-q-developer/


## Amazon Q Developer の関連設定
### Q Developer Profile の作成
設定対象: 管理アカウントまたはメンバーアカウント

#### 概要
Q Developer Profile は Pro サブスクリプションの使用を開始する際に必要な一連の設定です。Profile を作成しないとユーザーを登録できません。AWS アカウント内のサポートされているリージョンにつき 1 つだけ作成可能で、後述する KMS キーの設定などがカスタマイズできます。

https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/subscribe-understanding-profile.html

#### 設定方法
Amazon Q Developer コンソールにアクセスし、使用を開始をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/a3df28f2-5147-453b-b0c9-e6f055fcda92.png)

任意のプロファイル名と説明を入力し、作成を完了します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/5470d40e-109e-4194-ae26-51d5ad31094f.png)

:::note
メンバーアカウントでもプロファイルを個別に作成できますが、管理アカウントで作成したプロファイルをメンバーアカウントに共有することが推奨されます。(詳細は後述)
:::

### KMS キーの設定
設定対象: 管理アカウントまたはメンバーアカウント

#### 概要
Amazon Q Developer で以下のような機能を使用する際、ユーザーの入力するデータは AWS 管理の S3 や DynamoDB に一時的に保管されます。デフォルトでは AWS 所有のキーによってデータが暗号化されますが、Developer Pro ではカスタマーマネージドキーを使用することができます。

* Chat in the AWS console
* Diagnosing AWS console errors
* Customizations
* Agent for software development
* Agent for code transformation
* Security scans

#### 設定方法
Amazon Q Developer コンソールの セッティング → Amazon Q Developer アカウントの詳細から Q Developer Profile を編集し、データ暗号化のための KMS キーをカスタマイズできます。組織のポリシーに応じて設定しましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/f318288c-d21f-4959-a93a-78132fd74c56.png)


設定する KMS キーには以下のようなキーポリシーが設定されている必要があります。

```json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "QKMSDecryptGenerateDataKeyPermissions",
      "Effect": "Allow",
      "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey",
        "kms:GenerateDataKeyWithoutPlaintext",
        "kms:ReEncryptFrom",
        "kms:ReEncryptTo"
      ],
      "Resource": [
        "arn:aws:kms:{{region}}:{{account_id}}:key/[[key_id]]"
      ],
      "Condition": {
        "StringLike": {
            "kms:ViaService": [
                "q.{{region}}.amazonaws.com"
            ]
        }
      }
    }
  ]
}
```

https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/data-encryption.html

https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/id-based-policy-examples-users.html#id-based-policy-examples-allow-q-access-encryption

### メンバーアカウントとの Q Develper Profile の共有
設定対象: 管理アカウント

#### 概要
管理アカウントで作成した Q Developer Profile をメンバーアカウントに共有することができます。以下の理由から共有を有効にしておくことが推奨されます。

* **アカウント間の一貫性の確保**
プロファイルを共有すると、すべてのメンバーアカウントで同じ設定が使用されます。管理アカウントのプロファイルはメンバーアカウントで設定されているプロファイルを上書きするため、アカウント間の一貫性が確保されます。

* **アカウントをまたいだ Pro 機能の利用**
プロファイルを共有すると、管理アカウントで Pro Tier にサブスクライブしているユーザーは、メンバーアカウントにサインインした状態でも Pro サブスクリプションを使用できるようになります。プロファイル共有が無効になっている場合、メンバーアカウントでの使用は無料利用枠の制限と機能が適用されます。

https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/q-admin-profile-sharing.html

#### 設定方法
Amazon Q Developer コンソールの セッティング → メンバーアカウント設定 から機能の有効無効を設定できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/6bdca4c3-aea7-46c8-9955-0348e1e5aeb6.png)

### プロンプトのログ記録
設定対象: 管理アカウント

#### 概要
監査や分析などのために Amazon Q Developer のログ記録を有効にすることができます。チャットやインラインコード入力を使用するとリクエストパラメータとレスポンスパラメータの両方が記録されます。Amazon Q Agent for Software Development はリクエストパラメータのみが記録されます。

こちらも組織のポリシーに応じて設定を検討します。

#### ログ記録用バケットの前提条件
:::note info
IAM Identity Center のホームリージョンに関係なく、ログ記録用のバケットはバージニア北部リージョンに作成する必要があります。
:::

また次のようなバケットポリシーを設定します。

```json
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "QDeveloperLogsWrite",
            "Effect": "Allow",
            "Principal": {
                "Service": "q.amazonaws.com"
            },
            "Action": [
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::bucketName/prefix/*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "accountId"
                },
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:codewhisperer:region:accountId:*"
                } 
            }
        }
    ]
}
```

https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/q-admin-prompt-logging.html

#### 設定方法
Amazon Q Developer コンソールの セッティング → プリファレンス からログ記録を有効化できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/67cdbccc-3536-4070-b9ca-73e9b31205b5.png)

保存先の S3 location を入力して変更を保存します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/ea2f73a6-da0c-4699-856d-ad695a9a4da7.png)

### ダッシュボードの有効化
設定対象: 管理アカウントおよびメンバーアカウント

#### 概要
Pro プランのユーザーの利用状況をデータ化したダッシュボード機能が提供されます。デフォルトのダッシュボードには、限定的な使用指標のみが表示されます。詳細ダッシュボードを有効にすることでコード提案をどのくらいの頻度で受け入れているかを示す承認率などのデータを機能レベルで参照できるようになります。

#### 設定方法
Amazon Q Developer コンソールの ダッシュボード または セッティング → Amazon Q Developer の使用アクティビティ から機能を有効化できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/7f7d5875-bfdc-40ce-abd0-6644523eada3.png)

このアカウントの使用状況ダッシュボードを有効にする を有効化して設定を保存します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/6edbf9c0-291d-40cf-80c2-994a4d38f7c9.png)


以下のようなダッシュボードが確認できるようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/0273c4ef-ec2b-459a-aaa3-06bc8ceba941.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/3ad7c7f1-a963-43d4-a561-718c55ef8cba.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/d487c246-b692-4b54-8684-6b995c415447.png)

https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/dashboard.html

### ユーザーアクティビティレポートの有効化
設定対象: 管理アカウントおよびメンバーアカウント

#### 概要
組織内の Pro プランユーザーのアクティビティを収集し、日次で使用状況を CSV 出力することができます。レポートで確認できる情報については以下をご参照ください。

https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/q-admin-user-telemetry.html

#### 設定方法
Amazon Q Developer コンソールの セッティング → Amazon Q Developer の使用アクティビティ から機能を有効化できます。

ユーザーごとの詳細なメトリクスを収集 を有効化して、配信先の S3 location を指定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/87e42a5f-a9c7-4739-851b-115983a08815.png)


プロンプトログと同様、バケットはバージニア北部リージョンに作成する必要があります。

:::note info
プロンプトログのバケットとは異なるバケットを用意することが推奨されています。
:::

> **Prerequisite**
> (Optional but recommended) Be different from the bucket you might be using for prompt logging.

### サブスクリプションビューの設定
設定対象: 管理アカウント

#### 概要
デフォルトでは管理アカウントも自アカウントで登録されたサブスクリプションしか確認することができません。この設定により管理アカウントで組織内のすべてのサブスクリプションの利用状況を参照できるようになります。

#### 設定方法
Amazon Q Developer コンソールのセッティング → サブスクリプションビューの設定で、信頼されたアクセスを有効にする をオンにします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/1604c757-1d74-4527-8a94-d7f8413595ac.png)
 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/d48ade9e-7de9-4014-8b25-6109e232b189.png)


:::note info 
サブスクリプションの表示設定を On にすることで AWS Organizations と Amazon Q の信頼されたアクセスが有効化されます。
:::

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/41d6bcbb-fe9e-484d-822e-da7b6e21efff.png)

サブスクリプションの表示設定が on になると、組織全体の登録状況を確認できます。また CSV 形式のレポートもダウンロード可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/ae1cd8a6-5ccd-4c36-819f-103e09021d8f.png)



### CloudTrail データインベントの取得
設定対象: 管理アカウントおよびメンバーアカウント
#### 概要

Amazon Q Developer 関連の API 呼び出しは管理イベントとして CloudTrail 証跡に記録されますが、追加で IDE や CLI によるアクティビティをデータイベントとして記録することができます。

https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/logging-using-cloudtrail.html

https://repost.aws/ja/knowledge-center/log-amazonq-developer-events

#### 設定方法
データイベントの高度なセレクターでデータイベントタイプ CodeWhisperer および CodeWhisperer customization を選択して保存します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/8fb0778e-13df-4598-b13e-f4755266c76d.png)

:::note info
データイベントにはプロンプトの内容は記録されないため、前述のプロンプトのログ記録を有効化しておく必要があります
:::

## サブスクリプション関連の設定
### ユーザーのサブスクライブ
設定対象: 管理アカウントまたはメンバーアカウント

Amazon Q サブスクリプションコンソールまたは Amazon Q Developer コンソールのサブスクリプションから Amazon Q Developer Pro に登録する IAM Identity ユーザーを選択できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/1a0bda41-7a0f-4090-bb93-e6d44c64a8ea.png)

ウィザードに従ってユーザーまたはグループをサブスクライブします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/501a3c9e-0953-46cb-adba-3c48b0226923.png)


サブスクリプションの作成に成功したことを確認します。グループ単位で割り当てた場合、反映まで最大24時間かかるケースもあるようです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/a50f6023-4a9c-4b41-65ab-5db1b3029ee2.png)

サブスクリプションが割り当てられたユーザーはコンソール上の Amazon Q が Pro Tier で表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/77e77f2d-373e-c2e2-652a-367427859854.png)

:::note info
サブスクリプションの割り当ては、各メンバーアカウントでも実施できます。ただし複数のメンバーアカウント間で Pro 機能を使用したい場合は管理アカウントでユーザーをサブスクライブし、Q Developer Profile の共有を有効化する必要があります。
:::

以上です。他にもあれば随時追加していきたいと思います。
参考になれば幸いです。