Итак, я написал набор сценариев развертывания, которые выполняются в CodeBuild и используют Boto3 для развертывания некоторых закрепленных приложений в ECS.Проблема в том, что я хочу развернуть нашу отдельную производственную учетную запись.
Если я запускаю проект CodeBuild из учетной записи dev, но хочу создать ресурсы в рабочей учетной записи, я понимаю, что мне нужно настроить роль в целевой учетной записи, разрешить роли codebuild принять ее, затем вызовите:
sts_client.assume_role(
RoleArn=arn_of_a_role_I_set_up,
RoleSessionName=some_name
)
Возвращает ключ доступа, секретный ключ и токен сеанса.Это работает и возвращает то, что я ожидал.
Тогда я хочу просто присвоить эти значения этим переменным среды: AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN
Это потому, что согласно документации здесь:http://boto3.readthedocs.io/en/latest/guide/configuration.html Boto3 следует отложить, если вы не устанавливаете эти переменные явно в методах клиента или сеанса.
Однако, когда я делаю это, ресурсы все равно создаются в той же учетной записи разработчика.
Кроме того, если я вызову printenv
в первой части моего buildspec.yml
до того, как мои скрипты попытаются установить переменные окружения, эти переменные ключа / секрета / токена AWS вообще не будут присутствовать.
Итак, когда он запускается в CodeBuild, откуда Boto3 получает свои учетные данные?Будет ли решение просто передать ключ / секрет / токен каждому boto3.client()
вызову, чтобы быть абсолютно уверенным?