クレーム
Crossplaneに新しいXRの詳細を設定した後、直接作成するか、クレームを使用することができます。通常、Crossplaneの構成を担当するチーム(多くの場合、プラットフォームチームまたはSREチーム)のみがXRを直接作成する権限を持っています。その他の人は、Composite Resource Claim(略してクレーム)と呼ばれる軽量のプロキシリソースを通じてXRを管理します。
このクレームにより、開発者はテーブルを作成するためにDynamoDBテーブル名、ハッシュキー、およびグローバルインデックス名のデフォルトのみを指定する必要があります。これにより、プラットフォームチームやSREチームは、課金モード、デフォルトの読み書き容量、プロジェクションタイプ、コストやインフラ関連のタグなどの側面を標準化することができます。
apiVersion: awsblueprints.io/v1alpha1
kind: DynamoDBTable
metadata:
name: "${EKS_CLUSTER_NAME}-carts-crossplane"
spec:
dynamoConfig:
attribute:
- name: id
type: S
- name: customerId
type: S
globalSecondaryIndex:
- name: idx_global_customerId
クラスター名環境変数をプレフィックスとして使用したDynamoDBテーブル名を指定します
idをプライマリキー属性として指定します
customerIdをセカンダリー属性として指定します
idx_global_customerIdをグローバルセカンダリインデックス名として指定します
まず、前の「マネージドリソース」セクションで作成したDynamoDBテーブルをクリーンア ップしましょう:
次に、Claimを作成してテーブルを再作成できます:
dynamodbtable.awsblueprints.io/eks-workshop-carts-crossplane created
AWSマネージドサービスのプロビジョニングには時間がかかります。DynamoDBの場合、最大で2分かかることがあります。CrossplaneはKubernetesのCompositeおよびマネージドリソースのSYNCEDフィールドに調整のステータスを報告します。
NAME READY SYNCED EXTERNAL-NAME AGE
eks-workshop-carts-crossplane-bt28w-lnb4r True True eks-workshop-carts-crossplane 6s
では、このクレームを使用してDynamoDBテーブルがどのようにデプロイされるかを理解しましょう:

カートネームスペースにデプロイされたクレームDynamoDBTableを照会すると、Composite Resource(XR)XDynamoDBTableを指し、作成することがわかります:
resourceRef:
apiVersion: awsblueprints.io/v1alpha1
kind: XDynamoDBTable
name: eks-workshop-carts-crossplane-bt28w
Composition table.dynamodb.awsblueprints.ioは、Composite Resource Kind(XR-KIND)がXDynamoDBTableであることを示しています。このCompositionは、XDynamoDBTable XRを作成したときにCrossplaneが何をすべきかを指示します。各Compositionは、XRと1つ以上のマネージドリソースのセットの間にリンクを作成します。
NAME XR-KIND XR-APIVERSION AGE
table.dynamodb.awsblueprints.io XDynamoDBTable awsblueprints.io/v1alpha1 143m
任意のネームスペースに限定されていないXDynamoDBTable XRを照会すると、DynamoDBマネージドリソースTableを作成してい ることがわかります:
resourceRefs:
- apiVersion: dynamodb.aws.upbound.io/v1beta1
kind: Table
name: eks-workshop-carts-crossplane-bt28w-lnb4r