> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# IAM と課金

AWS Marketplace では、FineParser Enterprise はワーカー pod 時間単位で、出品情報に記載された料金に基づいて課金されます。各ワーカーは起動時に AWS Marketplace に登録され、停止するまで使用量が計測されます。オーケストレーターと取り込みは課金対象外のため、ゼロまでスケールダウンしたプールではソフトウェア料金は発生しません。`scaling.minWorkers` によって稼働し続けているワーカーは、処理する作業の有無にかかわらず課金されます。

ワーカーは、サービスアカウント用 IAM ロール (IRSA) を介し、お客様のアカウント内の IAM ロールを使用して登録します。EKS Pod Identity、ノードロール、アクセスキーはサポートされていません。登録に失敗したワーカーは、作業を受け付けずに終了します。

## ロールとサービスアカウントを作成する

ロールには AWS 管理ポリシー `AWSMarketplaceMeteringRegisterUsage` を付与し、さらにリリースの実行に使用されるサービスアカウントを信頼するように設定する必要があります。

> [!WARNING]
>
> `AWSMarketplaceMeteringFullAccess` は、名前に反して `RegisterUsage` を許可しません。このポリシーで署名したワーカーは拒否されます。

> [tab] 独自のサービスアカウント
>
> `eksctl` を使用すると、ロールとアノテーション付きのサービスアカウントをまとめて作成できます。
>
> ```bash theme={null}
> eksctl create iamserviceaccount \
>   --cluster <cluster> --region <region> \
>   --namespace fineparser --name fineparser \
>   --role-name FineParserMetering \
>   --attach-policy-arn arn:aws:iam::aws:policy/AWSMarketplaceMeteringRegisterUsage \
>   --approve
> ```
>
> ```yaml fineparser-values.yaml theme={null}
> serviceAccount:
>   create: false
>   name: fineparser
> ```
>
> AWS Marketplace の起動手順で `serviceAccount.name` が自動入力される場合があります。その場合も、この値には上記の方法で設定したサービスアカウントを指定する必要があります。

> [tab] チャートで作成されるサービスアカウント
>
> リリース名が `fineparser` の場合、チャートが作成するサービスアカウントの名前は `fineparser-orchestrator` になります。この名前を信頼するロールを作成し、そのロールをチャートのアカウントにアノテーションとして設定します。
>
> ```bash theme={null}
> eksctl create iamserviceaccount \
>   --cluster <cluster> --region <region> \
>   --namespace fineparser --name fineparser-orchestrator \
>   --role-name FineParserMetering --role-only \
>   --attach-policy-arn arn:aws:iam::aws:policy/AWSMarketplaceMeteringRegisterUsage \
>   --approve
> ```
>
> ```yaml fineparser-values.yaml theme={null}
> serviceAccount:
>   annotations:
>     eks.amazonaws.com/role-arn: arn:aws:iam::<account>:role/FineParserMetering
> ```

別の方法でロールを作成する場合は、信頼ポリシーでクラスターの OIDC プロバイダーからの `sts:AssumeRoleWithWebIdentity` を許可し、`sub` を `system:serviceaccount:<namespace>:<service-account>` に、`aud` を `sts.amazonaws.com` に設定する必要があります。

## リージョン

ワーカーは、EKS Pod Identity Webhook によって注入されたリージョンに登録されます。クラスターで `AWS_REGION` が注入されない場合にのみ、`awsMarketplace.region` を設定してください。

## 課金が正しく機能していることを確認する

ジョブによってワーカーが起動したら、次の手順を実行します。

```bash theme={null}
kubectl -n fineparser logs deploy/fineparser-worker | grep billing
# billing: registered with AWS Marketplace, this pod is metered hourly
```

それ以外の出力が表示された場合は、その内容から問題を特定できます。[トラブルシューティング](https://docs.abbyy.com/ja/fine-parser/enterprise/reference/troubleshooting.md#workers-exit-at-startup)を参照してください。
