У меня возникают проблемы с получением AWS CodeBuild для сборки и развертывания проекта, созданного с использованием Serverless Framework.
Вот история до сих пор.
Инициализировать проект
Я следовал документам, чтобы создать основы Бессерверный проект так и оставили «как есть» — по сути, «Hello World».
Затем я поместил проект в репозиторий git.
Тестовое развертывание из CLI
Затем из командной строки я позвонил...
serverless deploy
... и, как и ожидалось, лямбда была развернута. Хорошее начало.
КодБилд
Следующим на повестке дня было попробовать сборку и развертывание с помощью AWS CodeBuild.
Я добавил файл buildspec.yml
в корень проекта:
version: 0.1
phases:
install:
commands:
- npm install
- npm install -g serverless
- echo install done
build:
commands:
- serverless deploy
- echo build done
Затем, используя консоль/веб-интерфейс AWS, я определил проект сборки кода, который ссылается на репозиторий git.
При этом AWS создал роль IAM со следующей политикой:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Resource": [
"arn:aws:logs:eu-west-1:************:log-group:/aws/codebuild/my-api-build",
"arn:aws:logs:eu-west-1:************:log-group:/aws/codebuild/my-api-build:*"
],
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
]
},
{
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::codepipeline-eu-west-1-*"
],
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:GetObjectVersion"
]
},
{
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::my-api-artifacts/*"
],
"Action": [
"s3:PutObject"
]
}
]
}
Давай сделаем это...
Поэтому я нажал «Начать сборку» в проекте CodeBuild и получил следующие ошибки:
Ошибка 1:
ServerlessError: User: arn:aws:sts::************:assumed-role/codebuild-my-api-build-service-role/AWSCodeBuild-********-****-****-****-************ is not authorized to perform: cloudformation:DescribeStackResources on resource: arn:aws:cloudformation:eu-west-1:************:stack/my-api-development/*
который я "исправил", добавив следующее в политику, созданную при сборке кода...
{
"Effect": "Allow",
"Resource": [
"arn:aws:cloudformation:eu-west-1:*"
],
"Action": [
"cloudformation:*"
]
}
Ошибка 2:
Снова нажал Start Build и получил:
An error occurred while provisioning your stack: ServerlessDeploymentBucket - API: s3:CreateBucket Access Denied.
который я "исправил", добавив следующее в политику, созданную при сборке кода...
{
"Effect": "Allow",
"Resource": [
"arn:aws:cloudformation:eu-west-1:*"
],
"Action": [
"cloudformation:*"
]
}
Ошибка 3:
Serverless Error ---------------------------------------
Missing required key 'Bucket' in params
Наконец: мои вопросы
- Что означает
Missing required key 'Bucket' in params
? Где я должен искать? - Являются ли мои «исправления» ошибок 1 и 2 в порядке? Я немного разбираюсь в AWS и поэтому новичок в IAM, поэтому я не очень уверен в редактировании политик.