現在、serverless.ymlにこのようなコードがあります。
resources:
Resources:
uploadBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: ${self:service}-${self:custom.stage}-uploads
visitsTable:
Type: AWS::DynamoDB::Table
Properties:
TableName: ${self:custom.visitsTable}
AttributeDefinitions:
- AttributeName: userId
AttributeType: S
- AttributeName: visitId
AttributeType: S
- AttributeName: comments
AttributeType: S
- AttributeName: attachments
AttributeType: S
- AttributeName: ph
AttributeType: N
- AttributeName: ch
AttributeType: N
KeySchema:
- AttributeName: userId
KeyType: HASH
- AttributeName: visitId
KeyType: HASH
ProvisionedThroughput:
ReadCapacityUnits: 5
WriteCapacityUnits: 5
私の目標は、主キーuserIdを使用してテーブルを作成し、キーvisitIdを並べ替え、コメント、添付ファイル、phおよびchのフィールドを用意することです。 sls deploy
を実行しようとすると、次のエラーが発生します。
サーバーレスエラー---------------------------------------
エラーが発生しました:visitsTable-プロパティAttributeDefinitionsがテーブルおよびセカンダリインデックスのKeySchemaと矛盾しています。
私はここで何が間違っているのですか?
編集:私が試した別の試み
resources:
Resources:
uploadBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: ${self:service}-${self:custom.stage}-uploads
visitsTable:
Type: AWS::DynamoDB::Table
Properties:
TableName: ${self:custom.visitsTable}
AttributeDefinitions:
- AttributeName: userId
AttributeType: S
- AttributeName: visitId
AttributeType: S
KeySchema:
- AttributeName: userId
KeyType: HASH
- AttributeName: visitId
KeyType: RANGE
ProvisionedThroughput:
ReadCapacityUnits: 5
WriteCapacityUnits: 5
AWS DynamoDbはNO-SQLタイプのデータベースであり、テーブルの作成中にすべてのキーを定義する必要はありません。また、AWSのドキュメントから、属性定義でキースキーマとインデックスを指定する必要があることは明らかです。
テーブルとインデックスのキースキーマを説明する属性の配列。
以下のようにコードを編集してください
resources:
Resources:
uploadBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: ${self:service}-${self:custom.stage}-uploads
visitsTable:
Type: AWS::DynamoDB::Table
Properties:
TableName: ${self:custom.visitsTable}
AttributeDefinitions:
- AttributeName: userId
AttributeType: S
- AttributeName: visitId
AttributeType: S
KeySchema:
- AttributeName: userId
KeyType: HASH
- AttributeName: visitId
KeyType: RANGE
ProvisionedThroughput:
ReadCapacityUnits: 5
WriteCapacityUnits: 5
詳細 CreateTable