Je suis nouveau à travailler avec AWS en particulier s3. J'utilise le aws go sdk. J'essaie de définir des règles de cycle de vie de seau dans la méthode ci-dessous;AWS: PutBucketLifecycleConfigurationRequest renvoie NonImplemented
func SetLifecycle(svc *s3.S3, bucket , id , status, md5 string) (*s3.PutBucketLifecycleConfigurationOutput, error) {
input := &s3.PutBucketLifecycleConfigurationInput{
Bucket: aws.String(bucket),
LifecycleConfiguration: &s3.BucketLifecycleConfiguration{
Rules: []*s3.LifecycleRule{
{
ID: aws.String(id),
Status: aws.String(status),
},
},
},
}
req, resp := svc.PutBucketLifecycleConfigurationRequest(input)
req.HTTPRequest.Header.Set("Content-Md5", string(md5))
err := req.Send()
return resp, err
}
et appelant la méthode ci-dessus dans un test:
func (suite *HeadSuite) TestLifecycleSet() {
assert := suite
//acl := map[string]string{"Authorization": ""}
bucket := GetBucketName()
err := CreateBucket(svc, bucket)
content := strings.NewReader("Enabled")
h := md5.New()
content.WriteTo(h)
sum := h.Sum(nil)
b := make([]byte, base64.StdEncoding.EncodedLen(len(sum)))
base64.StdEncoding.Encode(b,sum)
md5 := string(b)
_, err = SetLifecycle(svc, bucket, "rule1", "Enabled", md5)
assert.Nil(err)
}
Je continue à obtenir une erreur NotImplemented
. Pourquoi cela arriverait-il? Au départ, je n'avais pas ajouté un en-tête content-md5 que j'avais ajouté après avoir lu la documentation putbucketlifecycle. Cependant, j'ai toujours une erreur.