Я пытаюсь использовать aws cli tool
в нашем конвейере CI для развертывания новой версии приложения на elastic beanstalk
:
aws elasticbeanstalk create-application-version \
--application-name "serradev dev" \
--version-label ${BUILDKITE_COMMIT} \
--source-bundle S3Bucket="${BUCKET_NAME}",S3Key="${BUILDKITE_COMMIT}.zip"
сбой со следующей ошибкой:
Произошла ошибка (InvalidParameterCombination) при вызове операции CreateApplicationVersion: невозможно загрузить из местоположения S3 (Bucket :astic-beanstalk-deploys ключ: da25301fc88a5c2908282a891fb0f80278008a36.zip). Причина: Запрещено
Если я заменяю ключ несуществующим развертыванием, я получаю ошибку NotFound
.
Я настроил следующую политику на ведро
{
"Version": "2012-10-17",
"Id": "Policy1541741695771",
"Statement": [
{
"Sid": "eb-af163bf3-d27b-4712-b795-d1e33e331ca4",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::185535608991:role/aws-elasticbeanstalk-service-role",
"arn:aws:iam::185535608991:role/aws-elasticbeanstalk-ec2-role"
]
},
"Action": [
"s3:ListBucket",
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject",
"s3:PutObjectAcl",
"s3:GetObjectAcl",
"s3:GetBucketPolicy",
"s3:Get*"
],
"Resource": [
"arn:aws:s3:::elastic-beanstalk-deploys",
"arn:aws:s3:::elastic-beanstalk-deploys/*"
]
}
]
}
Файл копируется в корзину с помощью команды aws s3 cp
:
aws s3 cp --acl=public-read ${RUN_ARTIFACT_PATH}/app.zip s3://${BUCKET_NAME}/${BUILDKITE_COMMIT}.zip
Обратите внимание на добавление переключателя --acl=public-read
.
Я даже настроил корзину для полного публичного доступа и проверил это, загрузив файл манифеста в сеансе анонимного браузера. Несмотря на то, что все эти разрешения доступны, я продолжаю получать ошибку Forbidden
.
На данный момент у меня нет идей, что попробовать дальше.