#amazon-web-services #amazon-s3 #amazon-cloudformation #aws-serverless
#amazon-web-services #amazon-s3 #aws-cloudformation #aws-бессерверный
Вопрос:
Я пытаюсь создать следующую политику корзины в yaml, но bucketPolicy не удается создать:
Сообщение об ошибке Cloudformation:
Invalid policy syntax. (Service: Amazon S3; Status Code: 400; Error Code: MalformedPolicy; Request ID: CD4; S3 Extended Request ID: Noxxxx/sXX=; Proxy: null)
Политика корзины, которую необходимо выполнить:
{
"Version": "2012-10-17",
"Id": "ig",
"Statement": [
{
"Sid": "LZone",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123:role/l-zone"
},
"Action": [
"s3:AbortMultipartUpload",
"s3:ListBucket",
"s3:PutObject",
"s3:GetObject",
"s3:GetObjectVersion",
"s3:PutObjectAcl"
],
"Resource": [
"arn:aws:s3:::bucketname-l/*",
"arn:aws:s3:::bucketname-l"
]
}
]
}
Это код (не рабочий) в yaml для вышеуказанной политики:
LBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: !Sub bucketname-l
LBucketPolicy:
Type: AWS::S3::BucketPolicy
Properties:
Bucket: !Ref LBucket
PolicyDocument:
Version: '2012-10-17'
Statement:
- Sid: LZone
Effect: Allow
Action:
- 's3:AbortMultipartUpload'
- 's3:ListBucket'
- 's3:PutObject'
- 's3:GetObject'
- 's3:GetObjectVersion'
- 's3:PutObjectAcl'
Resource:
Fn::Join:
- ""
-
- "arn:aws:s3:::"
-
Ref: "LBucket"
- "/*"
Principal: "AWS: arn:aws:iam::123:role/l-zone"
Может кто-нибудь помочь с этим, чего мне не хватает. Спасибо
Ответ №1:
Политика должна быть:
LBucketPolicy:
Type: AWS::S3::BucketPolicy
Properties:
Bucket: !Ref LBucket
PolicyDocument:
Version: '2012-10-17'
Statement:
- Sid: LZone
Effect: Allow
Action:
- 's3:AbortMultipartUpload'
- 's3:ListBucket'
- 's3:PutObject'
- 's3:GetObject'
- 's3:GetObjectVersion'
- 's3:PutObjectAcl'
Resource:
- !Sub "arn:aws:s3:::${LBucket}"
- !Sub "arn:aws:s3:::${LBucket}/*"
Principal:
AWS: arn:aws:iam::123:role/l-zone
Комментарии:
1. Спасибо, Марчин, я тоже пробовал это раньше, но попробую еще раз. Спасибо
2. @Harry Нет проблем. Это правильная форма политики. Если это не работает, то есть некоторые другие проблемы, пока не очевидные из вашего вопроса.
3. потрясающе, это работает. Мне пришлось удалить кавычки вокруг AWS: в разделе Принципал. Будет помечен как правильный. Спасибо