CentOS Stream 9
Sponsored Link

OpenStack Epoxy : CloudKitty 利用方法2025/05/29

 

OpenStack Rating Service (CloudKitty) の利用方法です。

当例では以下のような環境を例に CloudKitty をインストールしています。

------------+--------------------------+--------------------------+------------
            |                          |                          |
        eth0|10.0.0.30             eth0|10.0.0.50             eth0|10.0.0.51
+-----------+-----------+  +-----------+-----------+  +-----------+-----------+
|   [ dlp.srv.world ]   |  | [ network.srv.world ] |  |  [ node01.srv.world ] |
|     (Control Node)    |  |     (Network Node)    |  |     (Compute Node)    |
|                       |  |                       |  |                       |
|  MariaDB    RabbitMQ  |  |      Open vSwitch     |  |        Libvirt        |
|  Memcached  Nginx     |  |     Neutron Server    |  |      Nova Compute     |
|  Keystone   httpd     |  |      OVN-Northd       |  |      Open vSwitch     |
|  Glance     Nova API  |  |  Nginx  iSCSI Target  |  |   OVN Metadata Agent  |
|  Cinder API           |  |     Cinder Volume     |  |     OVN-Controller    |
|                       |  |     Gnocchi httpd     |  |   Ceilometer Compute  |
|                       |  |   Ceilometer Central  |  |                       |
|                       |  |     CloudKitty API    |  |                       |
+-----------------------+  +-----------------------+  +-----------------------+

[1] レートを設定したい各々のプロジェクトで、[cloudkitty] ユーザーを [rating] ロールに追加しておきます。
[root@dlp ~(keystone)]#
openstack project list

+----------------------------------+-----------+
| ID                               | Name      |
+----------------------------------+-----------+
| 03262019a5e54890be53c2fc96ed98d0 | service   |
| 6cd379304e2447da8514a66bb6cdfda5 | hiroshima |
| 8f6f2ea0aec84c6f919d15236063d7c0 | admin     |
+----------------------------------+-----------+

[root@dlp ~(keystone)]#
openstack role add --user cloudkitty --project hiroshima rating

[2] [Hashmap] モジュールを有効にします。
[root@dlp ~(keystone)]#
openstack rating module list

+-----------+---------+----------+
| Module    | Enabled | Priority |
+-----------+---------+----------+
| hashmap   | False   |        1 |
| noop      | True    |        1 |
| pyscripts | False   |        1 |
+-----------+---------+----------+

[root@dlp ~(keystone)]#
openstack rating module enable hashmap

+---------+---------+----------+
| Module  | Enabled | Priority |
+---------+---------+----------+
| hashmap | True    |        1 |
+---------+---------+----------+

[root@dlp ~(keystone)]#
openstack rating module list

+-----------+---------+----------+
| Module    | Enabled | Priority |
+-----------+---------+----------+
| hashmap   | True    |        1 |
| noop      | True    |        1 |
| pyscripts | False   |        1 |
+-----------+---------+----------+
[3] Instance Uptime にレートを設定します。
[1] で設定したプロジェクト所属ユーザーが、設定した [flavor_id] でインスタンスを起動した場合、[cloudkitty.conf] で設定した [period] の間隔毎に、設定したレートで課金されます。
# サービス マッチング ルールを追加

[root@dlp ~(keystone)]#
openstack rating hashmap service create instance

+----------+--------------------------------------+
| Name     | Service ID                           |
+----------+--------------------------------------+
| instance | c0e71c4e-c7c8-41d4-a18b-e58d27933948 |
+----------+--------------------------------------+

# フィールド マッチング ルールを追加

[root@dlp ~(keystone)]#
openstack rating hashmap field create c0e71c4e-c7c8-41d4-a18b-e58d27933948 flavor_id

+-----------+--------------------------------------+--------------------------------------+
| Name      | Field ID                             | Service ID                           |
+-----------+--------------------------------------+--------------------------------------+
| flavor_id | dfcf5d68-8ef2-4132-908e-2997162acc16 | c0e71c4e-c7c8-41d4-a18b-e58d27933948 |
+-----------+--------------------------------------+--------------------------------------+

