Linux 如何将文件内容作为aws cli选项值提供

Linux 如何将文件内容作为aws cli选项值提供,linux,amazon-web-services,shell,aws-cli,aws-sftp,Linux,Amazon Web Services,Shell,Aws Cli,Aws Sftp,我正试图在我的Linux机器中借助AWS CLI创建一个SFTP用户 下面是我在bash脚本中传递的AWS CLI命令(我的ssh公钥在一个文件中,在变量的帮助下,我将其传递到AWS CLI选项部分) 下面是我在执行上述命令时遇到的错误: [developer@dev-lin demo]$ aws transfer create-user --user-name $customer_name --home-directory script-test/power-archive-ireland/$

我正试图在我的Linux机器中借助AWS CLI创建一个SFTP用户

下面是我在bash脚本中传递的AWS CLI命令(我的ssh公钥在一个文件中,在变量的帮助下,我将其传递到AWS CLI选项部分)

下面是我在执行上述命令时遇到的错误:

[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
错误



是的,对于最后一个bug,您应该将其作为对象列表提供:

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

您可能需要将“Key”和“Value”放在引号中,甚至可能需要尝试Key:Value对(即{“Product”:“demo”}),但这应该是通用语法。

是的,对于最后一个bug,您应该将其作为对象列表提供:

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

您可能需要将“Key”和“Value”放在引号中,甚至可能需要尝试Key:Value对(即{“Product”:“demo”}),但这应该是通用语法。

下面是最后一个工作CLI命令:

更改

  • 新增角色ARN(感谢@user1394的建议)

  • 通过放置/before--home directory选项(错误的AWS文档()及其过期的RegEx
    ^$|/.*
    )解决了最大的问题

  • 将损坏的CLI转换为基于JSON的CLI,以修复最后的错误(并非所有标记都能在旧命令中附加)


  • 下面是最后一个工作的CLI命令:

    更改

  • 新增角色ARN(感谢@user1394的建议)

  • 通过放置/before--home directory选项(错误的AWS文档()及其过期的RegEx
    ^$|/.*
    )解决了最大的问题

  • 将损坏的CLI转换为基于JSON的CLI,以修复最后的错误(并非所有标记都能在旧命令中附加)


  • 也许删除主目录末尾的尾随斜杠?另外,我相信您希望将ARN传递给--role?另一种可能是--tags的格式作为一个列表(可能将它们从引号中去掉,弄乱它)。调试这类事情的一种简单方法是将“echo”放在前面,这样它只需打印命令,而不是运行命令。然后,您可以验证是否正确引用了所有数据。由于错误消息引用的数据不在您的命令中,它可能来自$variables。@user1394我已尝试从主目录中删除尾随/但仍然存在相同的问题调用CreateUser操作时发生错误(ValidationException):检测到1个验证错误:“homeDirectory”中的值“demo.ui/demo test/ui dl power archive irland/customer”未能满足约束:成员必须满足正则表达式模式:^$|/.*`感谢更正角色ARN建议,我已经更新了ARNRole@JohnRotenstein谢谢你的建议,我已经试着尽可能多地中断,但无法得到错误的原因,也更新了错误堆栈,看看你是否能找到什么。也许删除主目录末尾的尾随斜杠?另外,我相信您希望将ARN传递给--role?另一种可能是--tags的格式作为一个列表(可能将它们从引号中去掉,弄乱它)。调试这类事情的一种简单方法是将“echo”放在前面,这样它只需打印命令,而不是运行命令。然后,您可以验证是否正确引用了所有数据。由于错误消息引用的数据不在您的命令中,它可能来自$variables。@user1394我已尝试从主目录中删除尾随/但仍然存在相同的问题调用CreateUser操作时发生错误(ValidationException):检测到1个验证错误:“homeDirectory”中的值“demo.ui/demo test/ui dl power archive irland/customer”未能满足约束:成员必须满足正则表达式模式:^$|/.*`感谢更正角色ARN建议,我已经更新了ARNRole@JohnRotenstein感谢您的建议,我已尝试尽可能多地中断,但无法找到错误的原因,还更新了错误堆栈,请查看是否可以找到什么。不幸的是,这会引发“无效JSON”错误,
    错误解析参数“--tags”:无效JSON:[{Key=Product,
    我尝试了多种组合,但效果并不理想……最后我将完整的命令转换为JSON Ref:
    $aws ec2 create tags\--resources I-1286157c\--tags'[{“Key”:“My1stTag”,“Value”:“Value1”},{“Key”:“My2ndTag Value”:“Value2”},{“Key”:“My3rdTag Value”:“Value3”}]“
    Yes!!!我在这里发布了一个答案,可能会对某人有所帮助;)谢谢你的帮助:)我在我的答案中确实提到过……我说要把“Key”和“Value”放在引号中,这正是最终的结果。无论如何,很高兴你能让它工作!不幸的是,这会抛出“无效的JSON”错误,
    错误解析参数'--tags':无效的JSON:[{Key=Product,
    我尝试了多种组合,但效果不好…最后我将完整的命令放入JSON Ref:
    $aws ec2 create tags\--resources I-1286157c\--tags'[{“Key”:“My1stTag”、“Value”:“Value1”},{“Key”:“My2ndTag Value”:“Value2”},{“Key”:“My3rdTag”,“Value”:“Value3”}]'
    是的!!!我在这里发布了一个答案,可能会帮助别人;)谢谢你的帮助:)我在我的回答中提到过……我说要把“Key”和“Value”放在引号中,这正是成功的原因。无论如何,很高兴你让它成功了!
    
    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: ^$|/.*
    
    
    --tags [{Key="Product", Value="demo"}, {Key="Environment", Value="dev"}, {Key="Contact", Value="dev.user@domain.com"}, {Key="Service", Value="sftp"
    
    #!/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"}
            ]'