【问题标题】:How to set retention period in AWS S3如何在 AWS S3 中设置保留期
【发布时间】:2022-11-29 09:20:43
【问题描述】:

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

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>"

没有任何内容返回到标准输出。但这返回到 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)?

脚本中的另一行(以及另一个端点和其他登录名和密码):

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

这让我有点困惑。我将不胜感激。

我曾希望返回确认有关保留期的积极结果。

问候

安德斯

【问题讨论】:

  • 这里需要一些编辑技巧吗? Stackoverflow 删除了我帖子中的一些行,尤其是 curl 命令。我尝试再次发布它们:
  • curl -k -X PUT $ENDPOINT -H "Content-Type: application/xml" -H "Accept: application/xml" -d "<请求><登录>${ACCESS_KEY_ID}</登录><密码>${ SECRET_ACCESS_KEY}</Password></Request><ObjectLockConfiguration><ObjectLockEnabled>已启用</ObjectLockEnabled><Rule><DefaultRetention><Mode>COMPLIANCE</Mode><Years>${RETYEARS}</Years></DefaultRetention> </规则></ObjectLockConfiguration>”
  • 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>启用</ObjectLockEnabled><Rule><DefaultRetention><Mode>COMPLIANCE</Mode><Years>${RETYEARS}</Years></DefaultRetention></Rule>< /对象锁定配置>"
  • 命令是否正常运行值得怀疑,您发送的字符串不是有效的 XML,并且未正确签名,此外 AWS Secret 是一个秘密,永远不应该离开您的机器。您是否出于某种原因不使用 AWS SDK 调用?它将为您处理这些问题。

标签: amazon-s3 curl set period retention


【解决方案1】:

您有一个 XML 错误。
我并不是说它会在修复此错误后起作用。
但它肯定不会处理 XML 错误。

&lt;/Request&gt;移到最后:

<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>

【讨论】:

    猜你喜欢
    • 2021-07-08
    • 2017-05-13
    • 2021-04-13
    • 2023-04-01
    • 2018-06-19
    • 1970-01-01
    • 2018-02-11
    • 1970-01-01
    • 2015-03-07
    相关资源
    最近更新 更多