[root@dlp ~(keystone)]#
openstack flavor list

+----+-----------+-------+------+-----------+-------+-----------+
| ID | Name      |   RAM | Disk | Ephemeral | VCPUs | Is Public |
+----+-----------+-------+------+-----------+-------+-----------+
| 1  | m1.tiny   |  2048 |   10 |         0 |     1 | True      |
| 2  | m1.small  |  4096 |   10 |         0 |     2 | True      |
| 3  | m1.medium |  8192 |   10 |         0 |     4 | True      |
| 4  | m1.large  | 16384 |   10 |         0 |     8 | True      |
| 5  | m2.large  | 16384 |   10 |        10 |     8 | True      |
+----+-----------+-------+------+-----------+-------+-----------+

# マッピングを作成
# [flavor_id] が [2] のインスタンスに [0.5] ドルのコストを設定
[root@dlp ~(keystone)]# openstack rating hashmap mapping create 0.5 \
--field-id dfcf5d68-8ef2-4132-908e-2997162acc16 \
--value 2 -t flat 
+--------------------------------------+-------+--------------------------------+------+--------------------------------------+------------+----------+------------+
| Mapping ID                           | Value | Cost                           | Type | Field ID                             | Service ID | Group ID | Project ID |
+--------------------------------------+-------+--------------------------------+------+--------------------------------------+------------+----------+------------+
| fdd80698-089c-4305-9ab7-8d245b1d20cf | 2     | 0.5000000000000000000000000000 | flat | dfcf5d68-8ef2-4132-908e-2997162acc16 | None       | None     | None       |
+--------------------------------------+-------+--------------------------------+------+--------------------------------------+------------+----------+------------+
[4] [1] で CloudKitty と関連付けたプロジェクトに所属する任意の Openstack ユーザーで、インスタンスを操作して、動作確認します。
[cent@dlp ~(keystone)]$
openstack server list

+--------------------------------------+----------+---------+------------------------------------+----------------+----------+
| ID                                   | Name     | Status  | Networks                           | Image          | Flavor   |
+--------------------------------------+----------+---------+------------------------------------+----------------+----------+
| ba6f1ab3-86c9-4966-b1e6-ceabe5353c07 | CentOS-9 | SHUTOFF | private=10.0.0.208, 192.168.100.57 | CentOS-Stream9 | m1.small |
+--------------------------------------+----------+---------+------------------------------------+----------------+----------+

[cent@dlp ~(keystone)]$
openstack server start CentOS-9
# 一定時間経過後 レートが加算される

[cent@dlp ~(keystone)]$
openstack rating summary get

+----------------------------------+---------------+------+---------------------+---------------------+
| Tenant ID                        | Resource Type | Rate | Begin Time          | End Time            |
+----------------------------------+---------------+------+---------------------+---------------------+
| 6cd379304e2447da8514a66bb6cdfda5 | ALL           | 0.5  | 2025-05-01T00:00:00 | 2025-06-01T00:00:00 |
+----------------------------------+---------------+------+---------------------+---------------------+

# インスタンス稼働中は [period] の間隔毎に 設定したレートがさらに課金される

[cent@dlp ~(keystone)]$
openstack rating summary get

+----------------------------------+---------------+------+---------------------+---------------------+
| Tenant ID                        | Resource Type | Rate | Begin Time          | End Time            |
+----------------------------------+---------------+------+---------------------+---------------------+
| 6cd379304e2447da8514a66bb6cdfda5 | ALL           | 1.0  | 2025-05-01T00:00:00 | 2025-06-01T00:00:00 |
+----------------------------------+---------------+------+---------------------+---------------------+

# データフレーム表示

[cent@dlp ~(keystone)]$
openstack rating dataframes get

