Мы настроили политику MyReadOnlySecretServer
следующим образом:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"secretsmanager:GetResourcePolicy",
"secretsmanager:GetSecretValue",
"secretsmanager:DescribeSecret",
"secretsmanager:ListSecretVersionIds"
],
"Resource": "arn:aws:secretsmanager:REGION:SOME_ID:secret:ID_OF_OUR_SECRET_JSON"
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": [
"secretsmanager:GetRandomPassword",
"secretsmanager:ListSecrets"
],
"Resource": "*"
}
]
}
Мы развернули приложение SpringBoot на Elasti c Beanstalk и преуспели в получении и использовании секрета в работе.
Однако почему-то, когда мы все еще находимся в фазе сборки конвейера, очевидно, что наш CodeStarWorker не имеет доступа к чтению значений. Вот исключение:
software.amazon.awssdk.services.secretsmanager.model.SecretsManagerException: пользователь: arn: aws: sts :: SOME_ID: предполагаемая роль / CodeStarWorker-blabla-ToolChain / AWSCodeBuild-some-long-id не разрешено выполнять: secretsmanager: GetSecretValue на ресурсе: arn: aws: secretsmanager: REGION: SOME_ID: secret: ID_OF_OUR_SECRET_JSON (Служба: SecretsManager, код состояния: 400, идентификатор запроса: some- other-long-id)
У нас было это исключение при попытке доступа к секретам во время развертывания, добавлена политика MyReadOnlySecretServer
к роли IAM CodeStarWorker-blabla-ToolChain
, как указано в исключении, и все были решены.
Однако, теперь, когда мы пытаемся запустить mvn test
в buildspec.yml
, мы получаем то же самое исключение.
Почему наш buildspec.yml
отказано в доступе, несмотря на то, что выполняется тем же конвейером кода, который выполняет этапы «источник + сборка + развертывание»? После развертывания у экземпляра есть доступ, но во время сборки он не доступен.
Вот buildspec.yml
:
version: 0.2
phases:
install:
runtime-versions:
java: openjdk8
commands:
# Upgrade AWS CLI to the latest version
- pip install --upgrade awscli
pre_build:
commands:
- cd $CODEBUILD_SRC_DIR
- mvn clean compile test # commenting this "test" makes it run properly
build:
commands:
- mvn war:exploded
post_build:
commands:
- cp -r .ebextensions/ target/ROOT/
- aws cloudformation package --template template.yml --s3-bucket $S3_BUCKET --output-template-file template-export.yml
# Do not remove this statement. This command is required for AWS CodeStar projects.
# Update the AWS Partition, AWS Region, account ID and project ID in the project ARN on template-configuration.json file so AWS CloudFormation can tag project resources.
- sed -i.bak 's/\$PARTITION\$/'${PARTITION}'/g;s/\$AWS_REGION\$/'${AWS_REGION}'/g;s/\$ACCOUNT_ID\$/'${ACCOUNT_ID}'/g;s/\$PROJECT_ID\$/'${PROJECT_ID}'/g' template-configuration.json
artifacts:
type: zip
files:
- target/ROOT/**/*
- .ebextensions/**/*
- 'template-export.yml'
- 'template-configuration.json'