我尝试在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
这让我有点困惑。我希望你能回答我。
我曾希望返回确认有关保留期的积极结果。
问候
安德斯
1条答案
按热度按时间gorkyyrv1#
您的错误:
MethodNotAllowed此资源不允许使用指定的方法。
我会假设这意味着你的PUT方法是无效的。尝试GET。
“方法”可能有别的意思。我不熟悉S3。我只是猜测。
关于使用curl,我注意到的另一件事是,我喜欢的各种网站上的所有请求都使用签名散列。
示例:如何使用curl在AWS S3上上传文件
我找不到任何关于使用curl的文档。我找到了这个
通过指定新S3存储桶的保留模式和保留期来定义对象锁定功能配置参数。以下示例启用了90天的治理保留模式。治理模式确保用户无法覆盖或删除S3对象版本或更改其锁定设置,除非他们具有特殊权限(例如root帐户访问权限)。治理模式使您能够保护对象不被大多数用户删除,同时仍允许您授予某些用户更改保留设置或删除对象(如果需要)的权限。
将这些配置参数保存到名为object-lock-config.json的JSON文件中:
您有一个XML错误。
我不是说修复这个错误后它就会工作。
但它肯定不会与XML错误一起工作。
将
</Request>
移到末尾:我用这个在线工具找到错误:XML Validator