【问题标题】:AWS CLI DynamoDB commandAWS CLI DynamoDB 命令
【发布时间】:2015-12-24 11:02:55
【问题描述】:

我正在编写一个 shell 脚本文件,用于使用 AWS CLI 在 dynamoDB 上执行一些操作。如果属性已经存在,我正在尝试更新 dynamodb 表中项目中的属性。

但是,我对 update-item 命令的语法并不满意。我想用一些值更新一个名为“conf”的属性。但是,我无法弄清楚命令中 SET 的语法。这是我到目前为止所得到的:

aws dynamodb update-item --table-name MY_TABLE_NAME --key '{"AccountId": {"S": accountId}}'

我知道上面必须跟 SET 选项。

任何帮助将不胜感激。

【问题讨论】:

    标签: amazon-web-services amazon-dynamodb aws-cli


    【解决方案1】:

    我认为它看起来像这样:

    aws dynamodb update-item --table-name MY_TABLE_NAME --key file://update-key.json --update-expression "SET conf = :newconf" --expression-attribute-values file://update -attr-values.json --condition-expression "attribute_exists(conf)" --return-values ALL_NEW

    update-key.json

    {
        "AccountId": {
            "S": "account123"
        }
    }
    

    update-attr-values.json

    {
        ":newconf": {
            "S": "new conf value"
        }
    }
    

    【讨论】:

    • 我的用例是通过从一个文件中一次读取一个文件来为各种帐户进行此更新。因此,我不想为键和表达式属性值创建单独的 json 文件。你能建议只更新属性值而不使用任何 json 文件的命令吗?
    • 您可以使用 shell 脚本变量。你是如何遍历文件的?
    • 我想要一个类似的命令用于更新项目,我不需要提供 json 文件。我将逐行遍历文件,并且对于每一行,我都会更新表格。因此,我想在命令中注入 shell 脚本变量的值,而不是使用单独的 json 文件。
    • 这里是查询给定参考 id 的表的命令:aws dynamodb query --table-name MY_TABLE --select SPECIFIC_ATTRIBUTES --attributes-to-get "AccountId" --key-conditions '{"ReferenceId": {"AttributeValueList": [ {"S": '\"$referenceId\"' } ], "ComparisonOperator": "EQ"} }' --limit 1 | jq '.Items[0].AccountId.S' 我想要一个类似的命令来更新表的属性而不使用 json 文件。
    【解决方案2】:

    可以在没有文件的情况下执行此操作,但答案隐藏在 dynamodb 的 700 多页开发人员指南中:

    aws dynamodb update-item \
    --region MY_REGION \
    --table-name MY_TABLE_NAME \
    --key='{"AccountId": {"S": accountId}}' \
    --update-expression 'SET conf=:newconf' \
    --expression-attribute-values '{":newconf":{"S":"new conf value"}}'
    

    Dynamo DB 的开发者指南可以在这里找到:Dynamo DB Developer guide

    在 Atomic Counters 的第 206 页上,有一个示例说明如何在没有文件的情况下使用 --expression-attribute-values

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多