しびら

技術ネタのメモとか。

EC2からS3のデータを取得

   

gpu_amazon_ec2_logo

 

今日はEC2からs3のデータを取得したいと思います。

wgetするだけだって?いやいや、それはファイルが公開されている場合だけですよね。

というわけでaws-cliを使って取得してみたいと思います。amazon linux AMIをしようしているばあいは初期から入っていますが、CentOSなどのAMIの場合はaws-cliを頑張って導入する必要があるみたいです。

コマンドを探してきて、さっそくローカルにファイルコピーを試してみたのですがcredientialが無いため上記のようなエラーとなりました。

s3の中身を参照可能なcredientialをインスタンスに定義すれば良いようです。ただし、定義するにはIAM Roleの設定が必要なようです。

awsメニューから「Identity & Access Management」を押下して、左ペインにある「Roles」を選択、「Create New Role」を押下します。ここから「S3からファイルを取得できる権限」を作成します。

Set Role Nameと、ルール名を入力する欄が出てきますので、今回は「s3access」としました。

次のSelect Role Type ですが、今回はEC2に対して付与する権限を作成するので Amazon EC2を選択します。

次の Attach Policy ですが、ファイルを読むだけなら「AmazonS3ReadOnlyAcess」のみで十分です。

最後にReview画面でチェックして、問題なければ「Create Role」を押下します。

以上でIAMの作成は完了です。

権限の付与方法ですが

  1. ec2にsshでアクセスして「aws configure」コマンドで付与する
  2. ec2の起動時にIAMを選択する欄で先ほど作成したIAMを設定する。

の2通りがあるようですが、aws configureについて詳細が書かれているサイトが少なかったこと、自動化のために本作業を実施しているため、後者の付与方法でやってみたいと思います。

EC2のインスタンス作成時にIAM Roleの設定欄があるので「s3access」を選択するだけです。

先ほどのコマンド、今度は動作しました。

ちなみに、S3の設定で一般公開する「Permissions Grantee: Everyone」などがあると思いますが、同じAWSアカウントであれば「Grantee: aws」だけで上記のコマンドでダウンロードできるようです。

 - AWS , , ,