【问题标题】:How to pass files from EC2 to S3 and S3 to EC2 using user data如何使用用户数据将文件从 EC2 传递到 S3 和 S3 到 EC2
【发布时间】:2013-04-10 09:32:24
【问题描述】:

以下代码是为使用用户数据创建新 AWS EC2 实例而创建的 shell 脚本文件。

在这段代码中,它创建新实例并执行 cd /home 并创建以 pravin 命名的目录。

但之后它既不会从 s3 下载文件,也不会上传到 S3。

该代码有什么问题(s3cmd 获取和放置代码)。

用于此目的的 AMI 预先配置了 AWS EC2 命令行 API 和 s3cmd。

str=$"#! /bin/bash"
str+=$"\ncd /home"
str+=$"\nmkdir pravin"
str+=$"\ns3cmd get inputFile.txt s3://bucketName/inputFile.txt"
str+=$\ns3cmd put resultFile.txt s3://bucketName/outputFile.txt"

echo "$str"|base64
ud=`echo -e "$str" |base64`
echo "$ud"

export JAVA_HOME=/usr
export EC2_HOME=/home/ec2-api-tools-1.6.7.1
export PATH=$PATH:$EC2_HOME/bin
export AWS_ACCESS_KEY=accesskey
export AWS_SECRET_KEY=secretkey
if [ "$3" = "us-east-1" ]
then
 ec2-run-instances ami-fa791231 -t t1.micro -g groupName -n 1 -k Key1 -d "$ud" --region $3 --instance-initiated-shutdown-behavior terminate
else
    echo "Not Valid region"
fi

【问题讨论】:

  • 我不会像你那样与社区分享密钥...:)
  • 您还应该使用 IAM 角色而不是传递访问和密钥(不仅仅是将它们发布到公共论坛)。见:aws.typepad.com/aws/2012/06/…
  • 我可以将 s3cmd 和 s3fs 命令作为用户数据传递给 EC2 实例吗?

标签: shell amazon-web-services amazon-s3 amazon-ec2 s3cmd


【解决方案1】:

您的“s3cmd get”命令有问题。你有向后的参数顺序。从“s3cmd --help”输出:

Put file into bucket
      s3cmd put FILE [FILE...] s3://BUCKET[/PREFIX]

Get file from bucket
      s3cmd get s3://BUCKET/OBJECT LOCAL_FILE

可以看到需要将get命令改成:

str+=$"\ns3cmd get s3://bucketName/inputFile.txt inputFile.txt"

请注意,s3:// URI 先出现,在文件名之前。那应该可以解决这个问题。您的代码似乎也缺少 put 命令的引号:

str+=$"\ns3cmd put resultFile.txt s3://bucketName/outputFile.txt"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-19
    • 2010-12-12
    • 2020-07-09
    • 2014-06-13
    • 2011-11-10
    • 1970-01-01
    • 2012-03-31
    相关资源
    最近更新 更多