2
votes

Élément de placement DynamoDB à l'aide de l'AWS CLI

J'essaye l'AWS CLI avec DynamoDB local.

Pendant que je travaillais, j'ai trouvé des problèmes.

Insertion et récupération d'éléments | DynamoDB, a expliqué. montre comment créer une table au format JSON. Mais cela n'a pas fonctionné pour moi. J'ai donc dû utiliser les opérations de base pour les tables - Amazon DynamoDB . Quoi qu'il en soit, cela a fonctionné.

Mais quel était le problème lors de la mise en place d'un objet.

J'ai essayé d'ajouter un élément à la base de données locale comme ceci:

aws dynamodb put-item \
    --table-name UsersTable \
    --item '{
      "Username": {"S": "alexdebrie"}
    }' \
    --endpoint-url http://localhost:8000

Mais il y avait une erreur comme celle-ci:

Options inconnues: {S :, alexdebrie},} ', Nom d'utilisateur:

Comment puis-je gérer cela?

PS: J'utilise Windows donc au lieu de \ , j'ai utilisé ^ .


2 commentaires

L'erreur que vous voyez est apparemment une erreur de formatage. L'avez-vous essayé sans utiliser de caractères d'échappement dans une seule chaîne?


Je l'ai essayé bien sûr, mais il montrait toujours la même erreur.


5 Réponses :


2
votes

Essayez avec git bash, cela a résolu mon problème. J'utilisais cmd depuis Windows et j'étais confronté au même problème de formatage. La même commande fonctionne dans git bash.


0 commentaires

0
votes

à la place de " put \"

utiliser comme ça

aws dynamodb put-item \
    --table-name UsersTable \
    --item '{
      \"Username\": {\"S\": \"alexdebrie\"}
    }' \


0 commentaires

0
votes

Voici un exemple en une ligne qui fonctionne sous Windows:

aws dynamodb put-item --table-name UsersTable --item "{\"Username\":{\"S\":\"alexdebrie\"}}" --endpoint-url http://localhost:8000

Donc, dans votre cas:

aws dynamodb put-item --table-name test --item "{\"id\":{\"S\":\"mars\"},\"miles\":{\"N\":\"999\"}}"

Quelques points à noter:

  • essayez d'éviter plusieurs lignes dans votre commande
  • inclure l'élément entier entre guillemets
  • précéder chaque guillemet double dans l'élément avec une barre oblique inverse, par exemple \"id\"
  • si la valeur de votre attribut est numérique, vous devez toujours citer sa valeur par exemple \"N\":\"999\"

Je ressens ta douleur. C'est horrible.

Vous pouvez également envisager de fournir des paramètres dans un fichier JSON en utilisant --cli-input-json


0 commentaires

0
votes

Je pense que le problème est spécifique uniquement sur Windows et non sur Mac ou Linux. Mais je suis d'accord avec @Jnana Palai. Mais assurez-vous que le JSON est également inclus dans "non"

De même: aws dynamodb put-item
--table-name UsersTable
--item "{" Nom d'utilisateur ": {" S ":" alexdebrie "}}" \


0 commentaires

0
votes

Si vous êtes sous Windows 10, le meilleur moyen de résoudre définitivement ce problème (récurrent) est d'installer le sous-système Windows pour Linux ( WSL ) avec un système Ubuntu, puis d'installer l'AWS CLI pour Linux comme ici ( AWS CLI Ubuntu ). Une fois que vous avez fait cela, vous pouvez utiliser les ~ 95% d'extraits de l'AWS CLI en ligne qui proviennent de systèmes Linux, et toutes les horribles absurdités de citations / échappements disparaissent! (Vous bénéficiez également de l'énorme avantage d'avoir Linux dans votre système Windows)


0 commentaires