+---------------------+---------------------+----------------------------------+------------------------------
| Begin               | End                 | Project ID                       | Resources                    
+---------------------+---------------------+----------------------------------+------------------------------
| 2025-05-29T00:40:00 | 2025-05-29T00:50:00 | 6cd379304e2447da8514a66bb6cdfda5 | [{'rating': '0.0', 'service':
| 2025-05-29T01:00:00 | 2025-05-29T01:10:00 | 6cd379304e2447da8514a66bb6cdfda5 | [{'rating': '0.0', 'service':
| 2025-05-29T01:20:00 | 2025-05-29T01:30:00 | 6cd379304e2447da8514a66bb6cdfda5 | [{'rating': '0.5', 'service':
| 2025-05-29T01:30:00 | 2025-05-29T01:40:00 | 6cd379304e2447da8514a66bb6cdfda5 | [{'rating': '0.5', 'service':
+---------------------+---------------------+----------------------------------+------------------------------
-----------------------------------------------------------------------------------------------------------------------------
                                                                                                                             
-----------------------------------------------------------------------------------------------------------------------------
 'instance', 'desc': {'flavor_name': 'm1.small', 'flavor_id': '2', 'vcpus': '', 'id': 'ba6f1ab3-86c9-4966-b1e6-ceabe5353c07',
 'volume.size', 'desc': {'volume_type': 'f6e336ad-7ea0-4d3a-9c9b-7264c1da37ea', 'id': '04a254e1-b90f-4d2d-8371-226feb934991',
 'instance', 'desc': {'flavor_name': 'm1.small', 'flavor_id': '2', 'vcpus': '', 'id': 'ba6f1ab3-86c9-4966-b1e6-ceabe5353c07',
 'instance', 'desc': {'flavor_name': 'm1.small', 'flavor_id': '2', 'vcpus': '', 'id': 'ba6f1ab3-86c9-4966-b1e6-ceabe5353c07',
-----------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------
                                                                                                                            
----------------------------------------------------------------------------------------------------------------------------
 'project_id': '6cd379304e2447da8514a66bb6cdfda5', 'user_id': 'b6e98dc2822541dd8c4571ac4ed54778', 'week_of_the_year': '21', 
 'project_id': '6cd379304e2447da8514a66bb6cdfda5', 'user_id': 'b6e98dc2822541dd8c4571ac4ed54778', 'week_of_the_year': '21', 
 'project_id': '6cd379304e2447da8514a66bb6cdfda5', 'user_id': 'b6e98dc2822541dd8c4571ac4ed54778', 'week_of_the_year': '21', 
 'project_id': '6cd379304e2447da8514a66bb6cdfda5', 'user_id': 'b6e98dc2822541dd8c4571ac4ed54778', 'week_of_the_year': '21', 
----------------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------------------------------------+
                                                                                                                                                     |
-----------------------------------------------------------------------------------------------------------------------------------------------------+
'day_of_the_year': '149', 'month': '5', 'year': '2025', 'tenant_id': '6cd379304e2447da8514a66bb6cdfda5'}, 'volume': '1', 'rate_value': '0.0000'}]    |
'day_of_the_year': '149', 'month': '5', 'year': '2025', 'tenant_id': '6cd379304e2447da8514a66bb6cdfda5'}, 'volume': '1E+1', 'rate_value': '0.0000'}] |
'day_of_the_year': '149', 'month': '5', 'year': '2025', 'tenant_id': '6cd379304e2447da8514a66bb6cdfda5'}, 'volume': '1', 'rate_value': '0.5000'}]    |
'day_of_the_year': '149', 'month': '5', 'year': '2025', 'tenant_id': '6cd379304e2447da8514a66bb6cdfda5'}, 'volume': '1', 'rate_value': '0.5000'}]    |
-----------------------------------------------------------------------------------------------------------------------------------------------------+
[5] Volume Size にレートを設定します。
[1] で設定したプロジェクト所属ユーザーが、Cinder ボリュームを作成した場合、1 GB 毎に、設定したレートで課金されます。
# サービス マッチング ルールを追加

[root@dlp ~(keystone)]#
openstack rating hashmap service create volume.size

+-------------+--------------------------------------+
| Name        | Service ID                           |
+-------------+--------------------------------------+
| volume.size | ea99bedc-9893-4550-a671-483a6a5f6da6 |
+-------------+--------------------------------------+

