2016-05-20 30 views
1

Dynamodb create-tableのAWS CLIは、グローバルセカンダリインデックスを作成するときに少し混乱します。 CLI documentでは、グローバルセカンダリインデックスは、以下の式(速記)で表すことができこう述べています。AWS CLIを使用してDynamodbグローバルセカンダリインデックスを作成する方法は?

IndexName=string,KeySchema=[{AttributeName=string,KeyType=string},{AttributeName=string,KeyType=string}],Projection={ProjectionType=string,NonKeyAttributes=[string,string]},ProvisionedThroughput={ReadCapacityUnits=long,WriteCapacityUnits=long} ... 

私の解釈は、私は私がここにKeySchemaを含めておりません

--global-secondary-indexes IndexName=requesterIndex,Projection={ProjectionType=ALL},ProvisionedThroughput={ReadCapacityUnits=1,WriteCapacityUnits=1} 

注意を行うべきです複雑さを推定する。コンソールで次のエラーが表示されます。

Parameter validation failed: 
Missing required parameter in GlobalSecondaryIndexes[0]: "KeySchema" 
Unknown parameter in GlobalSecondaryIndexes[0]: "WriteCapacityUnits", must be one of: IndexName, KeySchema, Projection, ProvisionedThroughput 
Invalid type for parameter GlobalSecondaryIndexes[0].ProvisionedThroughput, value: ReadCapacityUnits=1, type: <class 'str'>, valid types: <class 'dict'> 

何らかの理由で、AWS CLIはProvisionedThroughputのマップ式を認識しません。私はそれを表現するためにいくつかの方法を試してみました。私はまた、それを行う方法を記述するGoogleの任意のWebページを見つけることに失敗しました。助けてください!ありがとう! AWS CLI source code on Githubを読み

答えて

1

、それは二重引用符の内容を解析することができます。スクリプトに二重引用符を追加することで問題が解決しました。新しいコードがあります -

--global-secondary-indexes IndexName=requesterIndex,Projection={ProjectionType=ALL},ProvisionedThroughput="{ReadCapacityUnits=${CURRENT_READUNIT},WriteCapacityUnits=${CURRENT_WRITEUNIT}}" 
+1

うん。あなたの答えは正しい!私は同じ問題で苦労した。 AWS CLIのドキュメントでは、Global Secondary Indexの良い例はなく、引用問題を調査するために時間を費やさなければならないのは残念です。 –

3

これは私がコマンドラインからのAWSドキュメントに返信サンプルを作成するために使用されるCLI呼び出しです。最後に使用した$ EPは、aw34ではなくローカルのdynamodbにテーブルを作成するために、環境内でEP="--endpoint-url http://localhost:8000"に設定することができます。

aws dynamodb create-table --table-name Reply --attribute-definitions \ 
AttributeName=Id,AttributeType=S AttributeName=ReplyDateTime,AttributeType=S \ 
AttributeName=PostedBy,AttributeType=S AttributeName=Message,AttributeType=S \ 
--key-schema AttributeName=Id,KeyType=HASH \ 
AttributeName=ReplyDateTime,KeyType=RANGE --global-secondary-indexes \ 
IndexName=PostedBy-Message-Index,KeySchema=["\ 
{AttributeName=PostedBy,KeyType=HASH}","\ 
{AttributeName=Message,KeyType=RANGE}"],Projection="{ProjectionType=INCLUDE \ 
,NonKeyAttributes=["ReplyDateTime"]}",ProvisionedThroughput="\ 
{ReadCapacityUnits=10,WriteCapacityUnits=10}" --provisioned-throughput \ 
ReadCapacityUnits=5,WriteCapacityUnits=4 $EP 
+0

これがなぜ、どのように解決するのかを説明することは有益でしょう。 – swa66

+0

コードを書式設定してください。 –

関連する問題