как предоставить содержимое файла в качестве значения опции aws cli - PullRequest
1 голос
/ 22 марта 2020

Я пытаюсь создать пользователя SFTP с помощью AWS CLI в моем Linux Box.

Ниже приведена команда AWS CLI, которую я передаю в моем bash скрипте (мой ключ s sh publi c находится в файле, с помощью переменной, которую я передаю в секцию опций AWS CLI)

customer_name_pub_value=$(cat /home/developer/naman/dir/$customer_name.pub)

aws transfer create-user --user-name $customer_name --home-directory script-test/power-archive-ireland/$customer_name/ --server-id s-aaabbbccc --ssh-public-key-body $customer_name_pub_value --tags 'Key=Product,Value="demo",Key=Environment,Value=dev,Key=Contact,Value="dev.user@domain.com",Key=Service,Value="sftp"' --role customer-sftp-role

Ниже приведена ошибка, с которой я сталкиваюсь при выполнении вышеуказанных команд:

[developer@dev-lin demo]$ aws transfer create-user --user-name $customer_name --home-directory script-test/power-archive-ireland/$customer_name/ --server-id s-aaabbbccc --ssh-public-key-body $customer_name_pub_value --tags 'Key=Product,Value="demo",Key=Environment,Value=dev,Key=Contact,Value="dev.user@domain.com",Key=Service,Value="sftp"' --role customer-sftp-role
usage: aws [options] <command> <subcommand> [<subcommand> ...] [parameters]
To see help text, you can run:

  aws help
  aws <command> help
  aws <command> <subcommand> help

Unknown options: developer@dev-lin.domain.com, XXXXXXXXXXAB3NzaC1yc2EAAAADAQABAAABAQCm2hI3Y33K1GVbdQV0lfkm/klZRJS7Kcz8+53e/BoIbVMFH0jqm1aejELDFgPnN7HvIZ/csYGzF/ssTx5lXVaHQh/qkYwfqQBg8WvXVB0Jmogj1hr6z5M8Qy/3oCx0fSmh6e/Ekfk8vHhiHQlGZV3o8a2AW5SkP8IH/OgT6Bq+SMuB+xtSciVBZqSLI0OgYtOZ0MyxBzfLau1Tyegu5lVFevZDVjecnIaS4l+v2VIQ/OgaZ40oAI3NuRZ2EdnLqEqFyLjasx4kcuwNzD5oaXAU6T9UsqKN2rVLMKrXXXXXXXXXXX

Я что-то пропустил bash синтаксис при передаче значения параметра!

ОБНОВЛЕНИЕ 30 марта-2020 согласно предложениям ниже комментарии, я добавил AWS Роль ARN в команде, теперь столкнулся с проблемой, отличной от предыдущей

КОД:


customer_name='demo'
customer_name_pub_value=$(cat /home/developer/naman/dir/$customer_name.pub)


aws transfer create-user --user-name $customer_name --home-directory script-test/power-archive-ireland/$customer_name/ --server-id s-aaabbbccc --ssh-public-key-body "$customer_name_pub_value" --tags 'Key=Product,Value="demo",Key=Environment,Value=dev,Key=Contact,Value="dev.user@domain.com",Key=Service,Value="sftp"' --role "arn:aws:iam::8XXXXXXXXX2:role/customer-sftp-role"

ОШИБКА



An error occurred (ValidationException) when calling the CreateUser operation: 1 validation error detected: Value 'script-test/power-archive-ireland/demo/' at 'homeDirectory' failed to satisfy constraint: Member must satisfy regular expression pattern: ^$|/.*

Ответы [ 2 ]

0 голосов
/ 31 марта 2020

Ниже приведена последняя рабочая команда CLI:

Изменения

  1. Добавлен ROLE ARN (Спасибо @ user1394 за предложение)

  2. Самая большая проблема решена путем размещения параметра / before --home-directory (неверная документация AWS (https://docs.aws.amazon.com/cli/latest/reference/transfer/create-user.html) и их устаревший RegEx ^$|/.*)

  3. Преобразуйте сломанный CLI в CLI на основе JSON, чтобы исправить последнюю ошибку (не все теги были в состоянии прикрепить в старой команде)

#!/bin/bash

customer_name='demo'
customer_name_pub_value=$(cat /home/developer/naman/dir/$customer_name.pub)

aws transfer create-user \
        --user-name $customer_name \
        --server-id s-aaabbbccc \
        --role "arn:aws:iam::8XXXXXXXXX2:role/customer-sftp-role" \
        --ssh-public-key-body "$customer_name_pub_value" \
        --home-directory /script-test/power-archive-ireland/$customer_name \
        --tags '[
                {"Key": "Product", "Value": "demo"},
                {"Key": "Environment", "Value": "dev"},
                {"Key": "Contact", "Value": "dev.user@domain.com"},
                {"Key": "Service", "Value": "sftp"}
        ]'
0 голосов
/ 31 марта 2020

Да, для последней ошибки, вы должны представить ее в виде списка объектов:

--tags [{Key="Product", Value="demo"}, {Key="Environment", Value="dev"}, {Key="Contact", Value="dev.user@domain.com"}, {Key="Service", Value="sftp"

Возможно, вам понадобится поставить «Ключ» и «Значение» в кавычках или даже, возможно, придется попробовать ключ : пары значений (т.е. {"Product": "demo"}), но это должен быть общий синтаксис.

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