2

以下のコードは、ユーザー データを使用して新しい AWS EC2 インスタンスを作成するために作成されるシェル スクリプト ファイルです。

このコードでは、新しいインスタンスを作成して cd /home を実行し、pravin という名前のディレクトリを作成します。

しかし、その後、s3 からファイルをダウンロードすることも、S3 にアップロードすることもありません。

そのコード (s3cmd get および put コード) の何が問題になっていますか。

これに使用される 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
4

1 に答える 1

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"
于 2013-10-02T13:21:25.073 に答える