автоматизировать загрузку клеевого скрипта

В настоящее время мы используем формирование облака для создания связующего задания (с помощью сборки кода и кода). Единственное, на чем мы застряли, - это как автоматизировать код, который используется для склейки.

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

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 но эти ответы на самом деле не дают решения или не позволяют понять поставленный вопрос.


person nojohnny101    schedule 16.01.2020    source источник


Ответы (1)


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

В настоящее время AWS Glue не обрабатывается, так как я еще не пробовал его ни в одном проекте. Но он должен легко расширяться для поддержки 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 и состоят из двух частей:

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

Код, который вам может потребоваться расширить, находится в xsh- 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, в единый интерфейс для конфигураций и обработчиков. Это упростит добавление новых обработчиков зависимостей в средство развертывания.

person alex    schedule 16.01.2020