# マッピングを作成
# 1 GB 毎に [1.5] ドルのコストを設定
[root@dlp ~(keystone)]# openstack rating hashmap mapping create 1.5 \
-s ea99bedc-9893-4550-a671-483a6a5f6da6 \
-t flat 
+--------------------------------------+-------+--------------------------------+------+----------+--------------------------------------+----------+------------+
| Mapping ID                           | Value | Cost                           | Type | Field ID | Service ID                           | Group ID | Project ID |
+--------------------------------------+-------+--------------------------------+------+----------+--------------------------------------+----------+------------+
| 568a7b25-f65c-4155-8166-943c36949e8e | None  | 1.5000000000000000000000000000 | flat | None     | ea99bedc-9893-4550-a671-483a6a5f6da6 | None     | None       |
+--------------------------------------+-------+--------------------------------+------+----------+--------------------------------------+----------+------------+

# 30 GB 以上のボリュームに対して [1.5] ドルのコスト設定から
# 10 % 引きのディスカウントを設定
[root@dlp ~(keystone)]# openstack rating hashmap threshold create 30 0.90 \
-s ea99bedc-9893-4550-a671-483a6a5f6da6 \
-t rate 
+--------------------------------------+-------------+--------------------------------+------+----------+--------------------------------------+----------+------------+
| Threshold ID                         | Level       | Cost                           | Type | Field ID | Service ID                           | Group ID | Project ID |
+--------------------------------------+-------------+--------------------------------+------+----------+--------------------------------------+----------+------------+
| 61c4d485-3779-4937-88c8-a43f3d41dc80 | 30.00000000 | 0.9000000000000000222044604925 | rate | None     | ea99bedc-9893-4550-a671-483a6a5f6da6 | None     | None       |
+--------------------------------------+-------------+--------------------------------+------+----------+--------------------------------------+----------+------------+
[6] [1] で CloudKitty と関連付けたプロジェクトに所属する任意の Openstack ユーザーで、ボリュームを作成して、動作確認します。
[cent@dlp ~(keystone)]$
openstack rating summary get

+----------------------------------+---------------+------+---------------------+---------------------+
| Tenant ID                        | Resource Type | Rate | Begin Time          | End Time            |
+----------------------------------+---------------+------+---------------------+---------------------+
| 6cd379304e2447da8514a66bb6cdfda5 | ALL           | 1.5  | 2025-05-01T00:00:00 | 2025-06-01T00:00:00 |
+----------------------------------+---------------+------+---------------------+---------------------+

[cent@dlp ~(keystone)]$ openstack volume create --size 10 disk01 

[cent@dlp ~(keystone)]$
openstack volume list

+--------------------------------------+--------+-----------+------+-------------+
| ID                                   | Name   | Status    | Size | Attached to |
+--------------------------------------+--------+-----------+------+-------------+
| 6a7fa547-eac7-4098-a394-b9b738aed34d | disk01 | available |   10 |             |
+--------------------------------------+--------+-----------+------+-------------+

# 一定時間経過後 レートが加算される

[cent@dlp ~(keystone)]$
openstack rating summary get

+----------------------------------+---------------+------+---------------------+---------------------+
| Tenant ID                        | Resource Type | Rate | Begin Time          | End Time            |
+----------------------------------+---------------+------+---------------------+---------------------+
| 6cd379304e2447da8514a66bb6cdfda5 | ALL           | 16.5 | 2025-05-01T00:00:00 | 2025-06-01T00:00:00 |
+----------------------------------+---------------+------+---------------------+---------------------+

[cent@dlp ~(keystone)]$
openstack rating dataframes get

