2017-07-12 6 views
0

AWS、特にs3で作業するのは初めてです。私はaws go sdkを使用しています。私はバケットライフサイクルルールを以下の方法で設定しようとしています。AWS:PutBucketLifecycleConfigurationRequestはNotImplementedを返します

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 
} 

とテストで上記の方法を呼び出す:私はエラーNotImplementedを取得しておく

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

を。なぜこれが起こっていますか?私はもともとputbucketlifecycleのドキュメントを読んだ後に追加したcontent-md5ヘッダーを追加していませんでした。しかし、私はまだエラーが発生します。

答えて

0

私はMD5ヘッダーの計算を必要としませんでした。しかし、ドキュメントで指定されている接頭辞を設定する必要があることに気付きました。また、どのバージョンのSDKを使用していますか? 以下に実例があります

input := &s3.PutBucketLifecycleConfigurationInput{                  
    Bucket: aws.String(bucket),                        
    LifecycleConfiguration: &s3.BucketLifecycleConfiguration{                
     Rules: []*s3.LifecycleRule{                       
     {                             
      Prefix: aws.String(prefix),                      
      Status: aws.String(status),                      
      ID:  aws.String(id),                       
      Expiration: &s3.LifecycleExpiration{                    
      Days: aws.Int64(1),                        
      },                            
     },                             
     },                             
    },                              
    }                               
    req, resp := svc.PutBucketLifecycleConfigurationRequest(input)               
    if err := req.Send(); err != nil {                      
    panic(err)                            
    } 
関連する問題