1

Go SDK를 사용하여 클라우드 레일을 생성하려고합니다. AWS doc에 따라 AWS에 문제없이 연결할 수있었습니다. 모든 추적 로그 파일이 버킷에 배치 될 수 있도록, S3 버킷 생성 - AWS CloudTrail Go SDK 오류 메시지 전송 용 API 작성 "InsufficientS3BucketPolicyException : 버킷에 대해 잘못된 S3 버킷 정책이 감지되었습니다."

나는 흔적

1 단계를 만드는 단계 아래 따랐다.

CreateS3Bucket : 코드

func CreateS3Bucket(bucketName string) error { 
bucketName := "s3-bucket-123" 
svc := s3.New(session.New(&aws.Config{Region: aws.String("us-east-1")})) 

params := &s3.CreateBucketInput{ 
    Bucket: aws.String(bucketName), // Required 
} 
resp, err1 := svc.CreateBucket(params) 

if err1 != nil { 
    // Print the error, cast err to awserr.Error to get the Code and 
    // Message from an error. 
    log.Errorf("S3 Bucket Creation Fails: %s", err1.Error()) 
    errs := errors.New("500") 
    return errs 
} 

// Pretty-print the response data. 
log.Infof("Bucket Successfully created: %s", resp) 
return nil 
} 

성공 응답 :

{\n Location: \"/s3-bucket-123\"\n}" 

2 단계 - 만들기 CloudTrail

CreateCloudTrail :코드

func (ref *AwsCloudTrail) CreateCloudTrail(bucketName, trailName string) error { 
svc := cloudtrail.New(session.New(&aws.Config{Region: aws.String("us-east-1")})) 

//bucketName is "s3-bucket-123" and trailName is cloudtrail123 

params := &cloudtrail.CreateTrailInput{ 
    Name:      aws.String(trailName), // Required 
    S3BucketName:    aws.String(bucketName), // Required 
} 

resp, errs := svc.CreateTrail(params) 

if errs != nil { 
    // Print the error, cast err to awserr.Error to get the Code and 
    // Message from an error. 
    log.Errorf("Error while creating trail %v",errs.Error()) 
    err := errors.New("500") 
    return err 
} 

// Pretty-print the response data. 
log.Infof("create trail response: %s",resp) 

return nil 
} 

응답

"Error while creating trail InsufficientS3BucketPolicyException: Incorrect S3 bucket policy is detected for bucket: s3-bucket-123\n\tstatus code: 400, request id: 203d63d6-51ea-11e6-bb2c-b5d25b86e418" 

내가 잘못하고있는 중이 야 어디 사람이 말해 주시겠습니까. S3 정책은 내가 트레일을 만드는 동안 지정해야하는 일

어떤 도움/제안 정말 감사합니다

참조 : https://docs.aws.amazon.com/sdk-for-go/api/service/cloudtrail/#CloudTrail.CreateTrail

https://docs.aws.amazon.com/sdk-for-go/api/service/s3/#S3.CreateBucket

답변

0

클라우드 트레일은 S3 버킷에 대해이 정책이 있어야합니다 . 이 안내서에 따라 단계의 다른 옵션이 있습니다. 회신에 대한

http://docs.aws.amazon.com/awscloudtrail/latest/userguide/create-s3-bucket-policy-for-cloudtrail.html

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Sid": "AWSCloudTrailAclCheck20150319", 
      "Effect": "Allow", 
      "Principal": { 
       "Service": "cloudtrail.amazonaws.com" 
      }, 
      "Action": "s3:GetBucketAcl", 
      "Resource": "arn:aws:s3:::myBucketName" 
     }, 
     { 
      "Sid": "AWSCloudTrailWrite20150319", 
      "Effect": "Allow", 
      "Principal": { 
       "Service": "cloudtrail.amazonaws.com" 
      }, 
      "Action": "s3:PutObject", 
      "Resource": "arn:aws:s3:::myBucketName/[optional prefix]/AWSLogs/myAccountID/*", 
      "Condition": { 
       "StringEquals": { 
        "s3:x-amz-acl": "bucket-owner-full-control" 
       } 
      } 
     } 
    ] 
} 
+0

감사합니다. 제공된 안내서는 AWS 콘솔을 통해 수행 할 단계를 보여줍니다. 내가 aws-go-sdk를 통해 할 수있는 비슷한 점이 있습니까? 내 말은 Go-SDK를 통해 S3 버킷 정책을 추가/지정하는 것입니다. –

+0

이 정책을 확인하십시오. https://github.com/aws/aws-sdk-go/tree/master/service/iam 다양한 정책을 첨부 할 수있는 예제 파일이 있습니다. examples_test.go 파일. – error2007s

+0

덕분에, 그것은 나를 위해 일했으며 지금 성공적으로 흔적을 만들 수 있습니다. –