+---------------------+---------------------+----------------------------------+-------------------------------
| Begin               | End                 | Project ID                       | Resources                     
+---------------------+---------------------+----------------------------------+-------------------------------
| 2025-05-29T00:40:00 | 2025-05-29T00:50:00 | 6cd379304e2447da8514a66bb6cdfda5 | [{'rating': '0.0', 'service': 
| 2025-05-29T01:00:00 | 2025-05-29T01:10:00 | 6cd379304e2447da8514a66bb6cdfda5 | [{'rating': '0.0', 'service': 
| 2025-05-29T01:20:00 | 2025-05-29T01:30:00 | 6cd379304e2447da8514a66bb6cdfda5 | [{'rating': '0.5', 'service': 
| 2025-05-29T01:30:00 | 2025-05-29T01:40:00 | 6cd379304e2447da8514a66bb6cdfda5 | [{'rating': '0.5', 'service': 
| 2025-05-29T01:40:00 | 2025-05-29T01:50:00 | 6cd379304e2447da8514a66bb6cdfda5 | [{'rating': '0.5', 'service': 
| 2025-05-29T01:50:00 | 2025-05-29T02:00:00 | 6cd379304e2447da8514a66bb6cdfda5 | [{'rating': '15.0', 'service':
+---------------------+---------------------+----------------------------------+-------------------------------
-----------------------------------------------------------------------------------------------------------------------------
                                                                                                                             
-----------------------------------------------------------------------------------------------------------------------------
'instance', 'desc': {'flavor_name': 'm1.small', 'flavor_id': '2', 'vcpus': '', 'id': 'ba6f1ab3-86c9-4966-b1e6-ceabe5353c07', 
'volume.size', 'desc': {'volume_type': 'f6e336ad-7ea0-4d3a-9c9b-7264c1da37ea', 'id': '04a254e1-b90f-4d2d-8371-226feb934991', 
'instance', 'desc': {'flavor_name': 'm1.small', 'flavor_id': '2', 'vcpus': '', 'id': 'ba6f1ab3-86c9-4966-b1e6-ceabe5353c07', 
'instance', 'desc': {'flavor_name': 'm1.small', 'flavor_id': '2', 'vcpus': '', 'id': 'ba6f1ab3-86c9-4966-b1e6-ceabe5353c07', 
'instance', 'desc': {'flavor_name': 'm1.small', 'flavor_id': '2', 'vcpus': '', 'id': 'ba6f1ab3-86c9-4966-b1e6-ceabe5353c07', 
 'volume.size', 'desc': {'volume_type': '__DEFAULT__', 'id': '6a7fa547-eac7-4098-a394-b9b738aed34d', 'project_id': '6cd379304
-----------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------
                                                                                                                           
---------------------------------------------------------------------------------------------------------------------------
'project_id': '6cd379304e2447da8514a66bb6cdfda5', 'user_id': 'b6e98dc2822541dd8c4571ac4ed54778', 'week_of_the_year': '21', 
'project_id': '6cd379304e2447da8514a66bb6cdfda5', 'user_id': 'b6e98dc2822541dd8c4571ac4ed54778', 'week_of_the_year': '21', 
'project_id': '6cd379304e2447da8514a66bb6cdfda5', 'user_id': 'b6e98dc2822541dd8c4571ac4ed54778', 'week_of_the_year': '21', 
'project_id': '6cd379304e2447da8514a66bb6cdfda5', 'user_id': 'b6e98dc2822541dd8c4571ac4ed54778', 'week_of_the_year': '21', 
'project_id': '6cd379304e2447da8514a66bb6cdfda5', 'user_id': 'b6e98dc2822541dd8c4571ac4ed54778', 'week_of_the_year': '21', 
e2447da8514a66bb6cdfda5', 'user_id': 'b6e98dc2822541dd8c4571ac4ed54778', 'week_of_the_year': '21', 'day_of_the_year': '149'
---------------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------------------------------------+
                                                                                                                                                     |
-----------------------------------------------------------------------------------------------------------------------------------------------------+
'day_of_the_year': '149', 'month': '5', 'year': '2025', 'tenant_id': '6cd379304e2447da8514a66bb6cdfda5'}, 'volume': '1', 'rate_value': '0.0000'}]    |
'day_of_the_year': '149', 'month': '5', 'year': '2025', 'tenant_id': '6cd379304e2447da8514a66bb6cdfda5'}, 'volume': '1E+1', 'rate_value': '0.0000'}] |
'day_of_the_year': '149', 'month': '5', 'year': '2025', 'tenant_id': '6cd379304e2447da8514a66bb6cdfda5'}, 'volume': '1', 'rate_value': '0.5000'}]    |
'day_of_the_year': '149', 'month': '5', 'year': '2025', 'tenant_id': '6cd379304e2447da8514a66bb6cdfda5'}, 'volume': '1', 'rate_value': '0.5000'}]    |
'day_of_the_year': '149', 'month': '5', 'year': '2025', 'tenant_id': '6cd379304e2447da8514a66bb6cdfda5'}, 'volume': '1', 'rate_value': '0.5000'}]    |
, 'month': '5', 'year': '2025', 'tenant_id': '6cd379304e2447da8514a66bb6cdfda5'}, 'volume': '1E+1', 'rate_value': '1.5000'}]                         |
-----------------------------------------------------------------------------------------------------------------------------------------------------+

