curl 如何在AWS S3中设置保留期

um6iljoc  于 2023-03-12  发布在  其他
关注(0)|答案(1)|浏览(220)

我尝试在S3存储中的shell脚本中设置保留期:

curl -k -X PUT $ENDPOINT -H "Content-Type: application/xml" -H "Accept: application/xml" -d "<Request><Login>${ACCESS_KEY_ID}</Login><Password>${SECRET_ACCESS_KEY}</Password></Request><ObjectLockConfiguration><ObjectLockEnabled>Enabled</ObjectLockEnabled><Rule><DefaultRetention><Mode>COMPLIANCE</Mode><Years>${RETYEARS}</Years></DefaultRetention></Rule></ObjectLockConfiguration>"

不向stdout返回任何内容,但向stderr返回以下内容:

% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   285    0     0  100   285      0  33348 --:--:-- --:--:-- --:--:-- 35625

这是否意味着它正在工作(尽管有stderr)?
脚本中的另一行(以及另一个ENDPOINT和其他登录名和密码):

curl -k -X PUT $ENDPOINT -H "Date: `date`" -H "Content-Type: application/xml" -H "Accept: application/xml" -H "Authorization: ${ACCESS_KEY_ID}:${SECRET_ACCESS_KEY}" -d "<ObjectLockConfiguration><ObjectLockEnabled>Enabled</ObjectLockEnabled><Rule><DefaultRetention><Mode>COMPLIANCE</Mode><Years>${RETYEARS}</Years></DefaultRetention></Rule></ObjectLockConfiguration>"

标准输出:

<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>MethodNotAllowed</Code>
<Message>The specified method is not allowed against this resource.</Message>
<Resource>/</Resource><RequestId>1669626042508238</RequestId></Error>

标准错误:

% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   407  100   221  100   186    488    410 --:--:-- --:--:-- --:--:--   487

这让我有点困惑。我希望你能回答我。
我曾希望返回确认有关保留期的积极结果。
问候
安德斯

gorkyyrv

gorkyyrv1#

您的错误:
MethodNotAllowed此资源不允许使用指定的方法。
我会假设这意味着你的PUT方法是无效的。尝试GET。
“方法”可能有别的意思。我不熟悉S3。我只是猜测。
关于使用curl,我注意到的另一件事是,我喜欢的各种网站上的所有请求都使用签名散列。
示例:如何使用curl在AWS S3上上传文件
我找不到任何关于使用curl的文档。我找到了这个
通过指定新S3存储桶的保留模式和保留期来定义对象锁定功能配置参数。以下示例启用了90天的治理保留模式。治理模式确保用户无法覆盖或删除S3对象版本或更改其锁定设置,除非他们具有特殊权限(例如root帐户访问权限)。治理模式使您能够保护对象不被大多数用户删除,同时仍允许您授予某些用户更改保留设置或删除对象(如果需要)的权限。

将这些配置参数保存到名为object-lock-config.json的JSON文件中

{
  "ObjectLockEnabled": "Enabled",
  "Rule": {
    "DefaultRetention": {
      "Mode": "GOVERNANCE",
      "Days": 90
    }
  }
}

您有一个XML错误。
我不是说修复这个错误后它就会工作。
但它肯定不会与XML错误一起工作。
</Request>移到末尾:

<Request><Login>${ACCESS_KEY_ID}</Login><Password>${SECRET_ACCESS_KEY}</Password>
<ObjectLockConfiguration>
<ObjectLockEnabled>Enabled</ObjectLockEnabled>
<Rule><DefaultRetention>
<Mode>COMPLIANCE</Mode>
<Years>${RETYEARS}</Years>
</DefaultRetention></Rule>
</ObjectLockConfiguration></Request>

我用这个在线工具找到错误:XML Validator

相关问题