AWS CloudTrail Create API для Go SDK выдает сообщение об ошибке "Недостаточно S3BucketPolicyException: обнаружена неправильная политика сегмента S3 для сегмента: "
Я пытаюсь создать cloudtrail с помощью Go SDK. Успешно смог подключить AWS без каких-либо проблем, следуя документам AWS.
Я следовал ниже шагов для создания следа
Шаг 1 - Создан S3 Bucket, так что все файлы журнала трасс могут быть помещены в это ведро.
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 мне нужно указать при создании Trail
Любая помощь / предложение действительно ценится
Ссылка: https://docs.aws.amazon.com/sdk-for-go/api/service/cloudtrail/
1 ответ
Ваш Cloud Trail должен иметь эту политику для корзины S3. Следуйте этому руководству, на шаге есть разные варианты.
{
"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"
}
}
}
]
}
Убедитесь, что после добавления политики, упомянутой в принятом ответе, существует соответствие между вашими name
, prefix
а также accountID
и указанные здесь значения:
"Resource": "arn:aws:s3:::myBucketName/<prefix>/AWSLogs/myAccountID/*"
Также убедитесь, что "*"
постфикс существует.
Неправильная конфигурация приведет к той же ошибке.