[cent@dlp ~(keystone)]$
openstack volume create --size 30 disk02

[cent@dlp ~(keystone)]$
openstack volume list

+--------------------------------------+--------+-----------+------+-------------+
| ID                                   | Name   | Status    | Size | Attached to |
+--------------------------------------+--------+-----------+------+-------------+
| d572684a-4c86-40b6-8f7b-def788b56fe6 | disk02 | available |   30 |             |
| 6a7fa547-eac7-4098-a394-b9b738aed34d | disk01 | available |   10 |             |
+--------------------------------------+--------+-----------+------+-------------+

# 一定時間経過後 レートが加算される
# 1.5 x 30 x 0.9 = 40.5

[cent@dlp ~(keystone)]$
openstack rating summary get

+----------------------------------+---------------+------+---------------------+---------------------+
| Tenant ID                        | Resource Type | Rate | Begin Time          | End Time            |
+----------------------------------+---------------+------+---------------------+---------------------+
| 6cd379304e2447da8514a66bb6cdfda5 | ALL           | 57.0 | 2025-05-01T00:00:00 | 2025-06-01T00:00:00 |
+----------------------------------+---------------+------+---------------------+---------------------+

[cent@dlp ~(keystone)]$
openstack rating dataframes get

+---------------------+---------------------+----------------------------------+-------------------------------
| Begin               | End                 | Project ID                       | Resources                     
+---------------------+---------------------+----------------------------------+-------------------------------
| 2025-05-29T00:40:00 | 2025-05-29T00:50:00 | 6cd379304e2447da8514a66bb6cdfda5 | [{'rating': '0.0', 'service': 
| 2025-05-29T01:00:00 | 2025-05-29T01:10:00 | 6cd379304e2447da8514a66bb6cdfda5 | [{'rating': '0.0', 'service': 
| 2025-05-29T01:20:00 | 2025-05-29T01:30:00 | 6cd379304e2447da8514a66bb6cdfda5 | [{'rating': '0.5', 'service': 
| 2025-05-29T01:30:00 | 2025-05-29T01:40:00 | 6cd379304e2447da8514a66bb6cdfda5 | [{'rating': '0.5', 'service': 
| 2025-05-29T01:40:00 | 2025-05-29T01:50:00 | 6cd379304e2447da8514a66bb6cdfda5 | [{'rating': '0.5', 'service': 
| 2025-05-29T01:50:00 | 2025-05-29T02:00:00 | 6cd379304e2447da8514a66bb6cdfda5 | [{'rating': '15.0', 'service':
| 2025-05-29T02:00:00 | 2025-05-29T02:10:00 | 6cd379304e2447da8514a66bb6cdfda5 | [{'rating': '40.5', 'service':
+---------------------+---------------------+----------------------------------+-------------------------------
-----------------------------------------------------------------------------------------------------------------------------
                                                                                                                             
-----------------------------------------------------------------------------------------------------------------------------
'instance', 'desc': {'flavor_name': 'm1.small', 'flavor_id': '2', 'vcpus': '', 'id': 'ba6f1ab3-86c9-4966-b1e6-ceabe5353c07', 
'volume.size', 'desc': {'volume_type': 'f6e336ad-7ea0-4d3a-9c9b-7264c1da37ea', 'id': '04a254e1-b90f-4d2d-8371-226feb934991', 
'instance', 'desc': {'flavor_name': 'm1.small', 'flavor_id': '2', 'vcpus': '', 'id': 'ba6f1ab3-86c9-4966-b1e6-ceabe5353c07', 
'instance', 'desc': {'flavor_name': 'm1.small', 'flavor_id': '2', 'vcpus': '', 'id': 'ba6f1ab3-86c9-4966-b1e6-ceabe5353c07', 
'instance', 'desc': {'flavor_name': 'm1.small', 'flavor_id': '2', 'vcpus': '', 'id': 'ba6f1ab3-86c9-4966-b1e6-ceabe5353c07', 
 'volume.size', 'desc': {'volume_type': '__DEFAULT__', 'id': '6a7fa547-eac7-4098-a394-b9b738aed34d', 'project_id': '6cd379304
 'volume.size', 'desc': {'volume_type': '__DEFAULT__', 'id': 'd572684a-4c86-40b6-8f7b-def788b56fe6', 'project_id': '6cd379304
-----------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------
                                                                                                                           
---------------------------------------------------------------------------------------------------------------------------
'project_id': '6cd379304e2447da8514a66bb6cdfda5', 'user_id': 'b6e98dc2822541dd8c4571ac4ed54778', 'week_of_the_year': '21', 
'project_id': '6cd379304e2447da8514a66bb6cdfda5', 'user_id': 'b6e98dc2822541dd8c4571ac4ed54778', 'week_of_the_year': '21', 
'project_id': '6cd379304e2447da8514a66bb6cdfda5', 'user_id': 'b6e98dc2822541dd8c4571ac4ed54778', 'week_of_the_year': '21', 
'project_id': '6cd379304e2447da8514a66bb6cdfda5', 'user_id': 'b6e98dc2822541dd8c4571ac4ed54778', 'week_of_the_year': '21', 
'project_id': '6cd379304e2447da8514a66bb6cdfda5', 'user_id': 'b6e98dc2822541dd8c4571ac4ed54778', 'week_of_the_year': '21', 
e2447da8514a66bb6cdfda5', 'user_id': 'b6e98dc2822541dd8c4571ac4ed54778', 'week_of_the_year': '21', 'day_of_the_year': '149'
e2447da8514a66bb6cdfda5', 'user_id': 'b6e98dc2822541dd8c4571ac4ed54778', 'week_of_the_year': '21', 'day_of_the_year': '149'
---------------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------------------------------------+
                                                                                                                                                     |
-----------------------------------------------------------------------------------------------------------------------------------------------------+
'day_of_the_year': '149', 'month': '5', 'year': '2025', 'tenant_id': '6cd379304e2447da8514a66bb6cdfda5'}, 'volume': '1', 'rate_value': '0.0000'}]    |
'day_of_the_year': '149', 'month': '5', 'year': '2025', 'tenant_id': '6cd379304e2447da8514a66bb6cdfda5'}, 'volume': '1E+1', 'rate_value': '0.0000'}] |
'day_of_the_year': '149', 'month': '5', 'year': '2025', 'tenant_id': '6cd379304e2447da8514a66bb6cdfda5'}, 'volume': '1', 'rate_value': '0.5000'}]    |
'day_of_the_year': '149', 'month': '5', 'year': '2025', 'tenant_id': '6cd379304e2447da8514a66bb6cdfda5'}, 'volume': '1', 'rate_value': '0.5000'}]    |
'day_of_the_year': '149', 'month': '5', 'year': '2025', 'tenant_id': '6cd379304e2447da8514a66bb6cdfda5'}, 'volume': '1', 'rate_value': '0.5000'}]    |
, 'month': '5', 'year': '2025', 'tenant_id': '6cd379304e2447da8514a66bb6cdfda5'}, 'volume': '1E+1', 'rate_value': '1.5000'}]                         |
, 'month': '5', 'year': '2025', 'tenant_id': '6cd379304e2447da8514a66bb6cdfda5'}, 'volume': '3E+1', 'rate_value': '1.3500'}]                         |
-----------------------------------------------------------------------------------------------------------------------------------------------------+
関連コンテンツ