Я пытаюсь создать cloudTrail через бессерверное приложение.
CloudTrail:
Type: AWS::CloudTrail::Trail
Properties:
# CloudWatchLogsLogGroupArn: "String"
# CloudWatchLogsRoleArn: "String"
# EnableLogFileValidation: True
# EventSelectors:
# - EventSelector
# IncludeGlobalServiceEvents: True
IsLogging: True
# IsMultiRegionTrail: True
# KMSKeyId: String
S3BucketName: {"Ref" : "CloudTrailBucket"}
# S3KeyPrefix: String
# SnsTopicName: String
# Tags:
# - Tag
# TrailName: String
Сначала я попытался создать cloudTrail самостоятельно и получил следующую ошибку.
CloudTrail - Incorrect S3 bucket policy is detected for bucket: ....
Затем я добавил этот код для создания политики
CloudTrailBucketPolicy:
# Version : 2012-10-17,
Type: AWS::S3::BucketPolicy
Properties:
PolicyDocument:
- Action:
- "s3:GetBucketAcl"
Effect: Allow
Resource: { "Fn::Join": ["", ["arn:aws:s3:::CloudTrailBucket"] ] }
Principal: "*"
- Action:
- "s3:PutObject"
Effect: Allow
Resource: { "Fn::Join": ["", ["arn:aws:s3:::CloudTrailBucket", "/*" ] ] }
Principal:
Service: cloudtrail.amazonaws.com
Но получаю эту ошибку.
An error occurred: CloudTrailBucketPolicy - Value of property PolicyDocument must be an object.
Вы забыли Statement
:
CloudTrailBucketPolicy:
# Version : 2012-10-17,
Type: AWS::S3::BucketPolicy
Properties:
Bucket: !Ref CloudTrailBucket
PolicyDocument:
Statement:
- Action:
- "s3:GetBucketAcl"
Effect: Allow
Resource: { "Fn::Join": ["", ["arn:aws:s3:::", !Ref CloudTrailBucket] ] }
Principal: "*"
- Action:
- "s3:PutObject"
Effect: Allow
Resource: { "Fn::Join": ["", ["arn:aws:s3:::", !Ref CloudTrailBucket, "/*" ] ] }
Principal:
Service: cloudtrail.amazonaws.com
Вы меняли политику корзины вручную? Попробуйте удалить стек CloudFormation и политику корзины после повторного создания стека. Иногда CloudFormation не заменяет некоторые изменения, которые я выполняю вручную.
Да, я пытался удалить стек и даже переименовать его, есть другие идеи?
Вы тоже создали свою корзину через CloudFormation? Когда я создал свою BucketPolicy, я также создал корзину через CloudFormation.
Да, я тоже создаю ведро в сценарии, была ли ваша политика создана правильно, когда вы вошли и проверили консоль?
Да, точно равны. Моя последняя идея касается имени ведра. Вы используете { "Fn::Join": ["", ["arn:aws:s3:::CloudTrailBucket", "/*" ] ] }
. Как насчет попробовать { "Fn::Join": ["", ["arn:aws:s3:::", !Ref CloudTrailBucket, "/*" ] ] }
. Ведро называется CloudTrailBucket
? Я отредактировал ответ.
Да, я буквально скопировал и вставил ваш новый код, и он создает политику, но единственным действием является s3:* . Так раздражает, я приму ваш ответ, если вы думаете о чем-то еще, дайте мне знать. ваша политика создана с помощью 2 действий, которые вы упомянули, да?
Давайте продолжить обсуждение в чате.
Спасибо, я собираюсь принять ваш ответ, просто сначала интересно, хотя есть ли у вас какие-либо идеи, почему это не создает политику правильно, единственное действие, которое я получаю в политике на моем ведре s3, - это «Действие»: «s3: *», Я надеялся на s3:GetBucketAcl и s3:PutObject