автоматизировать загрузку скриптового клея - PullRequest
0 голосов
/ 16 января 2020

В настоящее время мы используем формирование облака для создания склеенной работы (через codebuild и codepipeline). Одна вещь, на которой мы застряли, это то, как автоматизировать код, который входит в склеиваемое задание.

Наш текущий соответствующий фрагмент шаблона облачной информации выглядит так:

MyJob:
    Type: AWS::Glue::Job
    Properties:
      Command:
        Name: glueetl
        ScriptLocation: "s3://aws-glue-scripts//your-script-file.py"
      DefaultArguments:
        "--job-bookmark-option": "job-bookmark-enable"
      ExecutionProperty:
        MaxConcurrentRuns: 2
      MaxRetries: 0
      Name: cf-job1
      Role: !Ref MyJobRole

Проблема в том, что это "ScriptLocation". Похоже, это должно быть место S3. Как мы можем автоматизировать загрузку этого. Код находится в файле .py в нашем репозитории Git, и я предполагаю, что он загружен в репозиторий артефактов, как и процесс кодового построения, но как получить к нему доступ?

Хотелось бы услышать, как другие делают это. Спасибо!

РЕДАКТИРОВАТЬ: Мне удалось найти аналогичное сообщение о переполнении стека: AWS Glue automati c создание рабочих мест , но ответы на самом деле не дают решения или понять поставленный вопрос.

1 Ответ

0 голосов
/ 16 января 2020

Я написал инструмент для обработки загрузки стековых зависимостей, включая вложенные шаблоны CloudFormation и не встроенные лямбда-функции.

В настоящее время AWS Клей не обрабатывался, так как я еще не пробовал в любом проекте. Но это должно быть легко расширить для поддержки Glue.

Зависимости были определены в отдельном файле конфигурации, и часть кода в инструменте отвечает за конфигурацию. Вот пример конфигурации:

Вложенные шаблоны CloudFormation:

# DEPENDS=( <ParameterName>=<NestedTemplate> )
#
# Required: Yes if has nested template, otherwise No
# Default: None
# Syntax:
#   <ParameterName>: The name of template parameter that is referred at the
#                    value of nested template property `TemplateURL`.
#   <NestedTemplate>: A local path or a S3 URL starting with `s3://` or
#                     `https://` pointing to the nested template.
#                     The nested templates at local is going to be uploaded
#                     to S3 Bucket automatically during the deployment.
# Description:
#   Double quote the pairs which contain whitespaces or special characters.
#   Use `#` to comment out.
# ---
# Example:
#   DEPENDS=(
#       NestedTemplateFooURL=/path/to/nested/foo/stack.json
#       NestedTemplateBarURL=/path/to/nested/bar/stack.json
#   )

Лямбда-функции:

# LAMBDA=( <S3BucketParameterName>:<S3KeyParameterName>=<LambdaFunction> )
#
# Required: Yes if has None-inline Lambda Function, otherwise No
# Default: None
# Syntax:
#   <S3BucketParameterName>: The name of template parameter that is referred
#                            at the value of Lambda property `Code.S3Bucket`.
#   <S3KeyParameterName>: The name of template parameter that is referred
#                         at the value of Lambda property `Code.S3Key`.
#   <LambdaFunction>: A local path or a S3 URL starting with `s3://` pointing
#                     to the Lambda Function.
#                     The Lambda Functions at local is going to be zipped and
#                     uploaded to S3 Bucket automatically during the deployment.
# Description:
#   Double quote the pairs which contain whitespaces or special characters.
#   Use `#` to comment out.
# ---
# Example:
#   DEPENDS=(
#       S3BucketForLambdaFoo:S3KeyForLambdaFoo=/path/to/LambdaFoo.py
#       S3BucketForLambdaBar:S3KeyForLambdaBar=s3://mybucket/LambdaBar.py
#   )

Инструменты написаны на bash и состоят из 2 частей:

  1. x sh: он работает как bash каркас библиотеки.
  2. x sh -lib / aws: это библиотека x sh.

Код, который вам может понадобиться развернуть, находится в x sh -lib / aws / functions / cfn / deploy. sh.

Пример команды развертывания выглядит следующим образом:

$ xsh aws/cfn/deploy -C /path/to/your/template-and-config-dir -t stack.json -c sample.conf

Я собираюсь абстрагировать зависимости, такие как шаблон CloudFormation, функции Lambda и Glue, в единый интерфейс. как для конфигов, так и для обработчиков. Это облегчит добавление новых обработчиков зависимостей в развертыватель.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...