aws: error: argument operation: put-bucket-lifecycle-configuration

aws: error: argument operation: put-bucket-lifecycle-configuration

put-bucket-lifecycle-configuration 出现以下错误:

[root@ADM-PROD-OMNI noc-scripts]# aws s3api put-bucket-lifecycle-configuration --bucket noc-try --lifecycle-configuration  lifecycle.json
usage: aws [options] <command> <subcommand> [parameters]
aws: error: argument operation: Invalid choice, valid choices are:

abort-multipart-upload                   | complete-multipart-upload
copy-object                              | create-bucket
create-multipart-upload                  | delete-bucket
delete-bucket-cors                       | delete-bucket-lifecycle
delete-bucket-policy                     | delete-bucket-replication
delete-bucket-tagging                    | delete-bucket-website
delete-object                            | delete-objects
get-bucket-acl                           | get-bucket-cors
get-bucket-lifecycle                     | get-bucket-location
get-bucket-logging                       | get-bucket-notification
get-bucket-notification-configuration    | get-bucket-policy
get-bucket-replication                   | get-bucket-request-payment
get-bucket-tagging                       | get-bucket-versioning
get-bucket-website                       | get-object
get-object-acl                           | get-object-torrent
head-bucket                              | head-object
list-buckets                             | list-multipart-uploads
list-object-versions                     | list-objects
list-parts                               | put-bucket-acl
put-bucket-cors                          | put-bucket-lifecycle
put-bucket-logging                       | put-bucket-notification
put-bucket-notification-configuration    | put-bucket-policy
put-bucket-replication                   | put-bucket-request-payment
put-bucket-tagging                       | put-bucket-versioning
put-bucket-website                       | put-object
put-object-acl                           | restore-object
upload-part                              | upload-part-copy
wait                                     | help

但是

get-bucket-lifecycle 正在运行,这意味着我的 aws 已配置:

[root@ADM-PROD-OMNI noc-scripts]# aws s3api get-bucket-lifecycle --bucket 4sm-wrapup
RULES    clear multipart failed files           Enabled

**OR**

[root@ADM-PROD-OMNI noc-scripts]# aws s3api get-bucket-lifecycle --bucket noc-try

A client error (NoSuchLifecycleConfiguration) occurred when calling the GetBucketLifecycle operation: The lifecycle configuration does not exist

也尝试过:

 [root@ADM-PROD-OMNI noc-scripts]# aws s3api put-bucket-lifecycle --bucket noc-try --lifecycle-configuration  lifecycle.json

    Error parsing parameter '--lifecycle-configuration': Expected: '=', received: '.' for input:
    lifecycle.json
             ^

请告诉我这里有什么问题?

在您的第一个示例中,很明显方法 "put-bucket-lifecycle-configuration" 不存在,您需要使用 "put-bucket-lifecycle" 代替,您说您也尝试过并收到不同的错误。

不同的错误就好了!

调用您的 .json 配置文件时,新错误表明语法不正确,and/or 结构不正确 JSON。

这是关于 "put-bucket-lifecycle" 的文档:put-bucket-lifecycle

这里是一个调用 .json 配置文件的例子:

aws s3api put-bucket-lifecycle --bucket my-bucket --lifecycle-configuration file://lifecycle.json

这里是 JSON 文件的示例:

{
  "Rules": [
    {
      "ID": "Move to Glacier after sixty days (objects in logs/2015/)",
      "Prefix": "logs/2015/",
      "Status": "Enabled",
      "Transition": {
        "Days": 60,
        "StorageClass": "GLACIER"
      }
    },
    {
      "Expiration": {
        "Date": "2016-01-01T00:00:00.000Z"
      },
      "ID": "Delete 2014 logs in 2016.",
      "Prefix": "logs/2014/",
      "Status": "Enabled"
    }
  ]
}

下面 JSON 文件已经过测试并且可以正常工作,如后续屏幕截图所示:

{
    "Rules": [
        {
          "ID": "multipart-upload-rule",
          "Prefix": "noc-try",
          "Status": "Enabled",
          "AbortIncompleteMultipartUpload": { "DaysAfterInitiation": 3 }
        }
    ]
}

使用上述 JSON 文件创建生命周期配置的 CLI 命令:

aws s3api put-bucket-lifecycle --bucket testbucket1478921 --lifecycle-configuration file://c:/tmp/test.json