AWS EC2インスタンスが起動するたびにコードを実行します。コードはAmazon S3からデータをプルダウンし、データを処理してS3にデータをコピーします。これを行うためのメイクファイルを作成しました。これは、インスタンスにログインしているときに呼び出すと問題なく動作します。私は/ect/rc.local
(このスクリプトは、インスタンスが起動するたびに実行される)にスクリプトを置いて、makefileを呼び出します。このスクリプトは、インスタンスの起動時に正常に実行されます。私が抱えている問題は、makefileが起動スクリプトから呼び出されたときに、データをs3にコピーしたりs3にコピーしたりしないということです。私はhereを読んでアクセスキーを設定するとWindowsサーバーでこの問題が解決されるが、これは私にとってはうまくいかない。ログファイルでは、出力は常にメイクファイルのコードの最初の行であるため、awsコマンドを呼び出すときにコードが停止するように見えます。以下は私のログファイルが言うことである:ここではAWS EC2インスタンス起動スクリプトでのAWSコマンドライン関数の使用
aws s3 sync s3:<s3 bucket to get data from> <location to save data to>
は私のメイクファイルからrelelvantコードです:ここでは
### Download all data
get_data:
aws s3 sync s3:<s3 bucket to get data from> <location to save data to>
### Copy data back to s3
copy_data_to_s3:
aws s3 sync <location of data to copy to s3> s3:<s3 bucket data is copied to>
は/etc/rc.localの中に私のスクリプトです:
#!/bin/bash
#
# rc.local
#
make -f <location of makefile>/Makefile > <location to save log file>/log.txt
exit 0
どんな助けもありがとう。
おかげでマットを使用しているもの、あなたがやりたい行うには、より安全な方法、私は今これを試してみて、あなたはそれがどのように動作するか知っているつもりです。 – Gabriel
まあ、相対的なセキュリティは、いくつかのことに依存します。インスタンスをインスタンスロールから削除することはできないため、インスタンスにログオンできるユーザーはすべて、インスタンスロール内で同じAWSリソース特権を持ちます。資格情報が安全な場所に書き込まれている場合、すべてのユーザーがAWS権限を活用できるわけではありません。オプション1は、ほとんどの状況では依然として優れていますが、信頼度の低い複数のユーザーがホスト上でシェルにアクセスする場合は、オプション2が望ましい場合があります。 –
私はオプション1を試みました。私は役割を作成し、AmazonS3FullAccessポリシーを添付しました。さらに、私はPolicy Simulatorに行き、getObjectとputObjectを実行し、両方が許可されていることを示しました。私は新しいインスタンスを作成し、その役割を付けました。しかし、それはまだ動作していません。ログファイルは同じ出力を持ち、データはインスタンスに保存されません。今私はオプション2を試してみる。 – Gabriel